Краткий ответ : [A]
является списком singleton , но соответствующий элемент [a,b,c]
имеет три элемента.
Вы стремитесь к совпадению [[A], B, C]
с [[a,b,c], [d,e,f], 1]
. Таким образом, это означает, что вы хотите сопоставить список с тремя элементами с [[a,b,c], [d,e,f], 1]
. Кроме того, это означает, что вы хотите сопоставить [A] = [a,b,c]
, B = [d,e,f]
и C = 1
. Однако [A]
может не совпадать с [a,b,c]
, поскольку [A]
означает список singleton .
Вы, вероятно, хотите сопоставить это с [A,B,C]
вместо:
?- [[A],B,C]=[[a,b,c],[d,e,f],1].
false.
?- [A,B,C]=[[a,b,c],[d,e,f],1].
A = [a, b, c],
B = [d, e, f],
C = 1.
Если вы хотите сопоставить с непустым списком, с A
первым элементом, вы можете сопоставить это с [A|_]
вместо:
?- [[A|_],B,C]=[[a,b,c],[d,e,f],1].
A = a,
B = [d, e, f],
C = 1.