我们如何从只接受一个参数的prolog函数返回一个值?防爆。 leaf(V)是一个函数,它应该返回一个值V并从函数树中调用它(leav(V),sum)?
答案 0 :(得分:4)
Prolog没有"功能",它有"谓词"。即它们是术语之间关系的描述。谓词只能 评估为" true"或"假"。
但是,谓词评估为真或假的方式是通过统一,即prolog尝试从现有知识库(即您的源代码)中查找变量的实例,这将使该谓词成立。
因此,你可以欺骗形式为Pred(In,Out)的prolog谓词,这样,对于给定的" In" prolog可以统一" Out"使用正确的值使谓词成立。
答案 1 :(得分:3)
Prolog没有功能评估,因此您必须将您的功能表示为关系
f(In,Out) :- ... define the relationship between In and Out in the body ...
例如平方:
square(X,Y) :- Y is X*X.
?- square(12,X).
X=144
"功能符号"在Prolog中纯粹是指称性的:它们用于构建术语:
f(x)
上述术语没有固有的含义或可解决性。它只是一个术语,更确切地说是一棵树
f
|
x