Это связано с тем, что ваш paths Tip = [[]]
возвращает список с одним элементом: пустой список.
Таким образом, это означает, что для Bin Tip 4 (Bin Tip 3 Tip)
, например,paths left
, таким образом, вернет [[]]
, и вы добавите к этому списку 4
, поэтому будет получен [4]
.
Если вы измените это значение на paths Tip = []
, вы исправите проблемус тех пор он не даст элемента:
paths :: Tree a -> [[a]]
<b>paths Tip = []</b>
paths (Bin Tip x Tip) = [[x]]
paths (Bin left x right) = map (x:) (paths left ++ paths right)