続5・PrologでR6RS ~地味な話~

Prologで作るSchemeインタプリタですが、
R6RSの形式的意味論の仕様を大体満たすようになってきました。
ただし、入力によっては死ぬほど遅いです(dynamic-windが関わると遅い?)。
とりあえず、最近触ったのは、例外処理、算術演算、リスト操作、
eqv?, apply, call-with-valuesあたりです。どれも地味で悲しくなります。
一番華やかなのは入出力をS式でできるようにしたこと。

evaluate("(car '(a b c))").
a
Yes
evaluate("(cdr '(a b c))").
(b c)
Yes

こうすると、かなりSchemeインタプリタっぽいですね。

Leave a Reply