我有存儲在一個文件test.pl.幾個事實如何在prolog文件中指定事實?
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
這就像它試圖列舉一些unifications,只是沒有變量統一。如果我用[用戶]指定事實,則沒有問題。
| ?- [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
我真的不知道發生了什麼事。我試圖尋找它是如何文件的加載工作以及如何從是對谷歌的解釋不同的一些定義,但無濟於事。
如果輸入三個你的事實根據'[用戶] .'你會真正得到相同的行爲使用文件'[「test.pl」] '。因此,行爲與存在多於一個事實斷言'memory'和它的整個斷言他們不同的方式是一致的。 – lurker