Я полностью заблудился о том, как сделать некоторые преобразования деревьев в Haskell. Мне нужно идти от розового дерева, определенного как:
data Rose a = Node a [Rose a] deriving (Eq, Show, Ord)
в двоичное дерево, которое определяется как:
data Btree a = Empty | Fork a (Btree a) (Btree a) deriving (Eq, Show, Ord)
В моем классе мне дали функцию, которая похожа, но использует другое определение двоичного дерева. Для этой функции розовое дерево определено так же, а двоичное дерево определено как:
Btree a = Leaf a | Fork (Btree a) (Btree a)
с функцией от розового дерева до бинарного дерева, определенной как:
toB :: Rose a -> Btree a
toB (Node x xts) = foldl Fork (Leaf x) (map toB xts)
toB (Node x []) = foldl Fork (Leaf x) []
У меня есть ответ, но я не знаю, как преобразовать его, чтобы он работал с новым определением Btree
.