[卒研] 動いた
意図したとおり動いた。とりあえずはokかな
> (set! number (lambda (x) (lambda () x))) > (set! num10 (number 10)) > (set! num20 (number 20)) ; ここで(lambda (x) <>)のxが上書き、、、されない! > (num10) 10
あと、一応tak関数も動く
> (set! tak (lambda (x y z) (cond ((< y x) (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y))) (t y)))) (set! tak (lambda (x y z) (cond ((< y x) (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y))) (t y)))) #<closure>(x y z)((cond ((< y x) (tak (tak (- x 1) y z) (tak (- y 1) z x) (tak (- z 1) x y))) (t y))) > (tak 3 2 0) (tak 3 2 0) 3 > (tak 3 4 0) (tak 3 4 0) 4 > (tak 3 4 5) (tak 3 4 5) 4
でも(tak 12 6 0)とかを入れるとメモリを1Gぐらい消費して死ぬ。今の実装だと、整数は常にmallocしているからなぁ。末尾再帰も最適化していないし。