How to create a fact in SWI-Prolog?

В скобочных обозначениях могут использоваться переменные, поэтому это полезно в двух случаях, когда точечные обозначения не будут работать:

1) Когда имена свойств определяются динамически (когда точные имена не известны до времени выполнения).

2) При использовании цикла for..in, чтобы просмотреть все свойства объекта.

источник: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Working_with_Objects

25
задан false 3 February 2014 в 00:08
поделиться

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.

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

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

emacs.

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

44
ответ дан 28 November 2019 в 21:05
поделиться

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

Например,

animals.pl

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

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

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

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

0
ответ дан 28 November 2019 в 21:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: