続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インタプリタっぽいですね。