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-библиотеке или я делаю что-то не так?