谓词没有返回值.你可以做些什么来模拟一个返回值是另一个参数:
add_numbers(X,Y):-
Return is X+Y.
Run Code Online (Sandbox Code Playgroud)
会成为
add_numbers(X,Y,Return):-
Return is X+Y.
Run Code Online (Sandbox Code Playgroud)
当你调用它时,你将使用一个变量:
?- add_numbers(4,3,Result).
Result = 7.
Run Code Online (Sandbox Code Playgroud)
请注意,你也可以像这样调用它:
?- add_numbers(4,3,7).
true
Run Code Online (Sandbox Code Playgroud)
但是也:
?- add_numbers(4,3,8).
false
Run Code Online (Sandbox Code Playgroud)
但add_numbers(X,2,7由于我们使用了算术,因此无法进行调用.但是,你可以使用很多谓词.
例如,prolog有一个内置的谓词叫做append/3.通常你会像这样使用它:
?-append([1,2],[3,4],X).
X=[1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
但你也可以像这样使用它:
?- 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 = []
Run Code Online (Sandbox Code Playgroud)