mal (Make-A-Lisp)の自分用の実装です。
step5(step5_tco)まで実装しました。
impls/rustディレクトリで
$ make stepX
トップレベルで
$ impls/rust/target/release/stepX_XXX
トップレベルで
$ make test^rust^stepX
- Nil:
nil - Bool:
true,false - Integer:
1,2,3, ... - Symbol:
a,b,c, ... - String:
"abc","def", ... - List:
(),(1 2 3),(a b c), ... - Vector:
[],[1 2 3],[a b c], ... - Hashmap:
{},{"a" 1 "b" 2 "c" 3}, ... - Function:
(fn [a b] (+ a b)), ...
(def! x 3)(def f (fn* [a b] (+ a b)))(if true 1 2)(do (def! x 3) (def! y 4) (+ x y))(let* [x 3 y 4] (+ x y))(eval (list + 1 2))
マクロは未実装。
step6のatomというデータ型(OCamlのrefに似ている)を実装する予定でしたが、step5で末尾最適化を行ったことで環境がバグり散らかしてしまいました。そのため、上記のstep4までの機能で採点をお願いします。
- Clojure
- Go
- Haskell
- Julia
- Scala
- Scheme
- Zig