Определение модуля в Прологе - PullRequest
4 голосов
/ 29 января 2012

У меня проблемы с определением модуля.Вот небольшое сокращение кода:

:- module(my_module, [word/1]).
:- module(my_module, [alias_of/2]).

alias_of(A, B) :-
        alias_of(A, C),
        alias_of(C, B).
alias_of('Word_1', 'Word_2').

word(A) :-
        alias_of(B, A),
        word(B).
word('Word_1').
word('Word_3').

И это вывод SWI-Prolog, когда я обращаюсь к файлу:

1 ?- ERROR: (i:/dev/prolog-workspace/trial.0.pro:2):
        Undefined procedure: my_module:module/2
            However, there are definitions for:
                module/1
Warning: (i:/dev/prolog-workspace/trial.0.pro:2):
        Goal (directive) failed: my_module:module(my_module, [alias_of/2])

Я думал, изв учебниках, которые я прочитал, что раскрытие предикатов может быть выполнено с использованием : - module (имя_модуля [имя-предиката / arity]) .Что не так?

РЕДАКТИРОВАТЬ: так как я играл с этим кодом сейчас и протестировал его как модуль, я понял, что он полностью прослушивается ...

1 Ответ

5 голосов
/ 30 января 2012

module должна быть первой директивой и должна появляться только один раз.

:- module(my_module, [word/1, alias_of/2]).
... etc...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...