guile-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Milestone in guile iso prolog reached


From: Stefan Israelsson Tampe
Subject: Milestone in guile iso prolog reached
Date: Sat, 22 Feb 2014 19:49:30 +0100

Hi,

I'm glad to announce that I've finished coding the interface to iso-prolog. It sports
99.99% of the iso prolog interface and in some places in order to interop with kanren 
and scheme a step away from the standard.

* There is only one name space for predicates and _expression_ funciton e.g. definining log
as a new predicate will mean that "X is log(2)" will fail.

* Open closed functions cannot be gotten from ageneral primitive without an actual handle

* f/1 f/2 etc is moot, we do not dispatch on arity in order to support guile function mechanism with optional arguments etc.

* I did not implement seekable streams, I'll skip that to later


Features ontop of this
* Compiles to bytecode
* possibility to use lambdas and normal scheme closures in prolog code
  But the implementation is rough e.g.
  - tabling is not working with closures
  - writing a term and then read it will not work
  - asserta and assertz does not miz well with closures

* guile-iso-prolog mix well with the module system

* writing out terms and reading in terms works with the module system
  (this is actually dangerous right now using @@) 

* possibility to reach out to scheme world anywhere in code.
---------------------------------------------------------------------------------------
If you want to be part of the development of guile-prolog do not hessitate to
contact me om the mailing list.

The remaining issues until a relese are
1. Make it easier to compile guile-log
2. Fix bug in current vhash implementation of the assoc variable binding list
3. Introduce a framework to work with dynamic features we will develop constructs so 
   that one do automatic cleanup in many cases and much more e.g. it will be possible
   to say (with-dynamic-values my_dynamic-function goal), and if code backtracks or succeeds
   the dynamic variable will be reseted to the initial value. There will be a general 
   framework that can handle every functional datastructure. Also for efficiency a mark feature
   and a truncate feature will be added if needed to implement backtracking of functional
   datastructures. The logic is that we will allow the datastructure to mutate if it has not been
   marked. The logic is theoretically sound if you keep on using the framework, like iso-prolog.
4. Open up a few guile-log features for iso-prolog like delimeted continuations and
  interleaving
5. Document the new additions
5. Release a new version of guile-log + guile-prolog
  
Regards
Stefan 

reply via email to

[Prev in Thread] Current Thread [Next in Thread]