78 votes

Devrais-je utiliser des extensions GHC Haskell ou pas?

Comme je suis en train d'apprendre Haskell, je vois qu'il y a beaucoup d' extensions de langage utilisés dans le code de la vie. En tant que débutant, je devrais apprendre à les utiliser, ou devrais-je éviter à tout prix? Je vois que ça casse la compatibilité avec Haskell 98 et limites de code à beaucoup de GHC. Cependant, si je parcourir les paquets sur le Hackage, je vois que la plupart d'entre eux sont GHC-seulement de toute façon.

Donc, ce qui est une attitude de la communauté envers l'utilisation des extensions de langage?

Et si l'utilisation d'extensions est OK, comment puis-je distinguer les extensions que je peux utiliser en "toute sécurité" (ceux qui sont susceptibles de devenir une partie de la prochaine Haskell standard) et ceux qui sont pour la plupart "expérimental"? Par exemple, je suppose qu' -XDisambiguateRecordFields est agréable et utile, mais est-il susceptible d'être pris en charge dans l'avenir?

70voto

Norman Ramsey Points 115730

Il y a quelques GHC extensions qui sont trop bien vivre sans. Parmi mes favoris sont

  • Multiparamétrique des classes de type
  • L'étendue des variables de type
  • De plus haut rang types
  • Généralisée des types de données algébriques (GADTs)

Celles-ci, l'essentiel est multiparamétrique des classes de type.

Certains GHC extensions sont très spéculatives et expérimentale, et vous pouvez l'utiliser avec prudence. Un bon moyen d'identifier un stable et de confiance extension est de voir si il est prévu pour l'inclusion dans Haskell Premier, ce qui devrait être le successeur du Haskell 98.

Je seconde Don Stewart suggère que chaque extension doit être marqué à l'aide de l' LANGUAGE pragma dans le fichier source. Ne pas activer des extensions utilisant les options de ligne de commande.

51voto

Don Stewart Points 94361

Oui, utilisez les extensions appropriées.

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

19voto

Ganesh Sittampalam Points 17695

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 le statut des propositions pour la prochaine norme ici .

4voto

Phil Darnowsky Points 95

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 "future-proof"

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X