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('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 必须是第一个指令,并且只能出现一次。

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

关于module - 在 Prolog 中定义模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9055977/

相关文章:

prolog - 更紧凑的定义

rest - 将文件管理到 modules/Sails.js

html - Iframe 未显示在 Drupal 站点中

angular - Angular 4 中的循环依赖

javascript - 带有 $http 注入(inject)的 angularjs 自定义模块

recursion - 用递归调用替换序言基本情况

list - 在Prolog中设置两个兼容列表的差异

prolog - Prolog中的树后序遍历

linux - 我的 Perl 模块已找到但未被应用

prolog - 如何在归纳逻辑编程中生成反例?