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