Implementierung von "read" für einen linksassoziativen Baum in Haskell
Es fällt mir schwer, das umzusetzenLesen für eine Baumstruktur. Ich möchte gerne eine linksassoziative Zeichenfolge (mit Parens) nehmenABC(DE)F
und wandle es in einen Baum um. Dieses spezielle Beispiel entspricht dem Baum
.
Hier ist der Datentyp, den ich verwende (obwohl ich offen für Vorschläge bin):
<code>data Tree = Branch Tree Tree | Leaf Char deriving (Eq) </code>
Dieser bestimmte Baum wäre in Haskell:
<code>example = Branch (Branch (Branch (Branch (Leaf 'A') (Leaf 'B')) (Leaf 'C')) (Branch (Leaf 'D') (Leaf 'E'))) (Leaf 'F') </code>
Meineshow
Funktion sieht so aus:
<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>
Ich möchte eine machenread
funktionieren damit
<code>read "ABC(DE)F" == example </code>