Commit Graph

41 Commits

Author SHA1 Message Date
sforman 8bb8953816 pop-any and pop-list.
Runtime type-checking.
2023-10-21 11:08:01 -07:00
sforman 3e72ce494a minor edits 2023-10-20 22:16:21 -07:00
sforman 0fcd217f2c A little BTree.
Persistent (immutable) datastructure.
2023-10-20 19:36:41 -07:00
sforman b116c2c98b A start on error reporting.
I outfitted `rest` with some error reporting and tried out exception
handling.  So far so good.

One issue is that the dictionary is not a persistent datastructure, so
if there was an "inscribe" command (it's not yet implemented for this
Scheme implementation) that might be slightly problematical.  (If an
error were to occur in an evaluation that had already entered new
definitions into the dict then those definitions would "survive" into
the rest of the REPL session (or whatever.))

I'll look into persistent dict for Scheme.
2023-10-20 11:42:50 -07:00
sforman d0623508bd Use Scheme symbols for Thun symbols.
It seems more elegant that way, but I haven't tested it to find out if
it has better performance or memory usage (yet.)
2023-10-19 20:54:11 -07:00
sforman 7f5c1d3086 Symbols for symbols.
This shouldn't work yet, because the parser makes Lisp symbols out of
the Thun symbols, but the match expr still has strings.  In the REPL
this fails, but in the compiled Joy binary it doesn't fail, the
interpreter interprets just fine.
2023-10-15 11:41:44 -07:00
sforman 68a85c915a add defs for select and small; cleaner joy-func. 2023-10-13 07:42:22 -07:00
sforman 205086714d A little more match. 2023-10-11 20:36:01 -07:00
sforman c4d80f6c4e Use match a little more. 2023-10-11 20:13:02 -07:00
sforman 93556efeeb Use match instead of cond. 2023-10-11 20:01:35 -07:00
sforman 8e15a657ed Minor indentation change, a typo. 2023-10-10 12:12:07 -07:00
sforman 4df31667b6 Remove global stack, dict.
Pass them through the recursive loop instead.
2023-10-10 11:16:30 -07:00
sforman 937f6bfce5 Put a bang on add-def. 2023-10-10 10:45:00 -07:00
sforman d833f1a3e9 Implement `bool` and trace for Scheme. 2023-10-08 17:57:05 -07:00
sforman 20b517f083 Figlet headings. 2023-08-18 16:59:32 -07:00
sforman 48e443c5c7 for-each 2023-08-12 14:09:44 -07:00
sforman 596a7a21eb A crude main loop.
I know there are better ways to do this, but I don't know what they are
yet.  Maybe a "do" loop?  Anyway, this works, although it doesn't catch
errors yet.
2023-08-12 13:03:42 -07:00
sforman 00f4bfcacd Math ops, definitions for left- and right-shift. 2023-08-12 08:04:21 -07:00
sforman f45c739fad first rest 2023-08-11 23:02:46 -07:00
sforman 1a37a8e81c concat cons comparison 2023-08-11 22:48:25 -07:00
sforman 8df8634e39 loop 2023-08-11 21:27:41 -07:00
sforman 172407fef1 branch and refactor simple functions.
The refactor should be a macro but I don't know how to write those yet
(apparently there are different macros systems...  ooo la la!)
2023-08-11 21:15:26 -07:00
sforman 4d6d66e391 dip 2023-08-11 20:49:24 -07:00
sforman c3e6c1be90 i 2023-08-11 20:45:25 -07:00
sforman ae7d854330 swap 2023-08-11 20:38:01 -07:00
sforman 9fbb7c05c3 pop 2023-08-11 20:34:40 -07:00
sforman b921a9e3d2 stack, swaack 2023-08-11 11:11:51 -07:00
sforman 5f8e33ff8d Add copyleft notice. 2023-08-11 11:03:00 -07:00
sforman 3382d0a47e Load defs at compile time.
I don't really know the proper way to do this, but I managed to whump
something up.
2023-08-11 10:48:33 -07:00
sforman 8fab04b02e Evaluate definitions. 2023-08-11 10:31:53 -07:00
sforman 67b60be123 Convert defs.txt to defs.scm.
Gonna need a makefile.
2023-08-11 10:15:31 -07:00
sforman d014709a32 Load defs from defs.txt.
They are loaded at runtime though :(  shouldn't be too hard to fix that?
2023-08-11 08:50:00 -07:00
sforman b6c3c364d0 A start on dictionaries using srfi-69 hash tables. 2023-08-10 21:49:37 -07:00
sforman 19777a86ae Use '->' in names of functions that convert values. 2023-08-10 21:48:46 -07:00
sforman 1bad1508f1 dup 2023-08-10 21:47:54 -07:00
sforman a56a3939c1 minor edit 2023-08-10 21:46:56 -07:00
sforman 7c9663594b A start on simple functions.
I'm sure there's a cooler way to do this, but it works.  (This is my
first Scheme code.)
2023-08-04 10:38:52 -07:00
sforman 8cc15a745f Parser emits errors; joy 2023-08-04 09:52:09 -07:00
sforman ea60a04d96 joy-expression-to-string 2023-08-04 08:14:45 -07:00
sforman 35ffe71482 text-to-expression 2023-08-04 07:47:12 -07:00
sforman dedbb0115f It's Joy.
Or will be soon.
2023-08-04 07:43:05 -07:00