Reasoned Schemer (64) 読み返し10章(続き)
まだイメージしきれないのは
(append-inf s-inf t-if)
で
(lambda () (append-inf t-inf (s-inf)))
するところかな
たぶん↓とかもそういうところなんだよな
(run 12 l (proper-membero'tofu l))
の値の順番がなぜこうなるのか謎
append-inf
の続きあたりからもう一度読んでみよう
たぶんこのへんがそれを説明しようとしているところ
まずはnevero
から
ここは大丈夫なはず・・・
((nevero) empty-s)
= ((lambda (s) (lambda () ((nevero) s))) empty-s)
= (lambda () ((nevero) empty-s))
何度評価しても(lambda () *1しか返ってこないから
no valueってことだよな
えーとこういう感じか
(run-goal 1 (nevero))
= (take-inf 1 ((nevero) empty-s))
= (take-inf 1 (lambda () ((nevero) empty-s)))
= (take-inf 1 ((lambda () ((nevero) empty-s))))
= (take-inf 1 ((nevero) empty-s))
= (take-inf 1 ((lambda () ((nevero) empty-s))))
= ...
次からappend-inf
が登場
うまく追っかけられるだろうか
*1:nevero) empty-s