【发布时间】:2020-02-15 19:04:18
【问题描述】:
在 Prolog 中,这无疑是一个事实:
foo(bar).
这是一个明确的规则:
foo(X) :- bar(X).
但是如果一个子句既有非单例变量又没有 :- 例如
identity(X,X).
或者更实际的类似
my_member(X, [X|_]).
自从我学习 Prolog 以来,我一直在调用这些规则,但是现在我已经尝试检查以 100% 确定,我似乎找不到任何来源比我第一次拥有的更明显两个例子。
这是一个规则:
- 定义可变逻辑关系的子句,即不会总是成功的子句。
- 定义谓词(或可能是谓词与其自身)之间关系的子句。
【问题讨论】:
-
我会说这些都是事实。特别是因为这个来源:cs.trincoll.edu/~ram/cpsc352/notes/prolog/factsrules.html 说规则具有
... :- ...的形式,你的identity(X, X)不遵循这种模式。 -
一个事实是始终为真规则的语法糖,即
identity(X,X).与identity(X,X) :- true相同。谓词(也可以称为过程)是具有相同函子和元数的子句的集合。 -
@closer:这是一个完美的问题
-
@GuyCoder,啊。你那里的答案可能包含这里的答案,但它有点深埋在里面。 SO 的想法是给出明确的答案。
标签: prolog terminology iso-prolog