Реализация `read` для левоассоциативного дерева в Haskell
Мне трудно реализоватьЧитать для древовидной структуры. Я хочу взять левоассоциативную строку (с паренами), какABC(DE)F
и преобразовать его в дерево. Этот конкретный пример соответствует дереву
.
Вот тип данных, который я использую (хотя я открыт для предложений):
<code>data Tree = Branch Tree Tree | Leaf Char deriving (Eq) </code>
Это конкретное дерево будет в Хаскеле:
<code>example = Branch (Branch (Branch (Branch (Leaf 'A') (Leaf 'B')) (Leaf 'C')) (Branch (Leaf 'D') (Leaf 'E'))) (Leaf 'F') </code>
мойshow
функция выглядит так:
<code>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] </code>
Я хочу сделатьread
функционировать так, чтобы
<code>read "ABC(DE)F" == example </code>