Simon Forman
56fdf1eb18
Minor cleanup.
2022-09-28 22:07:28 -07:00
Simon Forman
abddda47da
Minor cleanup.
...
Functional Programming FTW!
2022-09-28 21:56:53 -07:00
Simon Forman
61bcf3588a
Apparently this is redundant.
...
Discovered by running `nim doc joy.nim`, compiling doesn't flag it.
2022-09-28 21:22:19 -07:00
Simon Forman
ec46cb6a2b
Clear out old docs; update defs.txt.
2022-09-28 18:28:25 -07:00
Simon Forman
cdec813b24
I had to model it in Python
...
before writing it in OCaml.
2022-09-28 18:21:13 -07:00
Simon Forman
4200c6708e
Improve compiling of step combinator.
2022-09-28 18:18:20 -07:00
Simon Forman
263ed2ee87
Initial outline for a talk on Joy.
2022-09-28 18:16:45 -07:00
Simon Forman
8159e102d3
coms, swap
2022-09-24 21:19:35 -07:00
Simon Forman
d94153583c
Comparison operations.
2022-09-24 21:00:45 -07:00
Simon Forman
c591bf4138
branch, dip, i, loop
...
The core combinators (except fork).
2022-09-24 20:45:06 -07:00
Simon Forman
3ecd7ab595
Minor cleanup.
2022-09-24 19:39:10 -07:00
Simon Forman
5e786db63f
Simple REPL.
...
Still very crude, and exceptions are not caught, but it works.
2022-09-24 19:33:29 -07:00
Simon Forman
10cdba844b
Minor cleanup.
2022-09-24 14:54:07 -07:00
Simon Forman
d99d9ee8aa
concat
...
Ocaml's match is very powerful, respect, but if I want more precise
error messages (that conform to the joytest suite) then the extra
utility functions must be implemented and employed.
After that it's definition loading and the main REPL loop and I think
that's it, eh?
2022-09-24 14:29:03 -07:00
Simon Forman
07f47a3b7a
autoformat
2022-09-24 14:16:44 -07:00
Simon Forman
0905cdc0da
clear
2022-09-24 14:16:20 -07:00
Simon Forman
813502532b
Autoformat.
2022-09-24 13:13:44 -07:00
Simon Forman
977928362c
Evaluation is working.
...
It's all downhill from here, like in skiing!
2022-09-24 13:13:03 -07:00
Simon Forman
5db538cc5c
Eval symbols...
2022-09-24 12:54:46 -07:00
Simon Forman
c7966f7ac8
Working towards interpretation.
2022-09-24 12:44:20 -07:00
Simon Forman
754fd1d1dc
Nice and clean.
...
I wonder what Ocaml programmers would think of this code?
2022-09-24 12:02:00 -07:00
Simon Forman
9e2d148fbf
Parser.
...
Mighty battle.
2022-09-24 11:00:19 -07:00
Simon Forman
0d88895ead
Order is preserved.
2022-09-24 09:01:16 -07:00
Simon Forman
c96cd6e296
A couple of little comments.
2022-09-24 08:59:38 -07:00
Simon Forman
4ff78dd65c
Parse tokens into joy_list.
...
That seemed a lot harder than it should have been...
2022-09-24 08:54:04 -07:00
Simon Forman
54d287bc32
A start of parsing tokens.
2022-09-23 19:35:15 -07:00
Simon Forman
97f715a10d
Formatting.
2022-09-23 17:47:31 -07:00
Simon Forman
f45d070856
I think I got the tokenizer right.
2022-09-23 17:31:16 -07:00
Simon Forman
4d7ed83238
So that's mutual recursion in Ocaml?
...
I like it. Just change "let" to "and" and you're good-to-go.
2022-09-23 08:59:06 -07:00
Simon Forman
d717b594c4
Ignoring _build.
2022-09-23 08:54:37 -07:00
Simon Forman
d0477eb516
Ignore _build dirs.
2022-09-23 08:53:39 -07:00
Simon Forman
64d4a42978
autoformat
2022-09-23 08:38:17 -07:00
Simon Forman
c76ae9979d
Ocaml FTW!
2022-09-23 08:37:04 -07:00
Simon Forman
8cb04fc72d
At this point...
...
...I'm just relearning C semantics. (And they are garbage, as is widely
known.)
I don't think there's much point to this (at the moment) because I don't
want to relearn C (at the moment) and Nim is available (at the moment.)
Really, I'm trying to do away with the entire relationship of C et. al.
to the underlying machine. (For instance, Nim gives you a much nicer
relationship, without the vast distance that, say, Python imposes.) I
should really look at other compiled languages, like Ocaml or Julia.
2022-09-22 20:43:25 -07:00
Simon Forman
ae864909ee
Create an int and add ints.
2022-09-22 20:08:24 -07:00
Simon Forman
5caa685bab
Try using GC_register_finalizer?
2022-09-22 19:34:57 -07:00
Simon Forman
5ceab61ca1
Maybe this is the right thing to do?
...
https://stackoverflow.com/questions/59489221/using-the-gmp-library-with-boehms-garbage-collector
2022-09-22 19:00:40 -07:00
Simon Forman
813c5c0a23
What would a little C Joy look like?
...
Let's use GMP for ints and Boehm GC.
2022-09-22 17:26:28 -07:00
Simon Forman
92338037e7
Wait for both results together.
...
If one causes an error before the other is finished SIGKILL the other
job. (I do not know if this will kill the sub-tasks if any. The Python
docs say that with terminate() "descendant processes of the process will
not be terminated – they will simply become orphaned." but it doesn't
say whether that's true with kill().
2022-09-22 13:20:30 -07:00
Simon Forman
0904bad81b
Capture and fwd exceptions in subforks.
...
(Should there be only one subtask? Do the other quote in the main
proc?)
2022-09-22 11:41:16 -07:00
Simon Forman
50293908d9
Let's play with more cores.
2022-09-22 09:13:11 -07:00
Simon Forman
caa4461217
Basic system, incomplete.
...
Still needs the rest of the core functions and defs.
Could read defs from a file at compile-time?
Integer math? Boolean ops? Just type inference and maybe compiling?
2022-09-20 17:56:18 -07:00
Simon Forman
b49e7458c2
Parse the tokens into a Joy expression.
2022-09-20 17:14:41 -07:00
Simon Forman
c8f67f02f9
Parser in GNU Prolog.
...
Wonky handling of UTF_8 blankspace.
2022-09-20 16:29:35 -07:00
Simon Forman
3f4e9d9fe2
The whole thing is kind of a mess.
2022-09-20 14:22:47 -07:00
Simon Forman
d080cd20c7
Let simple joy be joy.
...
Still to do: clear away the rest of the old cruft.
2022-09-20 11:12:59 -07:00
Simon Forman
2367191918
Remove cruft.
2022-09-20 11:12:28 -07:00
Simon Forman
283832c649
Minor cleanup.
2022-09-20 10:20:58 -07:00
Simon Forman
a6ff9857d2
Add trace word back in.
...
Remove pretty_print module.
Still to do: update Nim implementation with a trace function. ;)
2022-09-20 10:19:45 -07:00
Simon Forman
36a9967e6c
Fix typo in hyperlink in README.
2022-09-19 19:43:34 -07:00