Commit graph

84 commits

Author SHA1 Message Date
Roman Godmaire
ab20f6e85e refactor: namespaces(?)
And move list functions over there
2024-05-14 20:04:35 -04:00
Roman Godmaire
285b93aa89 feat: reduce + fold 2024-05-14 16:08:21 -04:00
Roman Godmaire
a2210f2db3 fix: 1-based indexing, babey 2024-05-14 14:48:52 -04:00
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