Мне трудно реализовать Read для древовидной структуры. Я хочу взять левую -ассоциативную строку (со скобками ), например ABC(DE)F
, и преобразовать ее в дерево. Этот конкретный пример соответствует дереву
.
Вот тип данных, который я использую (хотя я открыт для предложений):
data Tree = Branch Tree Tree | Leaf Char deriving (Eq)
Это конкретное дерево будет в Haskell:
example = Branch (Branch (Branch (Branch (Leaf 'A')
(Leaf 'B'))
(Leaf 'C'))
(Branch (Leaf 'D')
(Leaf 'E')))
(Leaf 'F')
Моя show
функция выглядит так:
instance Show Tree where
show (Branch l r@(Branch _ _)) = show l ++ "(" ++ show r ++ ")"
show (Branch l r) = show l ++ show r
show (Leaf x) = [x]
Я хочу сделать read
функционировать так, чтобы
read "ABC(DE)F" == example