七周后七种语言的Prolog存在错误

我只关注七周七语言一书 .

我使用命令 port install gprolog-devel 在我的Mac机器上安装了gprolog并运行第一个prolog代码 .

likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).

如果我在prolog解释器上输入 likes(wallace, cheese). ,我就有错误

未捕获的异常:错误(exist_error(procedure,likes / 2),top_level / 0) .

Prolog 1.3.1无法安装在我的Mac上,我正在使用prolog 1.4.0 .

回答(1)

3 years ago

交互式gprolog解释器针对加载的谓词列表运行查询,这就是您获得 existence_error 异常的原因 . 您必须将谓词加载到其中,方法是使用为您加载或手动执行加载的IDE .

这是一种方法:

| ?- [user].
compiling user for byte code...
likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).

* Press Ctrl-D to end input. *
user compiled, 6 lines read - 909 bytes written, 15538 ms

yes
| ?- friend(wallace,grommit).

yes
| ?- friend(wallace,wendolene).

no

gprolog手册在Consulting a Prolog program章节中写到了这一点 .