Точные операции для получения нескольких решений в SWI-Prolog - PullRequest
0 голосов
/ 31 октября 2018

Расширение это вопрос, какие нажатия клавиш необходимы для создания нескольких решений для SWI-Prolog?

Тестовый код:

test(10).
test(1).

Попытка взаимодействия:

?-test(X). // <- entered query

* нажатие enter производит следующее:

?-test(X).
X = 10.

?- // <- typing prompt here, pressing ";" here enters semi-colon character in new line.

Согласно инструкции:

Пользователь может ввести точку с запятой (;) или пробел, если он хочет другое решение. Используйте клавишу возврата, если вы не хотите видеть больше ответов. Prolog завершает вывод с полной остановкой (.), Если пользователь использует клавишу возврата или Prolog знает, что больше нет ответов. Если Пролог не может найти (больше) ответов, он пишет false.

Когда следует нажимать эти клавиши (точка с запятой / пробел), чтобы программы давали несколько решений вместо запуска нового запроса?

1 Ответ

0 голосов
/ 31 октября 2018

Когда вы видите

X = 10. 

?- 

( с периодом, который уже появляется), это означает, что точка была напечатана самим Прологом, чтобы показать, что решений больше нет; на этом этапе взаимодействие с запросом уже завершено , и оно ожидает вашего следующего запроса, как указано в подсказке ?-.

Если бы Пролог «подумал», что может быть большим количеством решений, то вы увидите X = 10 _пробелом после 0), и он будет ждать вашего нажатия клавиши, с курсором _ все еще на этой строке, без отображения подсказки. И если бы вы бы нажали точку в этой точке, прервав поиск других решений себя , расшифровка показала бы

X = 10 <b>.</b>     % notice the space

?-
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...