我有一些事实存储在文件 test.pl 中。
memory(0, 0, 0).
memory(0, 1, 0).
memory(0, 2, 0).
现在在同一个目录中,我启动 gprolog 并加载文件。
| ?- ['test.pl'].
compiling /home/cib/projects/prolog/test.pl for byte code...
/home/cib/projects/prolog/test.pl compiled, 3 lines read - 501 bytes written, 5 ms
yes
但它会奇怪地处理加载的事实。尝试查询其中之一:
| ?- memory(0, 1, 0).
true ? h
Action (; for next solution, a for all solutions, RET to stop) ? ;
no
就像它试图列出一些统一,只是没有变量可以统一。如果我用 [user] 指定事实,就没有问题。
| ?- [user].
compiling user for byte code...
memory(0, 1, 0).
user compiled, 2 lines read - 229 bytes written, 10237 ms
warning: user:1: redefining procedure memory/3
/home/cib/projects/prolog/test.pl:1: previous definition
yes
| ?- memory(0, 1, 0).
yes
我真的不知道发生了什么事。我试图寻找一些关于文件加载如何工作以及它与谷歌解释器有何不同的定义,但无济于事。