2013-07-07 12 views
2

У меня есть следующий Prolog код, который использует clpfd:Использование clpfd и fdbg

:- use_module(library(clpfd)). 
:- use_module(library(fdbg)). 

go(X , Y ) :- 
X = [X1,X2], 

X1 in 0..10, 
X2 in 0..10, 
Y in -1..1, 

X1 #= X2 #<=> IsNoChange, 
X1 #> X2 #<=> IsDown, 
X1 #< X2 #<=> IsUp, 
((IsNoChange #=1 #/\ Y #=0) #\/ (IsDown #=1 #/\ Y #= -1) #\/ (IsUp #=1 #/\ Y #=1)), 

labeling([], X). 

Если я запускаю идти/2 предикат работает, как ожидалось:

| ?- go([1,2],Y). 
Y = 1 ? 
yes 
| ?- go([3,2],Y). 
Y = -1 ? 
yes 
| ?- 
| ?- go(X,Y). 
X = [0,0], 
Y = 0 ? 
yes 
| ?- 

Но если я теперь включить fdbg-отладчик не получает значения для Y:

| ?- fdbg_on([file('fdbg.log',write) ]). 
% The clp(fd) debugger is switched on 
yes 
% advice 
| ?- go(X,Y).       
X = [0,0], 
Y in-1..1 ? 
yes 
% advice 

Является ли это ошибка в fdbg-библиотеке или я делаю что-то не так?

ответ

2

Это ошибка в библиотеке (fdbg). Он был исправлен для предстоящего SICStus 4.3.

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

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