kb84tkhrのブログ

何を書こうか考え中です あ、あと組織とは関係ないってやつです 個人的なやつ

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やるみたいだから先に進む