我在定义模块时遇到一些问题.这是代码的简短缩减:
:- 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').
Run Code Online (Sandbox Code Playgroud)
当我查阅文件时,这是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])
Run Code Online (Sandbox Code Playgroud)
我想,从我读过的教程中,暴露谓词可以使用: - module(module_name,[predicate_name/arity])来完成.怎么了 ?
编辑:因为我现在玩这个代码并测试它作为一个模块,我发现它已经完全被错误...
module必须是第一个指令,并且必须只出现一次.
:- module(my_module, [word/1, alias_of/2]).
... etc...
Run Code Online (Sandbox Code Playgroud)