我对Prolog有点了解,并且经常使用CLP(FD)等。This paper(显然写于2006年)表明Mercury现在也具有约束解决方案。我在Library Reference Manual.中找到了一些提及,但是我找不到如何使用它。例如:
main(!IO) :-
A >= 2,
A =< 2,
io.write(A, !IO).
给出编译器错误
test1.m:011: In clause for `main(di, uo)':
test1.m:011: in argument 1 of call to predicate `int.>='/2:
test1.m:011: mode error: variable `A' has instantiatedness `free',
test1.m:011: expected instantiatedness was `ground'.
但在Prolog中,带有clpfd,
A #>= 2, A #=< 2.
工作正常,给出A = 2。
(在水星代码中添加#无效。)
您如何在Mercury中解决约束?
答案 0 :(得分:0)
该论文没有说您现在可以在Mercury中进行约束求解 就像在Prolog中一样。它描述了添加到Mercury的功能 当时在Mercury中支持编写约束求解器,然后 then 使用结果求解器,这是完全不同的。
Mercury没有,也没有任何内置约束求解器。