2011-11-27 121 views

回答

5

谓词没有返回值。 你可以做什么来模拟一个返回值是添加另一种说法:

add_numbers(X,Y):- 
    Return is X+Y. 

将成为

add_numbers(X,Y,Return):- 
    Return is X+Y. 

,当你调用它,你将使用一个变量:

?- add_numbers(4,3,Result). 
Result = 7. 

请注意,您也可以这样称呼它:

?- add_numbers(4,3,7). 
true 

也:

?- add_numbers(4,3,8). 
false 

,但它是不可能做到的通话add_numbers(X,2,7,因为我们使用的运算。然而,很多谓词可以用于任何你想要的。例如,prolog有一个内置谓词append/3。 通常你会使用这样的:

?-append([1,2],[3,4],X). 
X=[1,2,3,4] 

,但你也可以使用这样的:

?- append(X,Y,[1,2,3]). 
X = [], 
Y = [1, 2, 3] ; 
X = [1], 
Y = [2, 3] ; 
X = [1, 2], 
Y = [3] ; 
X = [1, 2, 3], 
Y = [] 
+1

我建议你提到*限制*和举个例子所添加的普遍性:有约束,你可以在所有方向上执行算术,因为它们是算术表达式上的真实关系。 – mat

相关问题