Como parênteses automaticamente expressões arbitrárias de haskell?

Estou aprendendo haskell e tenho muita dificuldade em analisar mentalmente muitas expressões de haskell que me deparei.

Obviamente, espero que, com prática suficiente, a análise mental do haskell se torne uma segunda natureza, mas, enquanto isso, para entender o que eu entendo, gostaria de encontrar uma maneira automática de traduzir um texto arbitrário " haskell padrão "1 expressão em que todos "ambíguos"2 as subexpressões foram eliminadas pela introdução dos parênteses necessários.

Por exemplo, traduziria a expressão

f g h i

...para dentro

((f g) h) i

... ou

a -> b -> c -> d

...para dentro

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

... etc.

De preferência, essa seria uma ferramenta que eu posso acessar com meu telefone, já que leio muito haskell longe de um computador adequado.

1Obviamente, nenhuma ferramenta desse tipo poderia funcionar com operadores personalizados de fixação e associatividade desconhecidas. Por "haskell padrão", quero dizer o material definido no prelúdio e na biblioteca haskell padrão.

2Estou usando "ambíguo" aqui como abreviação de "ambíguo na ausência de regras de precedência". Por exemplo.2 + 3 * 5 é ambíguoa menos que existe alguma regra de precedência que resolve a questão de qual das duas operações será executada primeiro.

questionAnswers(2)

yourAnswerToTheQuestion