Commit Graph

190 Commits

Author SHA1 Message Date
Simon Forman 07d94a1fad primrec combinator
Ticket #40375
2020-05-05 15:22:12 -07:00
Simon Forman 8604dccc24 Put the log and scratch text in the same window.
This is a step towards Ticket #40360 without going all the way.  You can
open additional viewer windows.  They are not connected by an
Oberon-style messaging system (yet.  It would be nice to use the Tk event
system for that.)

This way the log and the main/scratch/system-menu text are conceptually
unified in the (equivelent of "desktop") base metaphor of the system.
2020-05-02 12:51:29 -07:00
Simon Forman ddf063973c Trace command.
Don't print trace by default, instead a new `trace` combinator wirks like `i` and prints a trace.
2020-04-28 15:28:43 -07:00
Simon Forman 4704799c37 Rename primrec to tailrec. 2020-04-28 11:05:19 -07:00
Simon Forman 750f498512 Fixes #38237 Sort out stack/unstack/enstacken/disenstacken 2020-04-28 10:42:09 -07:00
Simon Forman fac2d2ae5f Switch the names of unstack and disenstacken.
Part of Ticket #38237

Still need to update the docs.
2020-04-28 10:28:30 -07:00
Simon Forman 035f8108f0 Minor cleanup. 2020-04-25 18:41:26 -07:00
Simon Forman 5da4663f98 Some comments in gui.main. 2020-04-25 18:24:14 -07:00
Simon Forman cdff2ea5ea Fixes #40358 Help output could be better.
For now.  Add a header and footer.  Later on when I have per-function docs
it can look those up and print them (or open a viewer in the GUI.)
2020-04-25 15:08:58 -07:00
Simon Forman 9f36207fe3 Sort the definitions in the library. 2020-04-24 16:13:05 -07:00
Simon Forman 1863cba7f7 Somehow swoncat fell through the cracks. 2020-04-24 16:09:32 -07:00
Simon Forman 078f29830d Switch to tabs for indentation.
Instead of a mix of 2- and 4-space tabs just use actual tabs.  ;-P
2020-04-24 12:48:15 -07:00
Simon Forman 2fb610e733 Fixes: #40354 Don't hardcode my own name and email as autosave committer. 2020-04-24 12:28:59 -07:00
Simon Forman c1a9fc2c28 Fixes: #40355 Lookup bytes no good. 2020-04-24 12:05:39 -07:00
Simon Forman cf5c618376 Pickle protocol 2. 2020-04-24 11:58:43 -07:00
Simon Forman 78ba1a1851 Dulwich expects bytes not str. 2020-04-24 11:57:11 -07:00
Simon Forman 40a7830694 Fixes #40353 TypeError: must be str or None, not bytes 2020-04-24 11:45:16 -07:00
Simon Forman 4ec06bcaa3 Fixes #40352 write() argument must be str, not bytes 2020-04-24 11:24:56 -07:00
Simon Forman d991fad3c3 Make sure joy.gui.main.__doc__ is at the top of the module. 2020-04-24 10:47:23 -07:00
Simon Forman 6fe11aa205 Remove `__next__`. 2020-04-24 10:32:48 -07:00
Simon Forman c9082be37d AttributeError: 'itertools.count' object has no attribute '__next__' 2020-04-24 10:10:50 -07:00
Simon Forman 25525deb53 Open stack pickle file in binary mode. 2020-04-24 10:10:30 -07:00
Simon Forman 53d886a492 read text from REPL, don't eval 2020-04-24 00:03:32 -07:00
Simon Forman 9ca5b24fd1 Fake brutal_hackery on Py3.
Because I'm not about to try to figure it out tonight.
2020-04-24 00:00:41 -07:00
Simon Forman d2785f6f68 futurize stage2 vui 2020-04-23 23:44:29 -07:00
Simon Forman f949efe1a4 futurize stage2 gui 2020-04-23 23:38:10 -07:00
Simon Forman 29d510eb46 futurize stage2 core 2020-04-23 23:33:23 -07:00
Simon Forman e758d7d2be futurize stage2 core 2020-04-23 23:28:24 -07:00
Simon Forman 00db0fd0ad futurize stage1 vui 2020-04-23 23:22:45 -07:00
Simon Forman 89b4eb5e15 futurize stage1 gui 2020-04-23 23:19:29 -07:00
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 0588496ca5 Minor cleanup. 2019-12-03 08:41:42 -08:00
Simon Forman fdf0339e16 Make parser REs into module-level "constants". 2019-12-02 14:26:07 -08:00
Simon Forman 57446a1179 Minor docs update. 2019-12-02 14:13:50 -08:00
Simon Forman f58f3b9959 Definition of ii combinator.
ii == [dip] dupdip i

         a [F] ii
      --------------
          F a F
2019-11-07 07:53:21 -08:00
Simon Forman df5ddb8ad9 Some trailing whitespace or something. 2019-08-09 09:28:15 -07:00
Simon Forman a3f863ff18 Move is_numerical() to joy.gui.utils. 2019-08-03 19:02:24 -07:00
Simon Forman 6a94c12b9b Get the path separator right on windows.
It used to use: C:\Users\sforman/.joypy

which worked, but ew.
2019-08-02 18:30:43 -07:00
Simon Forman 84a2de7790 Tiny edits. Almost nothing. 2019-07-21 07:32:20 -07:00
Simon Forman c4c6ece6d2 Add bool function to mimic Python semantics. 2019-07-16 08:41:28 -07:00
Simon Forman 0359cd64c7 Very minor docs change. 2019-07-15 15:50:22 -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 663ddab7a7 A start on docs for VUI.
It's hella crude yet.
2019-05-06 23:05:50 -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 d4fdde50f9 Initial bring over of VUI code. (Won't work yet.) 2019-05-06 13:07:01 -07:00
Simon Forman b27adb7e1c Remove some trailing blankspace. 2018-11-28 13:00:03 -08: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 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 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 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