Решение ограничений ртути

Я немного знаю Пролог и часто использую CLP(FD) и т. д. Эта статья ( написанный в 2006 году, по-видимому) указывает на то, что у Меркьюри теперь тоже есть решение ограничений. Я нашел несколько упоминаний об этом в Справочном руководстве по библиотеке. , я не могу найти, как его использовать. Например:

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'.

но в Прологе с помощью clpfd

A #>= 2, A #=< 2.

отлично работает, давая A = 2 .

(Добавление # к коду Mercury не помогает.)

Как вы решаете ограничения в Mercury?


person Erhannis    schedule 02.05.2019    source источник
comment
Мы добавили поддержку решения ограничений в Mercury, чтобы помочь проекту G12, который использовал его для создания MiniZinc, о котором вы можете прочитать и загрузить с сайта minizinc.org. Я считаю, что большая часть дальнейших разработок является собственностью; см. opturion.com.   -  person Zoltan Somogyi    schedule 18.11.2020
comment
@ZoltanSomogyi О, вы имеете в виду, что мы изначально добавили существующую поддержку решателей ограничений, как обсуждалось, чтобы помочь G12, и вот некоторые детали, или вы имеете в виду, что мы недавно добавили решатель ограничений в Mercury, чтобы помочь G12, и здесь какие-то детали, или вы имеете в виду что-то другое?   -  person Erhannis    schedule 18.11.2020


Ответы (1)


В этой статье НЕ говорится, что теперь вы можете решать ограничения в Mercury так же, как в Prolog. В нем описываются функции, добавленные в Mercury в то время для поддержки написания решателей ограничений в Mercury и затем использования полученных решателей, что сильно отличается.

В Mercury нет и не будет встроенных решателей ограничений.

person Zoltan Somogyi    schedule 29.02.2020
comment
О, вы правы - странно, очень легко неверно истолковать многие утверждения в документе, имея в виду решатели ограничений, а не решатели ограничений ПОДДЕРЖКА / ИНФРАСТРУКТУРА. Знаете ли вы, есть ли какие-нибудь хорошие библиотеки для решателей и где их найти? - person Erhannis; 17.03.2020