Unlambda で Lisp インタプリタ

https://github.com/irori/unlambda-lisp

3 連休だったので Unlambda で Lisp インタプリタを作ってみました。

Adventure を作ったときのコードジェネレータを流用して、今回新たに書いたコードは 400 行ちょっとでした。生成された Unlambda プログラムは 35kb ほど。

構文は quote, if, lambda, defun が、組み込み関数は基本的なリスト用関数 (cons, car, cdr) と四則演算が使えます。代入はありませんが、代わりに call/cc を使えるようにしてみました。数値は非負整数のみ使えます。内部表現はチャーチ数なので大きい数を作ると大変なことになります。全体的にエラー処理が甘いので壊れた式を入れるとおかしくなりがちです。

次回は Lazy K で Lisp インタプリタを作る予定です。