Question

est le GHC AFAIK aujourd'hui plus compilateur commun, mais je vois aussi que d'autres ompilers sont aussi disponibles. GHC est vraiment le meilleur choix pour toutes fins ou peut-je utiliser quelque chose d'autre à la place? Par exemple, je lis que certains compilateur (oublié le nom) fait mieux sur les optimisations, mais ne met en œuvre toutes les extensions.

Était-ce utile?

La solution

GHC est de loin le plus largement utilisé compilateur Haskell, et il offre le plus de fonctionnalités. Il y a d'autres options, cependant, qui ont parfois des avantages sur GHC. Ce sont quelques-unes des alternatives les plus populaires:

étreintes - étreintes est un interprète (je ne pense pas qu'il comprend un compilateur) qui est rapide et efficace. Il est également connu pour produire des messages d'erreur plus facilement compris que GHC.

JHC - Un compilateur tout le programme. JHC peut produire un code très efficace, mais ce n'est pas encore complète en fonctionnalités (ce qui est probablement ce que vous pensez de). Notez que ce n'est pas toujours plus rapide que GHC, parfois seulement. Je ne l'ai pas utilisé beaucoup JHC parce qu'il ne met pas en œuvre des classes de type multi-paramètres, dont je me sers fortement. Je l'ai entendu dire que le code source est extrêmement claire et lisible, ce qui en fait un bon compilateur de pirater sur. JHC est également plus pratique pour la compilation croisée et produit généralement binaires plus petits.

UHC - Utrecht Haskell Compiler est proche fonctionnalités complet (je pense que le seul chose qui manque est n + k motifs) pour haskell98. Il met en œuvre un grand nombre de la plupart des extensions populaires et quelques extensions originales de GHC ainsi. Selon le code de la documentation est pas nécessairement bien optimisé encore. Ceci est également un bon compilateur de pirater sur.

En bref, si vous voulez un code efficace et fonctionnalités de pointe, GHC est votre meilleur pari. JHC vaut la peine d'essayer si vous ne avez pas besoin de MPTC ou d'autres caractéristiques. Les extensions de UHC peuvent être convaincants dans certains cas, mais je ne compterais pas encore un code rapide.

Autres conseils

  1. Haskell est défini de manière informelle comme langue traitée par GHC.
  2. GHC est le compilateur de la plate-forme Haskell .
  3. Essayer d'optimiser votre code avec GHC peut payer plus que de passer à un autre compilateur que vous apprendrez des compétences d'optimisation.
  4. Il y a beaucoup de très extensions utiles dans GHC. Je ne peux pas voir comment vivre sans eux.

Donc, pour quelque chose de sérieux (par exemple non académique, non expérimentale, non volatile ou à l'aide de nombreux forfaits), le choix pragmatique est d'aller avec GHC.

Je pense qu'il est aussi important de mentionner nhc98 . De le texte de présentation sur la page d'accueil:

  

nhc98 est un petit, facile à installer,   compilateur conforme aux standards pour   Haskell 98, le fonctionnement paresseux   langage de programmation. C'est très   portables, et vise à produire de petits   executables qui fonctionnent en petites quantités   de la mémoire. Il produit moyen rapide   code, et la compilation elle-même est tout à fait   vite. Il est également livré avec une vaste   support d'outil automatique pour   compilation, langue étrangère   interface, tas et profilage de temps,   le traçage et le débogage.

En 2011, il n'y a vraiment pas d'autre choix que GHC pour la programmation de tous les jours. L'équipe HP encourage fortement l'utilisation de GHC par tous les programmeurs Haskell.


Si vous êtes un chercheur, vous pouvez utiliser être en utilisant UHC, si vous êtes sur un système très étrange, vous pourriez avoir seulement étreintes ou nhc98 disponibles. Si vous êtes un rétro-fan comme moi, vous avez encore gofer, hbc et HBI installé:

$ hbi
Welcome to interactive Haskell98 version 0.9999.5c Pentium 2004 Jun 29!
Loading prelude... 1 values, 4 libraries, 200 types found.
Type "help;" to get help.
> help;
        HBI  -- Interactive Haskell B 1.3

HBI est cool parce que a) il met en oeuvre Haskell B, et b) il prend en charge la langue complète à la ligne de commande:

> data L a = I | X a (L a) deriving Show;
data L b = I | X b (L b) deriving (Show)
> X 4 (X 3 I);
X 4 (X 3 I)

et le compilateur produit assez bon code, même 15 ans plus tard.

GHC est un compilateur solide. en disant qu'il est le meilleur choix pour toutes fins est très forte. et la recherche d'un tel outil est futile.

Utilisez-le, et si vous avez vraiment besoin d'autre chose, puis par ce moment-là, vous saurez sans doute ce qu'il est.

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