Welche Haskell (GHC) -Erweiterungen sollten Benutzer verwenden / vermeiden?

Ich hatte ein paar Mal die Erfahrung, dass GHC mir sagte, ich solle eine Erweiterung verwenden, und stellte dann fest, dass ich bei der Verwendung dieser Erweiterung den Code weitaus komplexer gemacht habe, als ein einfacher Refaktor es mir erlaubt hätte, bei Haskell 98 (jetzt) ​​zu bleiben2010) und haben eine einfachere Lösung.

Andererseits gibt es auch Zeiten, in denen GADTs oder Rank2Types (selten RankNTypes) für viel weniger Arbeit und viel saubereren Code sorgen.

Welche Erweiterungen verschleiern im Allgemeinen die Möglichkeit eines besseren Designs und welche verbessern es im Allgemeinen? Wenn es einige gibt, die beides tun, wonach sollte ein Benutzer suchen (stellen Sie sicher, dass dies für die beabsichtigte Lösung zutrifft oder nicht), bevor er sich für diese Erweiterung entscheidet?

(Siehe auchSoll ich GHC Haskell-Erweiterungen verwenden oder nicht?)

Antworten auf die Frage(1)

Ihre Antwort auf die Frage