Prolog
3 Articles
-
[Learn Prolog Now 3] Recursion
| 本文英文原文: http://www.learnprolognow.org/ 并会增加自己在Imperial学习中的一些想法,因为自己已经熟悉Prolog,并非完整翻译。
基础
当我们写一个递归的谓词逻辑时,应该至少包含两个子句:一个是基础子句(用于在某些条件下停止递归),另一个是递归子句。如果没有这样做,那么Prolog就会陷入死循环中。
-
[Learn Prolog Now 2] Unification and Proof Search
| 本文英文原文: http://www.learnprolognow.org/ 并会增加自己在Imperial学习中的一些想法,因为自己已经熟悉Prolog,并非完整翻译。
合一
如果term1和term2都是常量,那么term1和term2能够合一,当且仅当它们是相同的原子,或者相同的数字。
如果term1是变量并且term2是任意类型的语句,那么term1和term2能够合一,并且term1被初始化为term2;同理,如果term2是变量并且term1是任意类型的语句,那么term1和term2能够合一,并且term2被初始化为term1。(如果两个都是变量,他们都能够被互相初始化,即它们共享相同的值)
如果term1和term2都是复杂语句,那么它们能够合一当且仅当:
3.1 它们有相同的函子和元数;
3.2 所有对应的参数能够合一;
3.3 变量的初始化能够匹配。(比如,如果两个复杂语句在进行合一,不可能在一个复杂语句中将X初始化为mia,在另外一个复杂语句中将X初始化为vincent)
两个语句能够合一当且仅当它们遵循上面三个定义之一。
-
[Learn Prolog Now 1] Facts, Rules, and Queries
| 本文英文原文: http://www.learnprolognow.org/ 并会增加自己在Imperial学习中的一些想法,因为自己已经熟悉Prolog,并非完整翻译。