Commit Graph

952 Commits

Author SHA1 Message Date
Simon Forman 217adaa318 test_Subtraction_large_from_small 2022-10-04 16:41:09 -07:00
Simon Forman 4cea474166 I guess subtraction works!? 2022-10-04 16:28:43 -07:00
Simon Forman 70b8bbdc0e Adding two negative numbers. 2022-10-04 12:10:32 -07:00
Simon Forman 0333c3c522 That was easy! Add BigInts of the same sign. 2022-10-04 12:05:41 -07:00
Simon Forman 0817dcf4b1 Red... (Green, Refactor)
TDD FTW!
2022-10-04 11:37:55 -07:00
Simon Forman 21bd4bcfd3 Not using ctypes; test_twice_min 2022-10-04 11:31:40 -07:00
Simon Forman 151c580721 Minor cleanup. 2022-10-04 11:21:07 -07:00
Simon Forman 9ccc92d04c Fix import. 2022-10-04 11:20:55 -07:00
Simon Forman f0b6f4036a BitInt start; unittest. 2022-10-04 11:20:14 -07:00
Simon Forman 53bea5f59b That was easy...
but it breaks associativity or is it commutivity?

Anyway you can't add THREE or more things in one expression (yet)
because adding OberonInt objects returns a two-tuple.

I could adjust the semantics of ObInt to accept such two-tuples and do
add_with_carry() but that's probably more trouble than it's worth.

Just gotta be careful with math expressions, eh?
2022-10-04 08:53:32 -07:00
Simon Forman 690f157ac8 Switch to double-underscore method names.
Worry about type conversions later.
2022-10-04 08:49:40 -07:00
Simon Forman e2f107d1bb Subtraction. 2022-10-04 08:47:39 -07:00
Simon Forman 6ecf681d3a BigInts in terms of Oberon Ints
Oberon RISC has Two's Complement 32-bit ints with carry.

So far so good.
2022-10-04 08:32:04 -07:00
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