Как сделать больше путей видимыми в пакете SWI-Prolog? - PullRequest
0 голосов
/ 21 мая 2019

Я относительно новичок в пакетах SWI-Prolog.Я уже сделал несколько, и я обычно кладу код Пролога в папку prolog, как здесь:

+- prolog
     +- hello.pl

Затем я мог бы использовать :- use_module(library(hello)), чтобы загрузить модуль hello.Я называю папку prolog основным корнем пакета.

Как я собираюсь указать и / или создать рабочие боковые корни?Например, если я хочу сохранить несколько модулей базы данных в отдельной папке:

+- prolog
|    +- hello.pl
+- database
     +- rivers.pl
     +- cities.pl

Какой рекомендуемый подход?Привет изнутри я могу попробовать :- use_module('../database/rivers'), это сработает?Боюсь, что я еще не пробовал, скорее спрашиваю рекомендации.

С наилучшими пожеланиями

1 Ответ

0 голосов
/ 21 мая 2019

Хорошо, я собирался найти другое решение.Я использовал подкаталог внутри каталога пролога.Таким образом, я могу получить доступ к текстам Prolog внутри подкаталога через :- use_module(database/rivers), без кавычек по пути:

+- prolog
     +- database
     |   +- rivers.pl
     |   +- cities.pl
     +- hello.pl

Одной из проблем была совместимость кода с другой системой Prolog.Что помогло, так это условная компиляция, функция, реализованная через расширение терминаЯ мог бы начать, например, текст Пролога рек следующим образом:

:- if(current_prolog_flag(dialect, jekejeke)).

:- package(library(database)).

:- endif.

:- module(rivers, [river/2]).
...