3
我在定义模块时遇到了一些问题。下面的代码的短路减少:在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])。怎么了 ?
编辑:正如我与这个代码现在玩和测试它作为一个模块,我想通了,这是完全窃听...
非常基本的序言问题:每个函数之后的'/'是什么?意思? – theonlygusti 2017-09-26 22:48:40
@theonlygusti它是谓词的arity。如果一个谓词需要1个参数,那么它的arity就是1.如果一个谓词需要3个参数,那么它的参数是3.谓词是true或false。 – 2017-10-22 13:38:35