Измените
[binaryTreeToRose left]++[binaryTreeToRose right]
(в любом случае, это ошибка) в вашей последней строке кода на
(binaryTreeToRose left ++ binaryTreeToRose right)
, измените тип функции на
binaryTreeToRose :: BinaryTree a -> [RoseTree a]
и соответственно измените другие случаи (также добавив новое предложение для случая Null
).
Ваш BinaryTree
может быть пустым (представлен Null
), но RoseTree
не может. Это означает, что мы не можем преобразовать первое в второе, а скорее в список из них.
Библиотека Haskell вызывает тип [RoseTree a]
a "Лес" . Таким образом, результатом преобразования будет лес розовых деревьев , содержащий либо одно, либо ноль из них (представляющий случай пустого двоичного дерева).
Наличие пустого дерева похоже надеревьев нет вообще. В любом случае нет фруктов.