Как создать факт в 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.

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

Другие вопросы по тегам