我们如何从只有一个参数的 prolog 函数中返回一个值?前任。Leaf(V) 是一个函数,它应该返回一个值 V 并且它是从函数树中调用的(leav(V), sum)??
Prolog 没有函数求值,因此您必须将函数表示为关系
f(In,Out) :- ... define the relationship between In and Out in the body ...
Run Code Online (Sandbox Code Playgroud)
以平方为例:
square(X,Y) :- Y is X*X.
?- square(12,X).
X=144
Run Code Online (Sandbox Code Playgroud)
Prolog 中的“函数符号”纯粹是指称:它们用于构造术语:
f(x)
Run Code Online (Sandbox Code Playgroud)
上述术语没有内在含义或可解析性。它只是一个术语,更准确地说是一棵树
f
|
x
Run Code Online (Sandbox Code Playgroud)
Prolog 没有“函数”,它有“谓词”。即它们是对术语之间关系的描述。谓词只能评估为“真”或“假”。
然而,谓词评估为真或假的方式是通过统一,即 prolog 尝试从现有知识库(即您的源代码)中查找变量的实例,以使该谓词为真。
因此,您可以欺骗 Pred(In, Out) 形式的 prolog 谓词,这样,对于给定的“In” prolog 可以将“Out”与正确的值统一起来,使谓词为真。