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