2016-02-08 4 views
1

Я запускаю XSB Prolog на моем Mac (El Capitan 10.11.2): XSB Version 3.6. (Gazpatcho) от 22 апреля 2015 года [i386-apple-darwin15.2.0 64 бит; режим: оптимальный; двигатель: slg-wam; планирование: локальное] [Конструктивный: 2016-01-17]Проблема с мета-интерпретатором XSB Prolog с ограничениями 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 

 Смежные вопросы

  • Нет связанных вопросов^_^