Module 在Prolog中定义模块

Module 在Prolog中定义模块,module,prolog,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('

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

:- 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\u name,[predicate\u name/arity])来公开谓词。怎么了

编辑:由于我现在使用了这段代码并将其作为一个模块进行了测试,我发现它完全被窃听了…

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

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

非常基本的序言问题:
/
在每个。。。功能?意思?@theonlygusti它是谓词的算术性。如果一个谓词接受1个参数,那么它的arity是1。如果一个谓词有3个参数,那么它的arity是3。谓词为真或假。