В прологе GNU с ограничениями: у меня есть список, который для N = 5 (например) выглядит так: [3*(1-_#0(0..1)),2*(1-_#18(0..1)),1*(1-_#36(0..1)),4*(1-_#54(0..1)),2*(1-_#72(0..1))]
Я работаю над средой ограничения конечной области, и я пробовал этот max_list (MaxFilter, M0),
и я получил эту ошибку (поскольку в данный момент переменная не имеет значения) неперехваченное исключение: error (type_error (Assessment, _ # 4195373 (0..1)), (= ‹) / 2)
В Eclipse я бы использовал eval, а в SWI я использовал этот предикат
lmax([H|T], X):-
foldl(max_, T, H, Exp),
X #= Exp.
max_(E, X, max(E, X)).
но я не нашел в GNU эквивалента foldl.
Что я должен делать? Любые идеи? Я застрял и искал по всему Интернету несколько дней ...
На самом деле я хочу найти максимум этого списка, когда происходит разметка списка решений (в самом конце моего основного предиката). Когда это произойдет, переменные в списке, который я пытаюсь найти максимум, будут иметь значение (это те же переменные, в приведенном выше примере у меня Sol = [_ # 0 (0..1), _ # 18 (0..1), ...]). Но код никогда не достигает этой точки, так как выдает ошибку, когда я пытаюсь найти максимальное значение.