Question

En apprenant Haskell, je constate qu’il existe de nombreux extensions de langue utilisées dans le code de la vie réelle. En tant que débutant, devrais-je apprendre à les utiliser ou devrais-je les éviter à tout prix? Je constate que cela rompt la compatibilité avec Haskell & 98 et limite le code à pratiquement GHC. Cependant, si je parcours les paquets sur Hackage, je constate que la plupart d’entre eux sont de toute façon exclusivement GHC.

Alors, quelle est l'attitude de la communauté vis-à-vis des extensions de langage?

Et si l’utilisation d’extensions vous convient, comment puis-je distinguer les extensions que je peux utiliser en toute sécurité & # 8221; (celles qui feront probablement partie du prochain standard Haskell) parmi celles qui sont pour la plupart "expérimentales" & # 8220; expérimentales & # 8221 ;? Par exemple, je suppose que -XDisambiguateRecordFields est agréable et utile, mais est-il susceptible d'être pris en charge à l'avenir?

Était-ce utile?

La solution

Certaines extensions de GHC sont trop belles pour vivre sans. Parmi mes favoris sont

  • Classes de type multiparamètres
  • Variables de type ciblées
  • Types de rang supérieur
  • Types de données algébriques généralisées (GADT)

Parmi ceux-ci le plus essentiel est celui des classes de type multiparamètres.

Certaines extensions de GHC sont très spéculatives et expérimentales, et vous pouvez les utiliser avec prudence. Un bon moyen d'identifier une extension stable et fiable consiste à vérifier si son extension est Haskell Prime. , qui devrait être le successeur du Haskell 98.

Je souscris à la suggestion de Don Stewart selon laquelle chaque extension devrait être marquée à l'aide du pragma LANGUAGE dans le fichier source. Ne pas activer les extensions à l'aide d'options de ligne de commande.

Autres conseils

Oui, utilisez les extensions appropriées.

Mais assurez-vous de les activer intentionnellement - uniquement lorsque vous décidez que vous en avez besoin. Faites ceci module par module via {- # LANGUAGE Rank2Types # -} (par exemple).

En règle générale, les extensions GHC sont très utilisées, car elles sont très utiles et Haskell 98 est très ancien. Une fois que le standard sera plus à jour, les gens feront plus d'efforts pour s'y tenir.

Vous pouvez trouver l'état des propositions pour la prochaine norme ici . .

Les autres réponses sont bonnes. J'ajouterais que les extensions GHC ne sont pas aussi vulnérables à l'avenir (*) qu'elles pourraient l'être, car GHC semble être de loin le compilateur Haskell le plus populaire, et je ne vois pas cela changer prochainement.

(*) comme dans l'opposé de "futur-proof"

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top