Как создать факт в SWI-Prolog? - PullRequest
23 голосов
/ 03 ноября 2010

Я просто хочу создать что-то вроде: like(x,y). Я давно пытаюсь и очень расстроен, может кто-нибудь сказать, пожалуйста, как это сделать ??? !!!

Ответы [ 2 ]

43 голосов
/ 03 ноября 2010

Я предполагаю, что вы используете swi в интерактивном режиме, и попытка ввести факт приводит к ошибке, подобной этой:

1 ?- like(x, y).
ERROR: toplevel: Undefined procedure: like/2 (DWIM could not correct goal)

Поскольку факт отсутствует в базе данных.Если это так, попробуйте сначала подтвердить факт:

2 ?- assert(like(x,y)).
true.

Затем вы можете попытаться:

3 ?- like(x, y).
true.

На этот раз запрос будет выполнен успешно, поскольку факт существует в базе данных.*

Лучшим подходом было бы записать ваши предложения в файл и затем проконсультироваться с ними .В прологе Swi есть emacs-подобный редактор, который вы можете вызвать, набрав

emacs.

в командной строке.Или используйте свой собственный редактор, а затем обратитесь к файлу.Пролог Swi поставляется с множеством графических инструментов, которые могут быть полезны;см. руководство для получения более подробной информации.

0 голосов
/ 03 февраля 2019

Вы можете создать факты в файле пролога и загрузить их, используя функцию справки.

Например,

animals.pl

bigger(elephant, tiger).
bigger(tiger, rabbit).
bigger(rabbit, sparrow).
bigger(sparrow, ant).

Вы также можете использовать функцию assert для определения фактов в терминале пролога.

1 ?- assert(bigger(elephant, rabbit)).
true.

Для получения дополнительной информации обратитесь к этой ссылке .

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