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