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
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
Simon Forman
dae5126bfc
In progress..
2018-08-01 12:26:50 -07:00
Simon Forman
5974c516d1
Working on compiler.
...
I have a simple dataflow thingy for some Yin and Yang functions.
2018-08-01 10:59:07 -07:00
Simon Forman
f2425ae1ae
Minor UI bugs.
...
I should nail this down better. Command selections like ' []' were
failing to evaluate.
2018-07-22 11:53:02 -07:00
Simon Forman
79a653c08b
Oh python, oh unicode.
2018-07-22 11:51:47 -07:00
Simon Forman
4ed8422258
Load JOY_HOME/definitions.txt
...
You still can't edit other text files from within the UI, but at least
now you have a place to persist your own definitions over restarts.
I thought about having a [definitions] section in the config INI file,
but for some reason I prefer a separate definitions.txt file. I dunno.
Might change it in future.
2018-07-22 11:50:34 -07:00
Simon Forman
17b9fba65e
TEXT_BINDINGS stay in textwidget.py.
2018-07-22 10:14:45 -07:00
Simon Forman
f96362a904
Rework the default JOY_HOME contents.
2018-07-21 20:19:38 -07:00
Simon Forman
33a952ff71
Config file and CLI arg parser.
2018-07-21 17:56:53 -07:00
Simon Forman
ca06c626e1
Loop and while combinators.
2018-07-20 12:33:06 -07:00
Simon Forman
b89754a30b
Futzing with types.
2018-07-19 15:37:35 -07:00
Simon Forman
008b74aef8
Getting back to parity after jumble.
...
Polytypes module folded into types module, with all the actual type
information done when you load the library module. Some definitions can
be inferred from their body expression, others need to be
CombinatorJoyType wrapped. Still to do: loop.
2018-07-19 15:18:42 -07:00
Simon Forman
dea6cbc8c2
Working to get types right.
2018-07-19 12:38:19 -07:00
Simon Forman
6576e1a431
Fix TextJoyType inheritance.
2018-07-18 17:47:19 -07:00
Simon Forman
49941f9a33
Log types at startup.
2018-07-18 17:06:51 -07:00
Simon Forman
1e8c196c5b
Add some logging.
2018-07-18 16:14:32 -07:00
Simon Forman
3c27fab071
Cache the results of type checking.
2018-07-18 16:13:57 -07:00
Simon Forman
8ad4ab791b
Removing polytypes; some pylint hints.
2018-07-18 14:55:39 -07:00
Simon Forman
7607ca7650
Definitions infer stack effects.
...
At start-up defs that DON'T type check are permitted (so you can use e.g.
loop, map, etc.) in the definitions "source", but then the user-facing
inscribe command only allows you to define new commands that DO
type-check. The ideal solution here is to get inference working for the
loopy words. (In the meantime you can select and execute their
definition text directly. That's not (yet!) type-checked.)
2018-07-17 20:52:57 -07:00
Simon Forman
c9f405fbe9
Nearly there maybe, maybe not.
2018-07-17 20:09:17 -07:00
Simon Forman
73d19b1f3d
Moving right along.
...
A little clunky but it seems to work so far.
2018-07-17 17:12:27 -07:00
Simon Forman
c2dd7cca0a
So fra, so good...
2018-07-17 12:43:24 -07:00
Simon Forman
25b7871074
i got used to it, but Jupyter likes 4
2018-07-17 10:49:09 -07:00
Simon Forman
14d67dd7c5
in the middle, just want to 2ify my indents...
2018-07-17 10:47:50 -07:00
Simon Forman
0029656351
TextJoyType and inscribe command.
...
I took the plunge and added the meta-command "inscribe" to the library.
This is, of course, a very dangerous and powerful command. Use it
wisely.
2018-07-17 10:35:11 -07:00
Simon Forman
d9d52fa224
A few more stack effects.
2018-07-16 20:28:53 -07:00
Simon Forman
3551b6148b
expectations_of_definition() and some helper infer funcs.
2018-07-16 19:10:16 -07:00
Simon Forman
043acd685c
More stack effects, and modify the key bindings.
2018-07-16 18:43:40 -07:00
Simon Forman
612d48d8cc
Update docs.
2018-07-16 09:11:25 -07:00
Simon Forman
230134e6c2
Make sure we've got all the docs, etc.
2018-07-15 20:43:26 -07:00
Simon Forman
cf12b9ce17
Fix bugs
...
Type checking e.g. sum or product.
Any type accepts complex numbers.
Lots of the math functions now just use Number rather than more specific
poly-types.
2018-07-15 20:37:52 -07:00
Simon Forman
c4af5682c4
That "fix" wasn't a fix.
...
It broke other stuff. What I really wanted to do was change the stack
effect of 'clear'.
2018-07-15 14:06:10 -07:00
Simon Forman
20d87db9d5
Fix up stacks for type checking.
...
Sometimes (e.g. 'clear') the () at the end of the stack was tripping up
the unify() function.
2018-07-15 13:57:11 -07:00
Simon Forman
e169c6aae2
Some integration with Type Checking.
...
Now the UI highlights commands and numbers as you move the mouse, numbers
are blue, commands that type-check are green, commands that fail to
type-check are orange and will not be interpreted, and if there is no
stack effect information available for a command it is grey but you can
still attempt to execute it.
You can still evaluate whole expressions by selceting them and
right-inter-clicking before you release the left button, or by putting
the cursor on a line and typing ctrl-enter, which will run the whole
line. These expressions are NOT (yet) type-checked.
2018-07-15 11:48:08 -07:00
Simon Forman
0292e8a297
Much globals. Wow.
2018-07-14 20:58:43 -07:00
Simon Forman
7899d68bab
Minor cleanup.
2018-07-14 20:55:34 -07:00
Simon Forman
ebb731126d
Move load_stack() to StackDisplayWorld.
2018-07-14 20:47:04 -07:00
Simon Forman
da03f60dca
Move StackDisplayWorld into world.py
2018-07-14 19:51:31 -07:00
Simon Forman
ea11fbebda
Move reset() to text method.
...
Rearrange some other stuff.
2018-07-14 19:34:01 -07:00
Simon Forman
8bbf4fc2bf
Correct some typo
...
I accidentally pasted or something.
2018-07-14 19:14:01 -07:00
Simon Forman
6fe83256b1
Move init_text() to Text method.
2018-07-14 19:11:49 -07:00
Simon Forman
a84966cf9b
Split some code into a utils.py module.
2018-07-14 18:51:22 -07:00
Simon Forman
4fb9e1e003
Minor cleanup.
...
Improve the behavior of the World.
2018-07-14 18:41:36 -07:00
Simon Forman
9ea0157969
Partial harmonize key commands.
...
Fix bug cut instead of copy.
2018-07-14 18:25:12 -07:00
Simon Forman
504981e551
Updated manifest file.
2018-07-14 13:01:43 -07:00
Simon Forman
862e0b07a8
It's time to bring in the GUI.
...
Minimalist (not to say Brutalist) UI based on text windows and mouse
chords. Experimental.
2018-07-14 12:45:52 -07:00
Simon Forman
691d604bf8
Temporarily ignore the test dir.
...
It's mostly just notes and crap so far.
2018-07-14 12:32:07 -07:00
Simon Forman
c83efb2aee
Module dependency graphs.
...
Made with Snakefood and Dot. I'm going to have to come through and clean
these up eventually.
2018-07-14 12:30:45 -07:00
Simon Forman
54491f0da2
A little more bit o' docs.
2018-07-14 12:29:25 -07:00
Simon Forman
41b39e5977
A bit more docs.
2018-07-14 12:07:49 -07:00
Simon Forman
f8829e25fa
A little more documentation.
2018-07-11 07:13:05 -07:00
Simon Forman
fcf483af22
Ah, Symbols.
2018-07-11 07:12:14 -07:00
Simon Forman
343a2f8459
Unicode in docstring.
2018-07-11 07:11:56 -07:00
Simon Forman
0980d1b7c9
ifte as definition; "fork" combinator.
2018-07-11 07:10:54 -07:00
Simon Forman
d95b92314e
Clean up.
2018-07-06 14:20:04 -07:00
Simon Forman
1862ece03e
Adding support for type checking.
2018-07-06 14:19:36 -07:00
Simon Forman
531e215ffd
Another definition for while.
2018-07-06 14:19:00 -07:00
Simon Forman
ab8ec6c95d
Minor cleanup.
...
Renamed update() to reify() and reinstated recursive substitution.
2018-07-04 10:37:43 -07:00
Simon Forman
4fff827338
Extra logging and another lil test.
2018-06-30 23:20:00 -07:00
Simon Forman
ab1f5227ba
Hmm.
...
I think update() should be done better...
2018-06-30 12:59:14 -07:00
Simon Forman
4406a6620b
Type inference of Joy expressions.
...
More remains to be done but it seems to work.
2018-06-29 13:19:12 -07:00
Simon Forman
6ca59847ab
Gotta update() expression too.
...
If type vars get into the espression you have to keep them in sync with
the unification or you can lose information.
Some combinators can put symbols on the expression, you have to convert
those to type checkers or, as a hack, just look them up and run them.
This lets definitions work(-ish), ...
2018-06-27 22:26:27 -07:00
Simon Forman
fc45727008
Minor cleanup.
2018-06-27 19:03:23 -07:00
Simon Forman
9ee50a6268
Minor edits.
2018-06-27 16:31:00 -07:00
Simon Forman
4321ea874b
don't compose lits
...
It forces the identities of lits to change during relabel().
I think we still have to update() the expression to track changes in the
F function stack effect or we risk losing assoviations between type
variables in the stack effects and type variables in the pending
expression. Hrmmm.
2018-06-26 22:39:06 -07:00
Simon Forman
db28989b64
Trying to add a guard to combinators.
...
So they can notice if they're given a stack that doesn't match what
they're expecting.
This seems to work, but I realized that type variables in the pending
expression need to be update()'d too. hmm...
2018-06-26 21:45:58 -07:00
Simon Forman
bbc0fae2e9
Minor edits.
2018-06-26 21:44:18 -07:00
Simon Forman
56262fc53e
Dropped some HTML docs somehow.
2018-06-26 15:58:18 -07:00
Simon Forman
eb739024eb
Type checking, initial work.
2018-06-26 15:23:51 -07:00
Simon Forman
705c95ee28
Fix a couple of bug in Kleene Stars.
...
...and some minor cleanup.
2018-06-25 12:43:05 -07:00
Simon Forman
41d979b233
A bit more text in the Types notebook.
...
It's still pretty drafty. I'm working on the code and then I'll write up
the last bit of docs.
2018-06-25 11:32:27 -07:00
Simon Forman
f1979f35ce
Some more tests.
...
Damn thing seems to be working.
2018-06-25 06:51:12 -07:00
Simon Forman
baae1a5b36
Change name of kav() to infer().
2018-06-24 18:48:22 -07:00
Simon Forman
ad83e1607e
Writing tests.
...
I'm backfilling tests to cover the functionality that I developed
incrementally in the Jupyter notebook and nail it down with concrete
examples. No doubt I'll uncover some bugs.
2018-06-24 18:44:29 -07:00
Simon Forman
d874b2a134
Minor cleanup.
...
Joy type errors get their own exception class.
2018-06-24 18:39:46 -07:00
Simon Forman
1aace53fa0
Infencer/Interpreter hybrid and Kleene Star types.
...
Still draft but it works. Gotta clean it up and supply defs for basis
functions.
2018-06-24 16:33:07 -07:00
Simon Forman
968556c7f3
Simple type inference and compiler.
...
The compiler works for the subset of Joy functions that deal strictly in
manipulating stacks and their contents.
2018-06-21 21:23:34 -07:00
Simon Forman
ca05ea404a
Bunches of new docs.
...
Type inference!
A new treatment of recursion combinator patterns.
2018-06-21 21:13:50 -07:00
Simon Forman
049cfd22b7
Elegant definitions for un-, bin-, tern-ary combinators.
2018-06-13 10:24:36 -07:00
Simon Forman
33f34dd15b
Rename pushback() to concat().
2018-06-13 10:17:46 -07:00
Simon Forman
ac56b0f03c
Removing old html.
2018-06-08 13:22:13 -07:00