Reasoned Schemer (48) 10章 disj2
(define (disj2 g1 g2)
(lambda (s) (append-inf (g1 s) (g2 s))))
goalはsubstitutionを取ってsubstitusionのstreamを返すもの
というのはあってる(当然
でこれってどういう意味なの
っていうかその前にsubstitusionのstreamってなんなのかってのがわかってない
まだ実例は==
とdisj2
しか出てきてないしな
ちょっとやってみても
> (disj2 (== x y) (== u v))
#<procedure:...r/minikanren.scm:44:2>
> ((disj2 (== x y) (== u v)) empty-s)
(((#(x) . #(y))) ((#(u) . #(v))))
(((#(x) . #(y))) ((#(u) . #(v))))
は
substitusionのstreamってなんなのかってことだし
わからんな
suspensionになってるところはどういう意味かなあ
ずっと計算してたんじゃ戻ってこないってことがあるのはわかるけど
じゃあどういうときにsuspensionにするのか
常に?
これもわからん
しばらくdisj2
やるみたいだから先に進む