[Child]
(список из 1 элемента) не может быть объединен с [c(1,1,p(1,2)),[]]
(список из 2 элементов).
Вот почему он не работает.
Вы можете вручную проверить винтерактивный интерпретатор, который эти два термина не могут объединить:
?- addAChild([Child],[],[Child]) = addAChild([c(1,1,p(1,2)),[]],[],A).
false.
и затем вы можете рекурсивно проверить, какая часть неисправна.
Имя термина (addAChild
) и арность (3), поэтому мы можем исключить эту проблему.
Затем приступим к объединению каждого аргумента:
?- [Child] = A.
A = [Child].
?- [] = [].
true.
?- [Child] = [c(1,1,p(1,2)),[]].
false.