В вашем коде несколько ошибок, правильный код выглядит так:
leaves(l(X), [X]).
leaves(b(B1, B2), L):- leaves(B1, L1), leaves(B2, L2), append(L1, L2, L).
Я думаю, что основной проблемой было использование _
. Это анонимная переменная, это означает, что «здесь может быть что угодно». И если у вас есть это дважды в одном члене, оба _
являются разными переменными.
Кроме того, у вас есть .
до append
вместо ,
. Мой интерпретатор Пролога (SWI-Prolog) сообщил о двух предупреждениях об одноэлементных переменных, их не следует игнорировать.