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>

Antworten auf die Frage(3)

Ihre Antwort auf die Frage