Implementacja `read` dla lewego drzewa asocjacyjnego w Haskell
Trudno mi się wdrażaćCzytać dla struktury drzewa. Chcę wziąć lewy asocjacyjny ciąg (z parenami) jakABC(DE)F
i przekonwertuj go na drzewo. Ten konkretny przykład odpowiada drzewu
.
Oto typ danych, których używam (choć jestem otwarty na sugestie):
<code>data Tree = Branch Tree Tree | Leaf Char deriving (Eq) </code>
To konkretne drzewo byłoby w Haskell:
<code>example = Branch (Branch (Branch (Branch (Leaf 'A') (Leaf 'B')) (Leaf 'C')) (Branch (Leaf 'D') (Leaf 'E'))) (Leaf 'F') </code>
Mójshow
funkcja wygląda następująco:
<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>
Chcę zrobićread
tak to działa
<code>read "ABC(DE)F" == example </code>