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

时间:2011-04-06 07:16:10

标签: 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 个答案:

答案 0 :(得分:38)

交互式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

章节中写到了这一点