Я не могу запустить этот код, что именно я должен сказать о списке, чтобы разрешить maplist/2
для запуска all_distinct/1
?Недостаточно для экземпляра списка (all_distinct, list)
Solution = [A, B, C, D, E, F, G, H, I],
Solution ins 1..9,
maplist(all_distinct, Solution).
Я получаю ERROR: Arguments are not sufficiently instantiated
. Я понимаю, что я недостаточно рассказываю о списке номеров, но я не знаю, что мне нужно сказать. Я хочу, чтобы список из 9 различных чисел от 1 до 9.
Вот след, когда я пытаюсь выполнить:
Call: (7) puzzle(_G548) ? creep
Call: (8) _G548=[_G656, _G659, _G662, _G665, _G668, _G671, _G674, _G677|...] ? creep
Exit: (8) [_G656, _G659, _G662, _G665, _G668, _G671, _G674, _G677|...]=[_G656, _G659, _G662, _G665, _G668, _G671, _G674, _G677|...] ? creep
Call: (8) clpfd: ([_G656, _G659, _G662, _G665, _G668, _G671, _G674|...]ins 1..9) ? creep
Call: (9) error:must_be(list, [_G656, _G659, _G662, _G665, _G668, _G671, _G674|...]) ? creep
Exit: (9) error:must_be(list, [_G656, _G659, _G662, _G665, _G668, _G671, _G674|...]) ? creep
Call: (9) clpfd:'__aux_maplist/2_fd_variable+0'([_G656, _G659, _G662, _G665, _G668, _G671, _G674|...]) ? creep
Call: (10) clpfd:fd_variable(_G656) ? creep
Call: (11) var(_G656) ? creep
Exit: (11) var(_G656) ? creep
Call: (11) true ? creep
Exit: (11) true ? creep
Exit: (10) clpfd:fd_variable(_G656) ? creep
Call: (10) clpfd:'__aux_maplist/2_fd_variable+0'([_G659, _G662, _G665, _G668, _G671, _G674, _G677|...]) ? creep
Похоже ins/2
может не работать, а затем еще выдав в maplist/2
? Я понятия не имею, что происходит.
На самом деле, 'type_error (список, X)' был бы более полезным – false
@false Вы, вероятно, следует сообщить об этом как ошибка –
@Boris: Filed 2013-08-08 as i3a # 314. Но это очень волосатая ситуация, поскольку переменная обычно не связана с ошибкой типа. Да, нет экземпляра, который был бы допустимым термином, поэтому ошибка типа, похоже, имеет большой смысл, но она все еще находится на грани. – false