我试图运行一个简单的gprolog在我的Linux机器上运行,GNU Prolog是从Ubuntu软件中心安装的.
从GNU Prolog Intro我得到了以下示例,存储在HelloWorld.pl.
parent(hank,ben).
parent(hank,denise).
parent(irene,ben).
parent(irene,denise).
parent(alice,carl).
parent(ben,carl).
parent(denise,frank).
parent(denise,gary).
parent(earl,frank).
parent(earl,gary).
grandparent(X,Z):-parent(X,Y),parent(Y,Z).
ancestor(X,Y):-parent(X,Y).
ancestor(X,Y):-parent(Z,Y),ancestor(X,Z).
Run Code Online (Sandbox Code Playgroud)
我开始gprolog,输入[HelloProlog].并得到以下错误:
| ?- [HelloProlog].
uncaught exception: error(instantiation_error,consult/1)
Run Code Online (Sandbox Code Playgroud)
即使我没有从文件加载代码但是以交互方式运行它我得到一个错误:
uwe@z11:~/desktop$ gprolog
GNU Prolog 1.3.0
By Daniel Diaz
Copyright (C) 1999-2007 Daniel Diaz
| ?- parent(Luke,Anakin).
uncaught exception: error(existence_error(procedure,parent/2),top_level/0)
| ?-
Run Code Online (Sandbox Code Playgroud)
我的装置坏了还是我做错了什么?
在Prolog中,变量以大写字母(或下划线)开头,因此您实现了目标的实例化错误[HelloProlog].简单地使用['HelloProlog'].即将文件路径表示为Prolog原子,当它们以大写字母开头时需要单引号.
你得到的存在错误只是因为查询一个谓词没有定义.您需要先加载HelloWorld.pl文件.