1

我在 Fedora 17 Linux 机器上运行 gprolog 1.4.2 版。

我写了一个运行良好的小型 prolog 程序。我在其中定义了一些谓词,我想将它们提升出来并在其他 prolog 程序中使用。所以我想我会把它们放在一个单独的文件中并使用include指令(在 1.4.2 版 GNU Prolog 手册的第 7.1.8 节中定义)。但是,它没有用。gprolog说那些谓词(在包含的文件中)是未定义的。

所以在 gprolog 提示符下我输入:

| ?- include('tools.pro').

我得到:

uncaught exception: error(existence_error(procedure,include/1),top_level/0

所以它显然不能识别指令。我已经搜索了所有内容,但找不到发生这种情况的任何原因。对此有什么想法吗?

4

2 回答 2

1

正如 ISO Prolog 标准中所指定的,include/1是一个指令,而不是一个谓词。GNU Prolog 严格遵循官方标准,因此您不能include/1用作谓词,包括在顶级查询中。正如 Sergey 解释的那样,如果你想加载你的程序,你可以使用内置谓词consult/1或其快捷方式 ( [Fie1, File, ...])。

要在源文件中使用 include/1 指令,请将其写在运算符前面(:-)/1。例如:

:- include('tools.pro').
于 2013-06-04T20:01:21.407 回答
0

include/1用于在 Prolog 源文件中使用。

在查询提示中,您可能只想查阅源文件:['tools.pro'].

于 2013-06-04T01:35:49.660 回答