Implementando `read 'para un árbol asociativo a la izquierda en Haskell
Estoy teniendo dificultades para implementarLeer Para una estructura de árbol. Quiero tomar una cadena asociativa a la izquierda (con parens) comoABC(DE)F
y convertirlo en un árbol. Ese ejemplo particular corresponde al árbol.
.
Aquí está el tipo de datos que estoy usando (aunque estoy abierto a sugerencias):
<code>data Tree = Branch Tree Tree | Leaf Char deriving (Eq) </code>
Ese árbol en particular sería, en Haskell:
<code>example = Branch (Branch (Branch (Branch (Leaf 'A') (Leaf 'B')) (Leaf 'C')) (Branch (Leaf 'D') (Leaf 'E'))) (Leaf 'F') </code>
Mishow
la función se ve como:
<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>
Quiero hacer unread
función para que
<code>read "ABC(DE)F" == example </code>