This is simply me attempting to implement a language spec.
I choose the r4rs as the spec is relatively simple.
This is not meant to be used in production.
$ node src/eval.js
> 2
2
> "hello"
"hello"
> (define
(fact n)
(begin
(define (factAcc n acc)
(if (= n 0)
acc
(factAcc (- n 1) (* acc n))))
(factAcc n 1)))
(undefined)
> (fact 0)
1
> (fact 10)
3628800
>
- call/cc
- quasiquotes
- base extended forms let, let*, letrec etc..
- Hygenic Macros
- Remainder of the standard standard lib
- Proper number tower
- Tail calls
- bytecode compilation