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

时间:2011-11-27 17:43:48

标签: prolog

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

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

1 个答案:

答案 0 :(得分: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 = []