Compilateurs pour Haskell

AFAIK GHC est le compilateur le plus courant aujourd'hui, mais je vois aussi que d'autres ompilers sont également disponibles. Est-ce que GHC est vraiment le meilleur choix à toutes fins ou Puis-je utiliser autre chose à la place? Par exemple, j'ai lu que certains compilateurs (ont oublié le nom) font mieux sur les optimisations, mais n'implémentent pas toutes les extensions.

24
demandé sur fuz 2010-11-03 09:52:17

5 réponses

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

Hugs - Hugs est un interpréteur (Je ne pense pas qu'il inclut 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 de programme entier. JHC peut produire très code efficace, mais ce n'est pas encore complet (c'est probablement ce à quoi vous pensez). Notez que ce N'est pas toujours plus rapide que GHC, seulement parfois. Je n'ai pas beaucoup utilisé JHC car il n'implémente pas les classes de type multi-paramètres, que j'utilise fortement. J'ai entendu dire que le code source est extrêmement clair et lisible, ce qui en fait un bon compilateur à pirater. JHC est également plus pratique pour la compilation croisée et produit généralement des binaires plus petits.

CHU - Utrecht Le compilateur Haskell est presque complet (je pense que la seule chose qui manque est N + K patterns) pour Haskell98. Il implémente de nombreuses extensions les plus populaires de GHC et certaines extensions originales. Selon la documentation, le code n'est pas nécessairement encore bien optimisé. C'est aussi un bon compilateur à pirater.

En bref, si vous voulez un code efficace et des fonctionnalités de pointe, GHC est votre meilleur pari. JHC vaut la peine d'essayer si vous n'avez pas besoin de MPTC ou d'autres fonctionnalités. Extensions de la CSU peut être convaincant dans certains cas, mais je ne compterais pas encore sur le code rapide.

36
répondu John L 2010-11-03 09:01:39
  1. Haskell est défini de manière informelle comme le langage géré par GHC.
  2. GHC est le compilateur de la plate-formeHaskell .
  3. essayer d'optimiser votre code avec GHC peut rapporter plus que de passer à un autre compilateur car vous apprendrez des compétences d'optimisation.
  4. Il y a beaucoup d'extensionstrès utiles dans GHC. Je ne peux pas voir comment vivre sans eux.

Donc, pour tout ce qui est sérieux (par exemple, non académique, Non expérimental, Non volatile ou en utilisant beaucoup de paquets), le choix pragmatique est d'aller avec GHC.

10
répondu gawi 2010-11-07 00:53:17

Je pense qu'il vaut également la peine de mentionner nhc98. Du texte de présentation sur la page d'accueil:

Nhc98 est un petit, facile à installer, compilateur conforme aux normes pour Haskell 98, le paresseux fonctionnel langage de programmation. Il est très portable, et vise à produire petit exécutables qui s'exécutent en petites quantités de la mémoire. Il produit moyen-rapide code, et la compilation est elle-même tout à fait rapide. Il est également livré avec une vaste support d'outil pour automatique compilation, étranger langue interfaçage, profilage de tas et de temps, le traçage et le débogage.

9
répondu svenningsson 2010-11-03 15:26:01

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


Si vous êtes un chercheur, vous pourriez utiliser UHC, si vous êtes sur un système très étrange, vous pourriez avoir seulement Hugs ou nhc98 disponible. Si vous êtes un fan rétro comme moi, vous avez toujours gofer, hbc et HBI installés:

$ 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 car a) il implémente 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 un très bon code, même 15 ans plus tard.

8
répondu Don Stewart 2011-05-07 03:09:12

Ghc est un compilateur solide. dire que c'est le meilleur choix à toutes fins est très fort. et la recherche d'un tel outil est futile.

Utilisez-le, et si vous avez vraiment besoin d'autre chose, vous saurez probablement ce que c'est.

5
répondu oadams 2010-11-03 07:04:58