Commit Graph
100 Commits
Author SHA1 Message Date
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
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