如何将结果存储到prolog中的变量?

chu*_*tsu 1 prolog

我似乎无法找到描述如何存储查询结果的资源,以便我可以将其用于下一个.

如何从查询中获取布尔值呢?

Tha*_*dis 5

谓词没有返回值.你可以做些什么来模拟一个返回值是另一个参数:

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)