добавление поискового пути в пролог SWI - PullRequest
8 голосов
/ 13 июня 2011

Во многих системах Prolog легко добавить новый путь поиска для файла с консультациями.Например, в Yap предикат, который я знаю, это add_to_path (NewPath).Есть ли способ сделать то же самое в SWI Prolog?Мой вопрос конкретно касается добавления одного пути к уже существующим путям, мне известны предикат file_search_path / 2 для объявления каталогов и предикат cd / 1 для изменения текущего каталога, но я хотел бы знать, есть ли альтернативаметод, как тот, который я нашел в Yap.

заранее спасибо!

Ответы [ 2 ]

7 голосов
/ 27 июня 2011

Есть несколько механизмов для этого.Первый, который я встретил, был в C-Prolog , который действительно использовал предложения для library_directory/1.Текущий механизм SWI-Prolog является производным от Quintus и также используется в SICStus.Из подхода library_directory/1 обобщается обработка выражений вида <alias>(Path) как поиска по псевдониму пути <alias>.

Пути для псевдонима определяются с использованием предиката file_search_path / 2.Теперь library это просто псевдоним.Обычно библиотеки добавляются с помощью предложения file_search_path(library, Dir).

Этот механизм оказался довольно гибким.Конечно, было бы неплохо, если бы системы Prolog стали более совместимыми.Я думаю, что сегодня YAP также поддерживает систему file_search_path.(Редактирование 2016: Это действительно так, см. Руководство пользователя YAP Prolog: Изменение поведения компилятора )

7 голосов
/ 14 июня 2011

В вашем .plrc / .yaprc / .sicstusrc / .swiplrc:

 :- multifile(library_directory/1).
 library_directory('/home/ulrich/lftp/Prolog-inedit').
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...