1

ファイル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

しかし、ロードされた事実を奇妙に扱います。それらの1つを照会しようとしています:

| ?- memory(0, 1, 0).

true ? h
Action (; for next solution, a for all solutions, RET to stop) ? ;

no

いくつかの統合をリストしようとしているようですが、統合する変数がないだけです。[ユーザー]で事実を明記すれば問題ありません。

| ?- [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

何が起こっているのか本当にわかりません。ファイルの読み込みがどのように機能するか、およびGoogleのインタープリターとどのように異なるかについていくつかの定義を探してみましたが、役に立ちませんでした.

4

1 に答える 1