Reasoned Schemer (85) alwayso
6. The Fun Never Ends …
この章(も)、1周目は消化不良気味だったけど今回はどうだろう
(defrel (alwayso) (conde (succeed) ((alwayso))))
とりあえず一回succeedしてさらにもう一度
ということはすんなりわかるようになった
Reasoned Schemer (82) appendo
appendo
はout
に結果をunifyするだけだから動き的に新しいところはない、かな?
(defrel (appendo l t out)
(conde
((nullo l) (== t out))
((fresh (a d res)
(conso a d l)
(appendo d t res)
(conso a res out)))))
たとえば
続きを読むReasoned Schemer (81) Chapter 3 残り
defrel
もわかったことにするとだいたいわかった感じになるかなあ
> (run 5 x (lolo `((a b) (c d) . ,x)))
'(() (()) ((_0)) (() ()) ((_0 _1)))
こういうのもまじめに追いかければなぜこの順になるかわかるはずだけどそこまで元気は出ない
defrel
のlambda ()
とdisj2
の(append-inf t-inf (s-inf))
が複雑で
Reasoned Schemer (80) delrel再考
ところで(run 1 x (listo ``(a b c . ,x)))
はdefrel
にlambda ()
がないと帰ってこない
やっとlambda ()
の存在意義を確認