汞约束解决

时间:2019-05-02 02:49:32

标签: clp mercury

我对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中解决约束?

1 个答案:

答案 0 :(得分:0)

该论文没有说您现在可以在Mercury中进行约束求解 就像在Prolog中一样。它描述了添加到Mercury的功能 当时在Mercury中支持编写约束求解器,然后 then 使用结果求解器,这是完全不同的。

Mercury没有,也没有任何内置约束求解器。