【问题标题】:Use of clpfd and fdbgclpfd 和 fdbg 的使用
【发布时间】:2013-07-07 17:52:54
【问题描述】:

我有以下使用 clpfd 的 Prolog 代码:

:- 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).

如果我运行 go/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-debugger,我不会得到 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 库中的错误还是我做错了什么?

【问题讨论】:

    标签: prolog sicstus-prolog clpfd


    【解决方案1】:

    这是库 (fdbg) 中的错误。它已针对即将推出的 SICStus 4.3 进行了修复。

    【讨论】:

      猜你喜欢
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      • 2016-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多