Commit Graph

1235 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 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 0359cd64c7 Very minor docs change. 2019-07-15 15:50:22 -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 e0d8910242 Docs on Start Up Sequence 2019-05-07 23:23:53 -07:00
Simon Forman 21b69ea260 Stop hg ignoring the build dir.
I want to include the HTML output of sphinx so you can view it without having to install sphinx.
2019-05-07 17:45:39 -07:00
Simon Forman 4f5caf4ab3 More docs... 2019-05-07 13:49:27 -07:00
Simon Forman 13515b071b A bit more on the docs. 2019-05-07 10:23:43 -07:00
Simon Forman 028ecc0287 Move VUI package/module graph. 2019-05-07 10:00:52 -07:00
Simon Forman edda5ed04c screenshot 2019-05-06 23:06:36 -07:00
Simon Forman 663ddab7a7 A start on docs for VUI.
It's hella crude yet.
2019-05-06 23:05:50 -07:00
Simon Forman 3b09f9c356 Welcome to the Sphinx 1.8.5 quickstart utility. 2019-05-06 19:43:36 -07:00
Simon Forman 5dd13ba8c6 Rebuilt MANIFEST file. 2019-05-06 19:08:48 -07:00
Simon Forman f236be510a Use ~/.thun instead of ~/.joypy as default JOY_HOME.
And some copyright notices I missed.
2019-05-06 13:54:55 -07:00
Simon Forman b3a79df9a9 Well, that seems to work.
python -m joy.vui

With PyGame installed that starts the "VUI" on my system.  Neat.

The initial joy home (~/.joypy) is not quite compatible with the one set up by the GUI code.  One simple way to fix that would be to e,g, make this use ~/.thun instead.
2019-05-06 13:32:08 -07:00
Simon Forman bae676dd42 Update initial joy home dir contents BLOB. 2019-05-06 13:28:44 -07:00
Simon Forman 9292d00534 Update imports, copyright notices. 2019-05-06 13:26:07 -07:00
Simon Forman d3b413493f Some images generated by pyreverse or whatever. 2019-05-06 13:09:45 -07:00
Simon Forman d4fdde50f9 Initial bring over of VUI code. (Won't work yet.) 2019-05-06 13:07:01 -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 b27adb7e1c Remove some trailing blankspace. 2018-11-28 13:00:03 -08:00
Simon Forman 343812dac6 I just want to publish this right quick. 2018-08-24 17:05:42 -07:00
Simon Forman e573d7a3dc The Prolog version of Joy. 2018-08-24 16:52:00 -07:00
Simon Forman 3b0b7659b3 A bunch of docs.
Things have kind of run away with me.  I've been working in Prolog for
the last month or so.  I'm not yet sure how to bring it together with the
Python code.
2018-08-24 16:48:15 -07:00
Simon Forman 3e6a49ac27 The version of Python with Anaconda is lightly newer. 2018-08-24 16:46:18 -07:00
Simon Forman c88e00ecd0 Add binary functions. 2018-08-02 14:22:42 -07:00