Commit Graph

16 Commits

Author SHA1 Message Date
Simon Forman 06b81914eb Change comparison ops to not use CLP(FD). 2019-07-15 23:02:08 -07:00
Simon Forman 84584a949c Implement genrec combinator. 2019-07-15 20:55:41 -07:00
Simon Forman 9ebc64541a Move all definitions to defs.txt. 2019-07-15 16:11:49 -07:00
Simon Forman ee395e91f1 Retract previous definitions before asserting new ones. 2019-07-15 16:01:59 -07:00
Simon Forman 4fefc04da3 Load definitions from a file.
This paves the way to regularize the defs between Python and Prolog (and and future other) implementations.
2019-07-15 15:53:07 -07:00
Simon Forman 087c141c72 Parse joy definitions from text.
This way a definitions file can be shared between Python Joy and Prolog Joy.
2019-07-15 12:53:48 -07:00
Simon Forman 166355dccf New combinator infrst == infra first
Three uses means it's time for a refactor.
2019-07-15 12:28:01 -07:00
Simon Forman 4ea1a5527e nullary combinator as definition.
That eliminates all the recursive calls to thun/3 (outside of thun itself, which is tail recursive.)  That means that this Joy interpreter is now fully CPS.

All state is contained in the stack and expression, nothing is hidden in the Prolog "call stack".
2019-07-15 11:20:13 -07:00
Simon Forman d3313ce4a7 Infra as definition. 2019-07-14 23:02:10 -07:00
Simon Forman 9f1e75313b Reimplement app1 and app2 as definitions.
This eliminates three recursive calls to thun/3.
2019-07-14 22:48:18 -07:00
Simon Forman f227cf0a57 Got enough definitions, sort them. 2019-07-14 21:58:20 -07:00
Simon Forman a90568e208 Switch to symbolic math (from CLP(FD).)
A wee bit of error reporting of unknown terms.

New functions: pm plus-or-minus and neg negate; new combinator dupdip.
2019-07-14 21:14:50 -07:00
Simon Forman 67112de952 Bring in the (sort of) compiler. 2019-04-28 07:59:47 -07:00
Simon Forman 36fa5ee151 Very minor cleanup. 2019-04-26 22:13:45 -07:00
Simon Forman 58e46a9809 Treat defs in thun/3 relation.
Allow for "compilation" of new func/3 rules.

Add comment of crude grammar for Joy syntax.

Minor rearrangements.

show_joy_compile uses portray_clause/1.
2019-04-26 21:58:15 -07:00
Simon Forman e573d7a3dc The Prolog version of Joy. 2018-08-24 16:52:00 -07:00