J'ai eu l'expérience à quelques reprises aujourd'hui d'avoir GHC me dire d'utiliser une rallonge, seulement pour découvrir que lorsque dans l'utilisation de cette extension, j'ai fait un code beaucoup plus complexe qu'un simple refactoriser m'aurait permis de rester avec Haskell 98 (maintenant 2010) et ont une plus simple solution.
D'autre part, il y a aussi des moments où l'GADT ou Rank2Types (rarement RankNTypes) en font beaucoup moins de travail et beaucoup plus propre code.
Les extensions ont tendance généralement à occulter la possibilité d'une meilleure conception, et qui, en général, l'améliorer? Si il y en a qui font les deux, ce qui devrait un utilisateur de rechercher pour (être sûr de ce vrai ou pas vrai de la solution qu'ils ont l'intention) avant de décider d'utiliser cette extension?
(Voir aussi dois-je utiliser GHC Haskell extensions ou pas?)