Reasoned Schemer (004) conde
disj2
の中にconj2
が現れるパターンはよく出てくるので、conde
式を導入する
(run* (x y)
(disj2
(conj2 (teacupo x) (teacupo x))
(conj2 (== #f x) (teacupo y))))
は
(run* (x y)
(conde
((teacupo x) (teacupo x))
((== #f x) (teacupo y))))
と書ける
条件分岐なのかというとピンとこないところもあるけど
確かに同じような感じではある
disj2
の代わりにconde
が使えるconde
の式はゴールがconj2
でなくても使える- ということは、
conde
があればconj2
やdisj2
は不要
逆に、連言や選言はすべてconde
で書きますよ、ってことだな
- The Law of conde
conde
の成功した式はすべて、一つ以上の値に貢献している
Scheme手習いの「掟」よりもなにかふわっとしている気がする
これで第1章は終わり
Playthingsは揃っただろうか
そういえばScheme手習いの第1章は「おもちゃ」だったか
Playthingsだったのかな