Commit Graph
100 Commits
Author SHA1 Message Date
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 a7c206745a Some edits. 2023-10-10 10:08:17 -07:00
sforman 506b40bba4 min and max 2023-10-09 13:04:16 -07:00
sforman 32d772e8b0 Some edits to some notebooks. 2023-10-09 12:48:14 -07:00
sforman 356f67dd7d Run MAKE. 2023-10-09 11:50:37 -07:00
sforman da0e1e685e Derive zip. 2023-10-09 11:45:28 -07:00
sforman 787dc6a7b3 Nerd Sniped 2023-10-09 11:44:13 -07:00
sforman 04d3e96a99 Great progress! 2023-10-08 20:17:02 -07:00
sforman eb665f2b50 More work on Ref doc, & stuff. 2023-10-08 17:58:22 -07:00
sforman d833f1a3e9 Implement bool and trace for Scheme. 2023-10-08 17:57:05 -07:00
sforman 4821ea0ee2 Take the right number of things off of the stack. 2023-10-08 13:08:34 -07:00
sforman bcf6abc50d Nerd sniped by a silly function. 2023-10-07 15:25:38 -07:00
sforman 7314d2177c Minor edits; rebuild docs. 2023-10-04 09:58:02 -07:00
sforman 69f32424a6 Print out wobbly words.
That have definition but no ref doc, or ref docs but no defs.
2023-10-04 08:28:53 -07:00
sforman 8c6d3dcff8 Use slightly smaller font files. 2023-10-03 20:19:31 -07:00
sforman d798339f86 Minor edits. 2023-10-03 20:17:04 -07:00
sforman 7ccfba86fd Tidy? 2023-10-01 12:48:25 -07:00
sforman 8661373435 A little more work on the ref doc. 2023-10-01 09:21:16 -07:00
sforman d723724193 Mark combinators. 2023-09-30 14:41:39 -07:00
sforman 902a9f62af Build the ref doc. 2023-09-30 14:25:12 -07:00
sforman 52e831a137 Put interpreter on pages. 2023-09-29 15:25:49 -07:00
sforman c3054377a6 Give it it's own CSS file.
It's good enough for now.
2023-09-28 18:37:01 -07:00
sforman aeb1eee646 remove the individual md ref files 2023-09-28 11:53:34 -07:00
sforman fa4771fea7 Minor edits. 2023-09-28 11:36:19 -07:00
sforman 0e380b7748 Div, mod handle zero. 2023-09-23 21:20:37 -07:00
sforman f2f1932876 Typo. 2023-09-23 10:59:38 -07:00
sforman 20b5f05d29 Elm reformatting and demo HTML page. 2023-09-23 09:37:43 -07:00
sforman 16cc0e5769 Change definition of uncons. 2023-09-18 11:26:50 -07:00
sforman ecc2e442fb Use blob URL. 2023-09-06 18:26:52 -07:00
sforman 463ed04e05 Add grammar image.
Made with https://jacquev6.github.io/DrawGrammar/
2023-09-06 18:24:27 -07:00
sforman 68488cc9d2 Elm version using BigNums.
This went pretty smoothly, I just followed the compiler errors after
substituting Integer for Int in the type definition.

The only tricky thing is that the div and mod functions for Integer
return Maybe Integer rather than just Integer, so I need to wrap those
or something?  (For now I just put in add to get it to compile.)

Oh, and "not equal" is not correct? The compiler didn't complain.
2023-09-02 11:30:18 -07:00
sforman 10c1d6ccde Let's use bignums. 2023-09-02 11:11:42 -07:00
sforman 4f27f3305f Don't use andThen.
It's less clear than spelling it all out.
2023-09-02 09:44:57 -07:00
sforman b65e948cce Chaining with andThen works but is ugly.
It's lees clear to me what's going on, and I wrote it.
2023-09-02 09:38:15 -07:00
sforman ee7c1cec99 I think Scheme? 2023-08-31 10:42:29 -07:00
sforman e956e177f6 Rebuilt C. 2023-08-30 19:57:57 -07:00
sforman 18adfa2205 Compiling Thun to Python.
Not all of the words that compiled with the old defs.txt compiled with
the latest, so we're keeping the old one in here until I can trace down
the issues.
2023-08-30 18:54:49 -07:00
sforman 9c4ecb085b pow 2023-08-30 18:52:26 -07:00
sforman 35097d90a9 Update Nim defs.txt. 2023-08-30 18:46:51 -07:00
sforman 47275cf1f1 Simple linear power function. 2023-08-30 18:44:55 -07:00
sforman fb8faf917d THe old compiler-to-Python. 2023-08-30 16:57:48 -07:00
sforman 38a9b93488 Rename BigNums. 2023-08-30 10:42:29 -07:00
sforman 58ca23c889 Add a README to the docs/ dir. 2023-08-30 07:26:47 -07:00
sforman 863d0698b5 Test calling dip on non-quote. 2023-08-30 07:25:11 -07:00
sforman 1c3a00e4a6 I just realized these all refer to the old package organization. 2023-08-29 06:12:51 -07:00
sforman 6674fdffb6 Better exceptions. 2023-08-28 20:46:19 -07:00
sforman 7285ebb8da Example of infra evaluation. 2023-08-26 10:56:29 -07:00
sforman 2482636d9b Note on Variations 2023-08-26 10:56:21 -07:00
sforman 53ad9eb5e7 Minor edits. 2023-08-21 17:58:47 -07:00
sforman a107e1df6c Rebuilt C interpreter. 2023-08-21 09:53:24 -07:00
sforman 9998e7947b Finished up Generator_Programs.md 2023-08-20 17:21:49 -07:00
sforman 8dfcbca2a8 README for Chicken Scheme. 2023-08-20 10:24:29 -07:00
sforman 5edf0797b4 sort 2023-08-18 17:09:08 -07:00
sforman 3c3b156169 Some scratch source
from editing BigNums notebook.
2023-08-18 17:00:13 -07:00
sforman 20b517f083 Figlet headings. 2023-08-18 16:59:32 -07:00
sforman ef9f7f2c0e Minor CSS changes. 2023-08-18 16:58:25 -07:00
sforman 805ec23e11 Edits on BigNums notebook. 2023-08-18 16:57:54 -07:00
sforman 99435490d0 About 2/5ths done. 2023-08-17 12:09:23 -07:00
sforman 307a421fab Add definition for xor. 2023-08-16 10:05:30 -07:00
sforman 387d9d4ed4 Working on the notebooks. 2023-08-16 10:04:52 -07:00
sforman 7d8e2ae611 Updating notebooks
to not use Jupyter because I can't figure out how to use the Joy kernel.
2023-08-14 09:18:04 -07:00
sforman 70aa2ef5e9 Working on the website for Thun.
I'm going to eventually update the old Sphinx-generated site on OSDN.
2023-08-13 14:30:57 -07:00
sforman 60bddcc70e cleanup 2023-08-13 08:49:20 -07:00
sforman 4fe3857eb9 Put this over there. 2023-08-13 08:48:06 -07:00
sforman 1f5bea98b6 Minor edits. 2023-08-13 08:47:16 -07:00
sforman 9f78b6d8fd Messing around with type inference.
What if we insist that both branches of a branch have compatible types?

For one thing `[+] [* +] branch` leads to a circular term which, when
printed, goes into a loop: "int,int,int,...".  Hmm...
2023-08-12 16:45:59 -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 eafa3d45ac Minor edit. 2023-08-12 12:55:25 -07:00
sforman c01b107541 Little updates to the spec doc. 2023-08-12 10:36:19 -07:00
sforman 6ed3a770fb Minor edits. 2023-08-12 08:40:55 -07:00
sforman 8bbbd2a4a4 Update defs.scm 2023-08-12 08:26:59 -07:00
sforman 69689f8cc6 Merge in the test suite.
Why not?

(I have a slow tide, expand into pieces, contract into units, and back
again.  This is part of a contract and unify phase.)
2023-08-12 08:19:54 -07:00
sforman 00f4bfcacd Math ops, definitions for left- and right-shift. 2023-08-12 08:04:21 -07:00
sforman 99f01bec1f mul div mod add sub in Nim 2023-08-12 07:54:33 -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