wam_common_lisp
-
* !0th rule: Any sufficiently complicated Lisp or Scheme program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of ISO Prolog.
* Translating Lisp to Prolog gives Prolog
* Metaobject Protocol
* Common Lisp Object system
* Instant Prolog Ecosystem/Development Libraries (days, not years)
* Several decades of Common Lisp libraries may be translated to useable Prolog development libraries.
* Maintain your code from original Lisp or translated Prolog (though wont translate back)
* Settings to try to emulate handwritten code ([Examples](https://github.com/TeamSPoon/wam_common_lisp/tree/master/prolog/wam_cl/README.md))
* Forms (at REPL) are transpiled to Prolog, Compiled to WAM, Call/Executed.
* *only* 2-3 slower than SBCL
* Gives to prolog more than we can list!
* Simular to how CLISP is indespensable sometimes.
* _a_ Common Lisp used for sanity testing
* Makes debugging easy for Prolog and Lisp experts
* Picks up freebies ..
whatever the host Prolog system offers such as
* Garbage Collection
* Memoization/Coinduction
* Dynamic Extent
* Exception Handling
* Unwind-Protect/Cleanup
* Native Locatives
* Two-way calling and embedding from C/C++/Python/C#/Mono/Scala/Java/Haskell/LUA/Perl
* Makes Plaform Executables and.
DLL/So files ([Quick Start](https://github.com/TeamSPoon/wam_common_lisp/blob/master/README.md#makeanexecutableandrunit)) *
* (too enormous to go into)
* Developed/Installed as a SWI-Prolog pack
* [http://www.swi-prolog.org/pack/list?p=wam_common_lisp](http://www.swi-prolog.org/pack/list?p=wam_common_lisp) ``
## Incompleteness
must fix for release worthiness
* Bugs Running/Translating:
* Fully working LOOP (must-fix)
* SWANK (must-fix)
* PAIP Book code (bug in-progress)
* [daydreamer](https://github.com/eriktmueller/daydreamer) (in-progress)
* [KNOWLEDGE MACHINE](http://www.cs.utexas.edu/users/mfkb/RKF/km.html)
* Quicklisp (bug must-fix)
* ASDF-INSTALL (bug must-fix)
* Add missing impls
* delete-package (must-fix)
* (more to be Listed) (not here)
* Tests ([in-progress](https://github.com/TeamSPoon/wam_common_lisp/tree/master/t))
* Must pass 70% or above CL-ANSI tests (bug in-progress)
* Ensure passes _all_ CL-ANSI tests (with --ansi) (feature always in-prgress)
* Hardest part is making sure it throws/complains about all the things it needs to
* need more tests!
* FFI (bug in-progress)
* Use https://github.com/JanWielemaker/ffi ?
* Using SWICLI as FFI (SWICLI's FFI itself still needs work but works for YAP as well)
## TODO _Features_
* Document prolog source-code this pack!
(indeed, a feature!)
* Keep later `copy_term/2's` cheap, (feature in-progress)
* Experment with way to passes entire term object object references as atoms (nb_current/2 allows access to the object's property map)
* [(FAKE TODO![Build Status](https://travis-ci.org/rla/simple-template.svg)](https://rlaanemets.com/post/show/adding-travis-to-swi-prolog-packs))
* Untangle the `pack` install deps
* Moving predicates to logicmoo_utils from logicmoo_base (Still in progress)
* DEpackifed version for Portability?
* YAP-Prolog (in-progress) (which Lisp to Prolog benchmarking shows about 5x speedup)
* TODO: Sicstus, B-Prolog, Bin-Prolog, EcLiPSe Prolog and Jekejeke
* Low-Priority: PrologCafe, Yield-Prolog