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

Hon*_*oon 27 prolog

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

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

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

friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).
Run Code Online (Sandbox Code Playgroud)

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

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

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

And*_*ahl 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
Run Code Online (Sandbox Code Playgroud)

gprolog手册在Consulting a Prolog程序一章中写到了这一点

  • 破解示例Grommit! (2认同)
  • 你也可以将你的谓词放在一个文件中并加载它像`gprolog --consult-file"my_predicates.pl"`,然后gprolog解析文件并在之后进入交互模式 (2认同)