全然関係ないけど

(letrec ((a b) (b 3)) a)
(letrec ((a (list a b)) (b 3)) a)

これらはエラーなんだけど、
ちゃんと意味解析のエラーではじく処理系ってあるかいな?
特に後者のケースで。
手抜き処理系だと良くて実行時エラーか、
評価順序の関係でエラーにならなかったりする。