続6・PrologでR6RS ~letrecのターン~

letrecを作りました。
多分一番長い簡約規則。

evaluate("(letrec ((fact (lambda (n) (if (eqv? n 0) 1 (* n (fact (- n 1))))))) (fact 3))").
6
Yes

これで再帰呼び出しが書けるようになりました。
あとletrec*を作って、例外を発生させる規則を書けば、
Appendix Aの仕様をほぼ満たすことになります。

ゆとりTシャツ完成予想図

Leave a Reply