Как сохранить результат в переменной в прологе? - PullRequest
1 голос
/ 27 ноября 2011

Я не могу найти ресурс, который описывает, как можно сохранить результат запроса, чтобы я мог использовать его для следующего.

А как насчет простого получения логического значения из запроса?

1 Ответ

5 голосов
/ 27 ноября 2011

Предикат не имеет возвращаемого значения. Чтобы смоделировать возвращаемое значение, вы можете добавить еще один аргумент:

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 невозможно, потому что мы использовали арифметику. тем не менее, вы можете использовать много предикатов.

например, в прологе есть встроенный предикат с именем 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 = []
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...