Я пытаюсь выучить Меркурий .Я возился со списками, но я не могу заставить работать, казалось бы, простое объединение.Вот мой уменьшенный пример:
main(!IO) :-
[X,Y] = List,
List = [1,2], % Error
io.write(List, !IO),
io.nl(!IO).
В строке List = [1,2]
я получаю следующую ошибку (отформатированную и слегка отредактированную):
main.m:024: In clause for `main(di, uo)':
mode error in unification of `List' and `list.[V_11 | V_21]'.
Variable `List' has instantiatedness
`unique(list.'[|]'(free, unique(list.'[|]'(free, unique((list.[]))))))',
term `list.[V_11 | V_21]' has instantiatedness
`list.'[|]'( unique(1), free )'.
Это не кажется правильным, хотя;в частности, экземпляр [1,2]
.Это буквально;не должно ли его создание быть, например, list.'[|]'( unique(1), list.'[|]'( unique(2), [] ) )
?
Связано ли это как-то с той же проблемой частичного создания экземпляров, что и здесь ?