EoPL reading (93) 2.2 An Abstraction for Inductive Data Type

よく見たらバグってない?

test subst y (lambda (x) (lambda (x) y)), expects (lambda-exp x (lambda-exp x (var-exp y))) ==> ok
test subst y (lambda (x) (lambda (y) y)), expects (lambda-exp y (lambda-exp y (var-exp y))) ==> ok
test subst y (lambda (x) (lambda (x) x)), expects (lambda-exp y (lambda-exp x (var-exp x))) ==> ok
test subst y (lambda (x) (lambda (y) x)), expects (lambda-exp y (lambda-exp y (var-exp x))) ==> ok

最後のソレはどうなのか、と思ったんですが定義を見たらセイフ。でも

gosh> (define f (lambda (x) (lambda (y) x)))
f
gosh> (define ff (f 3))
ff
gosh> (ff 2)
3
gosh> 

なので、やっぱダウトなんだけどなぁ。あ、戻す手続きの引数が y なのか。でもそうだとすると外の引数を y にするのはダウトじゃん。

うーん

ロスコンパイルでテンパッてるので思考力ゼロ。とりあえず投入。