Commit Graph
100 Commits
Author SHA1 Message Date
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
sforman 1bad1508f1 dup 2023-08-10 21:47:54 -07:00
sforman a56a3939c1 minor edit 2023-08-10 21:46:56 -07:00
sforman a15ea2d355 It's more efficient to concat the empty list
than to concate a non-empty list onto the empty list.
2023-08-10 21:45:40 -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
sforman 0503dc2fbe Parser. 2023-08-04 00:33:11 -07:00
sforman 0122c4f249 Scheme, eh? 2023-08-03 11:28:46 -07:00
sforman 97602ade8d SWIProlog can't not emit '.'.
I would like the GNU Prolog and SWI Prolog versions to be compatible, if
possible.

SWI has bigints, GNU doesn't, so that's a wrinkle...
2023-08-02 22:38:04 -07:00
sforman ee4c3bc9b6 Thread the dict through the interaction loop.
Like a total newbie I put the call to the interpreter in the view
function instead of the update function!  I thought it was weird having
to specify the HTML twice, but I figured I was just doing it wrong.  I
was, but not in the way I suspected.

In any event, I like how this make it clear that errors can't affect the
dictionary.
2023-08-02 21:19:43 -07:00
sforman 2fe886afba Checked old defs.
I forgot `over`!
2023-08-02 19:37:36 -07:00
sforman be87d2c09d Talk about symbols on the stack. 2023-08-02 19:08:42 -07:00
sforman e7ac46fd7b A spec doc for Thun.
It's not very good yet, or formal, "but it's mine and I love it."
2023-08-02 18:52:31 -07:00
sforman 5585ae5d31 _isnt_bool _isnt_two_bools
These probably won't last?
2023-08-02 09:06:11 -07:00
sforman f15eef1c56 minor edits 2023-07-31 12:08:39 -07:00
sforman 45f00c8f2e Elm README.
And minor edits.
2023-07-31 11:30:12 -07:00
sforman ac286a283f minor edits 2023-07-31 11:22:44 -07:00
sforman d796b78a6f minor edits 2023-07-31 11:17:05 -07:00
sforman 5b8a430d1d minor edits 2023-07-31 11:06:13 -07:00
sforman b3a0bac5a7 Oops, that is not a definition of first. 2023-07-31 10:44:38 -07:00
sforman 443beb2ab4 Minor edits. 2023-07-31 10:36:53 -07:00
sforman fecd3e1d02 Minor edits. 2023-07-30 16:34:56 -07:00
sforman 72c325c1f2 I think I have got it. 2023-07-30 16:16:51 -07:00
sforman d285d13290 egad 2023-07-30 16:14:52 -07:00
sforman e9cee15c64 weird symbols in table 2023-07-30 16:03:17 -07:00
sforman c23a3a5317 mdtableeeeee 2023-07-30 16:01:09 -07:00
sforman a38fc62074 MD TABLE!? 2023-07-30 15:54:07 -07:00
sforman 540bdd97bd Sort out the and/or/... ops. 2023-07-30 15:51:29 -07:00
sforman c0fa319c9c Crude type checking.
I forget why I was doing "not not" so I made it a little more clear.  In
practice this is regressive:  The built-in "isnt_bool" function should
be in the dictionary?  Or prohibit type checking and let the bugs flow?
Rely on inference to prevent bugs that would pass the non-checking
versions of the functions?  Hmm...
2023-07-30 15:42:55 -07:00
sforman 373666bf39 Name Boolean ops.
So they don't overshadow the defs for the short-circuiting combinators.
2023-07-30 15:41:58 -07:00
sforman 1089ab7c24 Error type (not just a string.)
This is mostly for fun, but I bet it comes in handy, eh?

At the very least, it's a nice catalog of the possible errors that the
basic Joy system might encounter.
2023-07-30 14:59:09 -07:00
sforman 850bc3a500 type alias JoyFunction 2023-07-30 14:27:27 -07:00
sforman 64d9bb75a4 Format. 2023-07-30 07:47:26 -07:00
sforman 9963a73322 inscribe, definitions. 2023-07-30 07:45:06 -07:00
sforman 200c390fd5 Initialize dict with defs.
Just sqr for now, but it shows that it works.

I would like to return Results from add_def but it makes using foldl
slightly tricky,  not a lot, just slightly, and my brainpower is low at
the mo'.
2023-07-29 17:10:45 -07:00
sforman edfd7c526f Look up words in the dictionary.
If they are not built-in, which means you can't "shadow" built-ins with
"inscribe", which may or may not turn out to be what we want?
2023-07-29 12:35:47 -07:00
sforman 4acdec71ed Thread the dictionary through the call stack. 2023-07-29 12:30:22 -07:00
sforman 4d6230e01d Empty string is not an unknown word. 2023-07-29 12:11:43 -07:00
sforman 9220361871 Gotta keep a Dict around. 2023-07-29 12:09:08 -07:00
sforman b1d4c3c5b8 Logical ops. 2023-07-29 11:37:07 -07:00