Lisp Scheme Part23
■ このスレッドは過去ログ倉庫に格納されています
0258デフォルトの名無しさん
2008/09/05(金) 15:46:59ひとつは
(lambda (newlat seen)
(col newlat
(cons (car lat) seen)))
もうひとつは
(lambda (newlat seen)
(col (cons (car lat) newlat)
seen))
実は2つとも無名関数で再帰をしている。このコレクターが再帰のたびに別な関数になっていることをちゃんと理解できてるかな?
これが分かるならP.140までは理解できているはず。つまりTenth Commandmentはコレクターを作れってことだよね。実行してみるとこうなる。
http://codepad.org/efWZQKk8
8章のテーマは確かに継続渡しなんだけど、無名関数で再帰することを上手にやるのがコレクターってこと。
9章のネタではさらに再帰のさせ方を工夫してやるとYコンビネータを作れるというお話。
P.137からP.140が理解できればコレクターとYコンビネータを両方とも理解できます。頑張れ。
■ このスレッドは過去ログ倉庫に格納されています