我目前正在研究 SICP 关于逻辑编程的部分,但我陷入了有关逻辑推导的示例中,尤其是附加到表单规则。它们是如何工作的?我不太明白的是第二条规则如何 cdr-downs 第一个列表。例如,给定:
(规则(附加到表单()?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))
我会对执行规则匹配所需的具体心理步骤感兴趣。
先感谢您。