決戦は海の上でなの

zickです。試験が終わって一息ついたというところです。
どうやら……もう駄目みたいです(笑)
今日はNScLisperのletrecを作りました。
letrecといえば『内部定義と同じである』とよく聞きますが、
SCIPにて、内部定義に関して

;;;たしかこんな感じのソースだったはず……
(define y 4)
(let ((a 0))
(define x y) 
(define y 3)
(+ x y))

このような場合、結果は7ではなく、エラーにするか、6にすべきであるとありましたが、
letrecの場合どうなるんだろう……と思い、R5RSを読んで見たところ、エラーにすべきとのこと。
ついでに内部定義の箇所を読んだら、上の例のような内部定義はエラーにすべきとありました。
SCIPの内容って(古いせいか)微妙に今のSchemeの仕様と違うことが書いてるからややこしい……
とはいえ、どちらも無視して、逐次束縛していって、上記の式は7になるようにしましたが(笑)

Leave a Reply