Wie werden beliebige Hashkell-Ausdrücke automatisch in Klammern gesetzt?

Ich lerne haskell und habe große Schwierigkeiten, viele haskell-Ausdrücke, auf die ich stoße, mental zu analysieren.

Natürlich erwarte ich, dass das mentale Analysieren von Haskell mit genügend Übung zur Selbstverständlichkeit wird, aber in der Zwischenzeit möchte ich einen automatischen Weg finden, um eine beliebige zu übersetzen, um einen Sinn für das zu finden, was mir begegnet "standard haskell"1 Ausdruck in einen, in dem alle "mehrdeutigen"2 -Unterausdrücke wurden durch Einfügen der erforderlichen Klammern entfernt.

Zum Beispiel würde es den Ausdruck @ übersetz

f g h i

...i

((f g) h) i

..., ode

a -> b -> c -> d

...i

a -> (b -> (c -> d))

..., etc

Bevorzugt ist dies ein Tool, auf das ich mit meinem Telefon zugreifen kann, da ich einen Großteil meiner Lektüre auf haskell außerhalb eines geeigneten Computers mache.

1 Natürlich kann ein solches Tool möglicherweise nicht mit benutzerdefinierten Operatoren mit unbekannter Genauigkeit und Assoziativität zusammenarbeiten. Mit "standard haskell" meine ich die Sachen, die im Vorspiel und in der standard haskell library definiert sind.

2 Ich verwende hier "mehrdeutig" als Abkürzung für "mehrdeutig, wenn keine Vorrangregeln vorhanden sind". Z.B.2 + 3 * 5 ist nicht eindeutiges sei den Es gibt eine Vorrangregel, die die Frage regelt, welche der beiden Operationen zuerst ausgeführt wird.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage