EoPL reading (36) 1.3.1 Free and Bound Variables
Exercise.1-26
そういえば、出社途中に試験が足りてないかも、な事に思い至る。
まず、test-occurs-free.scm に以下な試験を追加。
(test* "(occurs-free? 'x '(lambda (y) (set! y x))) should return #t" #t (occurs-free? 'x '(lambda (y) (set! y x)))) (test* "(occurs-free? 'x '(lambda (x) (set! y x))) should return #f" #f (occurs-free? 'x '(lambda (x) (set! y x))))
上側の試験は lambda の引数が x ではないのでダウト。下側は occurs bound ですな。あるいは test-occurs-bound.scm にも同様のナニを追加。
(test* "(occurs-bound? 'x '(lambda (y) (set! y x))) should return #f" #f (occurs-bound? 'x '(lambda (y) (set! y x)))) (test* "(occurs-bound? 'x '(lambda (x) (set! y x))) should return #t" #t (occurs-bound? 'x '(lambda (x) (set! y x))))
大丈夫とは思ってたんですが、一応きちんと動いてます。
あと、Exercise.1-31 ですが、ぱっと見ハードル高い? って思ったら星二つ。Ex.1-23 版のソレを使って云々なんだろな、と思ってはいるのですが、そろそろ寝ます。