【问题标题】:Defining a module in Prolog在 Prolog 中定义一个模块
【发布时间】:2012-01-30 04:21:22
【问题描述】:

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

:- 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]) 来公开谓词。怎么了?

编辑:当我现在使用此代码并将其作为模块进行测试时,我发现它完全有问题...

【问题讨论】:

    标签: module prolog


    【解决方案1】:

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

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

    【讨论】:

    • 非常基本的序言问题:每个 ... 之后的 / 有什么作用?什么意思?
    • @theonlygusti 它是谓词的数量。如果一个谓词有 1 个参数,那么它的元数是 1。如果一个谓词有 3 个参数,那么它的元数是 3。一个谓词是真或假。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多