Because some people have privately asked my questions offline, I'll reply inline (to my own mail) and correct some of the confusing misstatements I had made.
On Monday, November 13, 2017 at 6:17:39 AM UTC-8, Gavino himself wrote:
> > About this Lisp:
> >
> > * Translates Lisp source files into Prolog source files. ( compilation is done to Translated source)
> >
> > * At the REPL, forms are converted from Lisp to Prolog then call/1d
> > Being written as a SWI-Prolog "pack"
> >
> > * Continue to ensure can run in YAP (which Lisp to Prolog benchmarking shows about 4x speedup)
> >
> > * One small code so far seems to run much faster than ECL, ABCL, CLISP but about ¼ the speed of SBCL
> >
> > * Picks up freebies .. whatever the host prolog system offers such as
> > Makes Executables and .So files
> > **Garbage Collection
> > **Memoization
> > **Embedding (from C/C++/Python/C#/Mono/Java) is done via host Prolog system
> > FFI
> >
> > * Gives back OO to Prolog programmers .. to keep later copy_term's cheap, it passes entire object references as atoms (nb_current/2 allows access to the object's property details stored in a Map)
> > ….
> >
> >
> >
> > Roadmap Items
> > *Expect to pass most all CL-ANSI tests
> > *Using SWICLI as FFI (SWICLI itself still needs work)
> > *ASDF
> > *Quicklisp
> > ….
> >
> > I've only spent a week on it ... I hope to recruit people that seem to know both Lisp and Prolog languages.
> >
> > The main purpose is this impl is it to run prolog-in-lisp 1000x faster than the fastest lisps
prolog-in-lisp(s) are *not* 1000x slower than prolog-in-c but certainly not as fast (I apologize, I should have said 5-10x time slower). The problem arises for Prolog programs like: English to CommonLogic converters (used in Natural Language Understanding), large-scale ontology checkers, KL-ONE language interpreters, and PDDL planners (Planning Domain Definition Language). Such programs perform fine when written entirely in Lisp or Prolog (neither better or worse). The problem is that they more often perform unacceptably poor when written in Prolog and then ran on a prolog-in-lisp interpreter.
This leads to another class of programs
> > and be at least in the top 3 impls
> > for speed … Also the type of lisp programs I like to run (SWALE, DAYDREAMER) are buggy partial impl of Greenspun's rule as applied to Prolog (Instead of Lisp)
I should clarify, SWALE and DAYDREAMER are *not* buggy implementations of Prolog! they are their own things. But there are certain routines they contain that make extensive use of unification and backtracking. These routines (for decades now) are examples where the data representations and processing their capabilities (well mostly domain sizes) have been scaled back due to virtually creating the same penalties of the "prolog-in-lisp" scenario. This scenario is similar to taking an assembly language program that twiddles bitmasks and using bignum math to emulate the registers of the Intel-4930k CPU. *You might just see some performance differences? We will be very lucky if 4x-10x was the only speed difference between running that same assembly code program directly on the processor or in our program.
> >
> > - Douglas Miles
>
> why tho?
First, the nonpractical reasons:
(to answer several questions)
Is it really super easy to implement _anything_ on Prolog? Some junior Prolog programmers would be surprised by Prolog doing any OO let alone MOP. After all, Prolog is very very simple when it comes to its types.
If it can be done, in the end, will it look as ugly as trying to implement and maintain a CommonLisp in a programing language like LOGO? Everyone who graduates with a CS degree was tasked with several disarming hour just trying to do something as simple as adding up a list of numbers in Prolog. In moments of horror they think how simple it would have been it has it been any other language than Prolog. Most come away with the misunderstanding that Prolog is only capable of certain pure tasks. And too awkward for everything else. Much like how LOGO is the best language for mornings you've woken desperately needing to draw a box inside a circle. Not so much for those mornings, you need to implement an HTTP client.
Other myths "prolog doesn't scale".. least will be busted that whenever a lisp program (that scales according to whatever "scale" means) is running on a lisp-in-prolog (like WAM-CL)
Practical reasons:
Several decades of Common Lisp development libraries can, within a matter of hours, be translated to useable Prolog development libraries.
Also, DAYDREAMER, Knowledge Machine, SWALE, and CYC might perform differently and be more practical at non-toy domains.