Commit Graph

55 Commits

Author SHA1 Message Date
Simon Forman b0df80f3e6 futurize stage1 core 2020-04-23 23:16:45 -07:00
Simon Forman 8d0d0de897 Fixes #38239 rename parameter of stack.pick() 2020-04-23 21:39:29 -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 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 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 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 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 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 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 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 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 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 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 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 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 33f34dd15b Rename pushback() to concat(). 2018-06-13 10:17:46 -07:00
Simon Forman dbb1fcf4a2 Adding params to the docstrings. 2018-04-30 10:16:04 -07:00
Simon Forman 147641611d Working on the Sphinx docs.
I had to remove the tuples from the args specs, sphinx had kittens.

I see value both in the autodoc for library.py and the library examples
Jupyter notebook (converted to ReST format) so I'm including them both.

Calling the library module autodocs the "Function Reference".
2018-04-24 21:01:16 -07:00
Simon Forman 93b35593d4 Sphinx docs coming along.
It's so pretty!  Make me want to write more docs.  :-)

Some weird bug parsing the library.py module though.  D'oh!
2018-04-22 22:44:49 -07:00