Anyway, now I have a LISP interpreter written in Rust.
https://github.com/mcclure/lisp0-experiment/tree/2025-04-07
It's a very minimal "MVP"; the language currently lacks:
- Variable scopes
- Loops
- Conditionals
- Floating point numbers
- Errors lack backtraces or line numbers (and cannot be recovered from)
It has
- One global scope
- Ints, strings, arrays and hashtables
- Tail recursion
- File I/O
But math and recursion means it's Turing complete. Which means it's sufficient to use it for a AOC problem!