sforman
20b517f083
Figlet headings.
2023-08-18 16:59:32 -07:00
sforman
307a421fab
Add definition for xor.
2023-08-16 10:05:30 -07:00
sforman
60bddcc70e
cleanup
2023-08-13 08:49:20 -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
8bbbd2a4a4
Update defs.scm
2023-08-12 08:26:59 -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
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
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