2016-02-08 44 views
1

我在我的Mac上运行XSB Prolog(El Capitan 10.11.2): XSB版本3.6。 (Gazpatcho)2015年4月22日 [i386-apple-darwin15.2.0 64位;模式:最佳;引擎:slg-wam;调度:本地] [生产日期:2016年1月17日]XSB Prolog meta解释器与clpr约束问题

我使用的CLPR包,并希望写一个小元解释:

:- [clpr]. 
try((G1,G2)):- !, try(G1), try(G2). 
try((G1; G2)):- !, try(G1); try (G2). 
try(true):- !. 
try({X}):- !, {X}. 
try(G):- clause(G, Body), try(Body). 

然而,try({X=1+2})不工作 - 它不符合第四条款,并下降到第五条款。

任何想法为什么?

回答

0

嗯,看来,如果一个加载文件包含代码load_dyn(test)代码的作品。 (如果我只是咨询文件,它不工作,即与[test]加载

0

这确实是奇怪如果您reconsult你的代码两次,然后你得到预期的结果:。

XSB Version 3.6. (Gazpatcho) of April 22, 2015 
[i386-apple-darwin15.3.0 64 bits; mode: optimal; engine: slg-wam; scheduling: local] 
[Build date: 2016-02-07] 

| ?- reconsult(xsbb). 
[xsbb loaded] 
[clpr loaded] 
[dump loaded, cpu time used: 0.0010 seconds] 
[itf loaded] 
[geler loaded] 
[class loaded] 

yes 
| ?- reconsult(xsbb). 
[xsbb loaded] 
[clpr loaded, cpu time used: 0.0010 seconds] 
[dump loaded] 
[itf loaded] 
++Warning[XSB]: [Runtime/P] replacing previous verify_attribute_handler for module itf 
[geler loaded] 
++Warning[XSB]: [Runtime/P] replacing previous verify_attribute_handler for module geler 
[class loaded] 
++Warning[XSB]: [Runtime/P] replacing previous verify_attribute_handler for module class 
++Warning[XSB]: [Runtime/P] replacing previous constraint_portray_hook for module clpr 

yes 
| ?- try({X=1+2}). 

X = 3.0000 

yes