Commit graph

81 commits

Author SHA1 Message Date
Roman Godmaire
e25c9baa66 lint: clippy 2024-05-14 14:21:18 -04:00
Roman Godmaire
06a2bc13d8 feat: modulo operator 2024-05-14 14:20:27 -04:00
Roman Godmaire
25ea02d5e6 feat: filter for iterators 2024-05-14 14:18:19 -04:00
Roman Godmaire
315478826f feat: map function for iterators 2024-05-14 13:46:07 -04:00
Roman Godmaire
a7c6e1a07d refactor: remove mutable reassignment 2024-05-14 11:50:01 -04:00
Roman Godmaire
ed86c884ec feat: range function 2024-05-14 11:39:48 -04:00
Roman Godmaire
6a83d228bb feat: lisp/vec manipulation
first, last, nth, push, pop
2024-05-13 10:07:44 -04:00
Roman Godmaire
5f7f7e4aed feat: swap macro 2024-05-12 22:10:44 -04:00
Roman Godmaire
07c01a1e39 refactor: Vec to VecDeque 2024-05-12 21:48:47 -04:00
Roman Godmaire
5e98637ae0 fix: quote macro 2024-05-12 15:17:55 -04:00
Roman Godmaire
6c08af02a1 fix: unquote not being truly recursive
Before we were skipping checks for unquotes within specials, which
themselves contain lists.  Quote is still broken, funnily enough.
2024-05-12 15:00:06 -04:00
Roman Godmaire
02463197c3 misc: Chesterton's Fence
Everything is a list in lisp for a reason 🙃
2024-05-12 08:11:12 -04:00
Roman Godmaire
047db2b188 feat: proc macro to write mute in rust 2024-05-11 13:19:58 -04:00
Roman Godmaire
4f882b35a6 refactor: move arg count
We only use this in the evaluator env, so move it to there.
2024-05-11 07:56:48 -04:00
Roman Godmaire
de4e9b4bd3 refactor: use macros for semi-repeated functions 2024-05-10 21:27:00 -04:00
Roman Godmaire
5669a04db0 feat: return errors on bad operations
The vast majority of these will turn into parse time type checks
2024-05-10 19:23:48 -04:00
Roman Godmaire
1958da3a96 docs: future of errors 2024-05-10 19:00:56 -04:00
Roman Godmaire
c53bb68b13 misc: grammar(?) 2024-05-10 18:56:21 -04:00
Roman Godmaire
2e19a44c0a feat: error node
Errors as values, baby!!
2024-05-10 18:54:18 -04:00
Roman Godmaire
ff6b12e408 lint: clippy 2024-05-10 11:24:45 -04:00
Roman Godmaire
c855b216ee misc: devenv 2024-05-10 11:23:38 -04:00
Roman Godmaire
e54d095c5f refactor!: move specials out of env
This is a fucked up commit.  If you see this, you have fallen too deep
into the rabbit hole.  Come say hi!
2024-05-10 11:21:46 -04:00
Roman Godmaire
d8724eb4b7 refactor: merge imports 2024-05-06 22:36:06 -04:00
Roman Godmaire
872195f6a5 feat: support floats in ordering operators 2024-05-06 22:35:39 -04:00
Roman Godmaire
e4484297a9 misc: remove i128 support
Rather than doing this, we should use a BigNumber library
2024-05-06 22:16:05 -04:00
Roman Godmaire
f1083009a4 refactor: split parser and interpreter into separate crates 2024-05-06 21:51:22 -04:00
Roman Godmaire
e49dbab859 feat: rudimentary float support 2024-05-06 08:50:38 -04:00
Roman Godmaire
1ed451e696 fix: support up to 128-bit integers
Floats should be next
2024-05-06 08:28:46 -04:00
Roman Godmaire
cbdff2c170 lint: clippy fixes 2024-05-06 08:01:18 -04:00
Roman Godmaire
5e072c0773 misc: remove anyhow dependency 2024-05-06 07:57:54 -04:00
Roman Godmaire
7e4166386f refactor: extract CLI to binary
Also start getting rid of anyhow
2024-05-05 11:16:45 -04:00
Roman Godmaire
e9c350e925 feat: quasiquote & unquote
This is an abomination, but it works
2024-05-05 10:31:02 -04:00
Roman Godmaire
66a2905c60 misc: CLI ergonomic improvements 2024-05-05 09:49:12 -04:00
Roman Godmaire
c321bf83d3 docs: Add my name <3 2024-05-05 09:36:50 -04:00
Roman Godmaire
db4bb2de8f feat: actual CLI interface 2024-05-05 09:21:45 -04:00
Roman Godmaire
b3a9bca32d feat: readline support in REPL 2024-05-05 08:36:57 -04:00
Roman Godmaire
00ac922bd0 feat: basic quoting
...  I think this is right?
2024-05-04 21:55:17 -04:00
Roman Godmaire
c596e00be8 feat: eval/apply functions 2024-05-04 21:14:47 -04:00
Roman Godmaire
2d93c83b67 feat: File IO! 2024-05-04 21:14:35 -04:00
Roman Godmaire
936f557536 feat: allow underscores in integers 2024-05-04 19:33:39 -04:00
Roman Godmaire
527737f020 fix: closures are functions, functions are closures 2024-05-04 19:23:25 -04:00
Roman Godmaire
e6b487a09a perf: RC environment
This now means environments are genuinely shared instead of clones
2024-05-04 19:03:14 -04:00
Roman Godmaire
18ea5f34e6 fix: remove dbg statement... 2024-05-04 18:49:40 -04:00
Roman Godmaire
93d53bd2a1 feat: differentiate between functions and closures 2024-05-04 18:45:43 -04:00
Roman Godmaire
b1ddc907e6 fix: don't include void nodes in eval result 2024-05-04 18:45:19 -04:00
Roman Godmaire
b582d66fcf feat: display to print/println 2024-05-04 18:05:22 -04:00
Roman Godmaire
58d1ffe48f feat: do statement for blocks 2024-05-04 18:05:09 -04:00
Roman Godmaire
5bdc677763 lint: referencing a reference 2024-05-04 17:49:02 -04:00
Roman Godmaire
30ebafb89d fix: support if without else
If statements without an else should evaluate to nil if the condition is
not valid.  These are mainly used for side effects, but sometimes you
might want a value.
2024-05-04 17:43:38 -04:00
Roman Godmaire
8ac46f36a8 fix: conditionally run if branches
NativeFunc evaluates the parameters before passing them into the
function, but Specials pass in the raw nodes.  If a function had side
effects (ie. display) then it would run even if the branch wasn't
the one chosen by the condition.
2024-05-04 17:38:40 -04:00