私は現在、論理プログラミングに関するSICPのセクションで作業していますが、論理的推論、特にフォームへの追加ルールに関する例で立ち往生しています。それらはどのように機能しますか?私がよく理解していないのは、2番目のルールが最初のリストをどのようにcdr-downするかです。たとえば、次のようになります。
(ルール(フォームに追加()?y?y))
(ルール(フォームに追加(?u。?v)?y(?u。?z))(フォームに追加?v?y?z))
a)どのように連絡しますか:
;;; Query input:
(append-to-form (a b) (c d) ?z)
to
;;; Query results:
(append-to-form (a b) (c d) (a b c d))
b)そしてこれはどうですか:
;;; Query input:
(append-to-form (a b) ?y (a b c d))
to
;;; Query results:
(append-to-form (a b) (c d) (a b c d))
c)そして最後に:
;;; Query input:
(append-to-form ?x ?y (a b c d))
to
;;; Query results:
(append-to-form () (a b c d) (a b c d))
(append-to-form (a) (b c d) (a b c d))
(append-to-form (a b) (c d) (a b c d))
(append-to-form (a b c) (d) (a b c d))
(append-to-form (a b c d) () (a b c d))
ルールマッチングを実行するために必要な特定の精神的なステップに興味があります。
前もって感謝します。