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