在Prolog中定义模块

时间:2012-01-29 19:19:13

标签: module prolog

我在定义模块时遇到一些问题。这是代码的简短缩减:

:- 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(module_name,[predicate_name / arity])来完成公开谓词。怎么了?

编辑:因为我现在玩这个代码并将其作为一个模块进行测试,我发现它已经完全被错误了......

1 个答案:

答案 0 :(得分:5)

模块必须是第一个指令,并且必须只出现一次。

:- module(my_module, [word/1, alias_of/2]).
... etc...
相关问题