Как создать факт в SWI-Prolog?
Я просто хочу создать что-то вроде: like(x,y)
, Я давно пытаюсь и очень расстроен, может кто-нибудь сказать, пожалуйста, как это сделать???!!!
2 ответа
Я предполагаю, что вы используете 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 поставляется с множеством графических инструментов, которые могут помочь; Посмотрите руководство для более подробной информации.
Вы можете создать факты в файле пролога и загрузить их, используя функцию consult.
Например,
animals.pl
bigger(elephant, tiger).
bigger(tiger, rabbit).
bigger(rabbit, sparrow).
bigger(sparrow, ant).
Вы также можете использовать функцию assert для определения фактов в терминале пролога.
1 ?- assert(bigger(elephant, rabbit)).
true.
Перейдите по этой ссылке, чтобы получить больше информации.