我在Fedora 17 Linux机器上运行gprolog 1.4.2版本。
我写了一个运行良好的小序言程序。我在其中定义了一些谓词,我想在其他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
所以它显然不能识别指令。我到处都找遍了,但找不到发生这种事的任何理由。对此有什么想法吗?
根据ISO Prolog标准的规定,include/1
是指令,而不是谓词。GNU Prolog严格遵循官方标准,因此您不能将include/1
用作谓词,包括在顶级查询中。谢尔盖解释说,如果你想加载你的程序,你可以使用内置谓词consult/1
或它的快捷方式([Fie1, File, ...]
)。
要在源文件中使用include/1指令,请在其前面加上(:-)/1
操作符。例如:
:- include('tools.pro').
include/1
用于Prolog源文件。
在查询提示符中,您可能只想查阅源文件:['tools.pro'].