kb84tkhrのブログ

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

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があればconj2disj2は不要

逆に、連言や選言はすべてcondeで書きますよ、ってことだな

  • The Law of conde
    condeの成功した式はすべて、一つ以上の値に貢献している

Scheme手習いの「掟」よりもなにかふわっとしている気がする

これで第1章は終わり
Playthingsは揃っただろうか
そういえばScheme手習いの第1章は「おもちゃ」だったか
Playthingsだったのかな