Simon Forman
efeaa7b8e1
A little helper function to see compiled expressions.
...
Example from ordered binary tree notebook:
?- sjc(tree_add_Ee, `pop swap rolldown rrest ccons`).
func(tree_add_Ee, [_, [_, _|C], A, B|D], [[A, B|C]|D]).
true .
2019-07-16 09:46:55 -07:00
Simon Forman
6d92b8801f
Clear out CLP(FD) functions.
...
I like them but then you are constrained (pun intended) to only using integers. I'll probably bring them back at some point, either as an alternate implementation or their own commands.
2019-07-16 08:59:24 -07:00
Simon Forman
731b49973c
Opps! Here's the implementation of bool.
2019-07-16 08:42:45 -07:00
Simon Forman
c4c6ece6d2
Add bool function to mimic Python semantics.
2019-07-16 08:41:28 -07:00
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
2baf3b89ce
Minor cleanup of defs.
2019-07-15 20:55:11 -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
67f042cc57
See https://www.metalevel.at/acomip/
2019-05-06 12:47:30 -07:00
Simon Forman
0da935ed94
Minor cleanup.
2019-05-04 07:53:02 -07:00
Simon Forman
6c94313061
Change name from alpha to tmi.
2019-05-04 06:57:14 -07:00
Simon Forman
8ca86d3d35
A Tracing Meta-Interpreter for Thun
2019-05-03 15:21:29 -07:00
Simon Forman
a95c3cec69
Some docs, and a thing to print out the dictionary after compilation.
2019-05-03 15:21:06 -07:00
Simon Forman
d083c3b6e6
Minor cleanup and comments.
2019-05-02 20:39:30 -07:00
Simon Forman
f5fb01bf69
linker//1 works on ASM not IR. (rename variable)
2019-05-02 12:41:23 -07:00
Simon Forman
12fadfb573
Add some comments, minor rearrangement.
2019-05-02 12:33:52 -07:00
Simon Forman
ece12bac00
Make get//1 handle lists of pairs which it passes off to get//2.
...
(I could remove more punctuation by making the (key, value) pairs implicit.)
Move compile_program//2 to just under do//0.
2019-05-02 10:18:58 -07:00
Simon Forman
4e70fdd67b
Minor cleanup.
...
Remove the pass0//2 DCG rule and unfold it in compile_program//2 rule. Move init//0 to be with the rest of the state DCG code.
2019-05-02 08:38:15 -07:00
Simon Forman
fe795704a6
Minor cleanup.
...
It turns out that the binary_number relation is used in such a way that it needs to be able to backtrack to preprend leading zeros to the list of bits it constructs to automatically build bitfields of a given width (with the collect//2 DCG.)
2019-05-01 21:55:46 -07:00
Simon Forman
d488db6abd
binary_number/2 is more efficient if you strip off 0's first.
2019-04-28 08:16:38 -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