4
如果我想使規則動態,所以我可以在數據庫文件加載後使用斷言,我該怎麼做?我使用XSB Prolog的此刻,該文件是這樣的:序言中的「動態」謂詞
:- dynamic likes/2
likes(mary,tom)
當我嘗試協商,XSB文件我得到一個錯誤:
任何想法?
如果我想使規則動態,所以我可以在數據庫文件加載後使用斷言,我該怎麼做?我使用XSB Prolog的此刻,該文件是這樣的:序言中的「動態」謂詞
:- dynamic likes/2
likes(mary,tom)
當我嘗試協商,XSB文件我得到一個錯誤:
任何想法?
動態謂詞按照您的預期工作,所以如果它不適合您,它還有其他錯誤。
如果test.P看起來是這樣的:
:- dynamic likes/2.
likes(mary,tom).
可以諮詢,然後更喜歡/ 2的事實可以斷言:
XSB Version 3.2 (Kopi Lewak) of March 15, 2009
[i686-pc-linux-gnu; mode: optimal; engine: slg-wam; scheduling: local; word size: 32]
| ?- consult('test.P').
[Compiling ./test]
[test compiled, cpu time used: 0.0440 seconds]
[test loaded]
yes
| ?- assert(likes(mary, bob)).
yes
| ?- likes(X,Y).
X = mary
Y = tom;
X = mary
Y = bob;
這就是真的相當奇怪 - 我也一樣東西,它會拋出這種奇怪的錯誤!我試圖理解,「不允許等等等等......」意思是! – KP65 2010-03-12 12:45:21
我剛剛用XSB 3.2版測試了相同的文件,它似乎工作正常,但我必須使用2.7.1作爲其他即時通訊使用似乎需要它(interprolog)..你可以嘗試在2.7.1和讓我知道你看到了什麼? 謝謝 – KP65 2010-03-12 13:06:58
我試過使用XSB 2.7,並且也得到了錯誤,所以自該版本以來行爲發生了變化。但是,我能夠用load_dyn('test.P')加載文件,它將整個文件加載爲動態而不是編譯它。 (從文件中刪除: - 動態行。)除了test.P.之外,還可以聲明更多的喜歡/ 2規則。有關加載動態代碼的文檔,請參閱此處:http://www.cs.sunysb.edu/~sbprolog/manual2/node5.html – 2010-03-12 19:10:46