Implementando `read` para uma árvore associativa à esquerda em Haskell
Estou com dificuldades para implementarLer para uma estrutura de árvore. Eu quero pegar uma corda associativa à esquerda (com parênteses) comoABC(DE)F
e convertê-lo em uma árvore. Esse exemplo específico corresponde à árvore
.
Aqui está o tipo de dados que estou usando (embora esteja aberto a sugestões):
<code>data Tree = Branch Tree Tree | Leaf Char deriving (Eq) </code>
Essa árvore em particular seria, em Haskell:
<code>example = Branch (Branch (Branch (Branch (Leaf 'A') (Leaf 'B')) (Leaf 'C')) (Branch (Leaf 'D') (Leaf 'E'))) (Leaf 'F') </code>
Minhasshow
função parece com:
<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>
Eu quero fazer umread
função de modo que
<code>read "ABC(DE)F" == example </code>