2010-11-03 8 views
24

AFAIK GHC es el compilador más común en la actualidad, pero también veo que algunos otros opcionales también están disponibles. ¿Es GHC realmente la mejor opción para todos los propósitos o puedo usar otra cosa en su lugar? Por ejemplo, leí que algún compilador (olvidé el nombre) mejora las optimizaciones, pero no implementa todas las extensiones.Compiladores para Haskell

+2

http://www.haskell.org/haskellwiki/Implementaciones es lo que estás buscando. –

Respuesta

36

GHC es, con mucho, el compilador Haskell más utilizado, y ofrece la mayoría de las características. Sin embargo, hay otras opciones que a veces tienen algunos beneficios sobre GHC. Estas son algunas de las alternativas más populares:

Hugs - Hugs es un intérprete (no creo que incluya un compilador) que sea rápido y eficiente. También es conocido por producir mensajes de error más fáciles de entender que GHC.

JHC - Un compilador de programa completo. JHC puede producir código muy eficiente, pero aún no es completo (es probable que esté pensando en esto). Tenga en cuenta que no siempre es más rápido que GHC, solo algunas veces. No he usado mucho JHC porque no implementa clases de tipos de parámetros múltiples, que uso mucho. Escuché que el código fuente es extremadamente claro y fácil de leer, lo que lo convierte en un buen compilador para piratear. JHC también es más conveniente para la compilación cruzada y generalmente produce binarios más pequeños.

UHC - El compilador Haskell de Utrecht está cerca de la característica completa (creo que lo único que falta son los patrones n + k) para Haskell98. Implementa muchas de las extensiones más populares de GHC y también algunas extensiones originales. De acuerdo con el código de documentación aún no está necesariamente bien optimizado. Este es también un buen compilador para hackear.

En resumen, si desea un código eficiente y funciones de vanguardia, GHC es su mejor opción. JHC vale la pena intentarlo si no necesita MPTC u otras características. Las extensiones de UHC pueden ser convincentes en algunos casos, pero aún no contaría con un código rápido.

5

ghc es un compilador sólido. decir que es la mejor opción para todos los propósitos es muy fuerte. y buscar tal herramienta es inútil.

Úselo, y si realmente necesita algo más, entonces, en ese momento, probablemente sabrá de qué se trata.

9

Creo que también vale la pena mencionar nhc98. A partir de la propaganda en la página principal:

nhc98 es un pequeño, fácil de instalar, compatible con los estándares del compilador de Haskell 98, el lenguaje de programación funcional perezoso. Es muy portátil, y tiene como objetivo producir pequeños ejecutables que se ejecutan en pequeñas cantidades de memoria. Produce un código medio rápido , y la compilación en sí es bastante rápida. También viene con una amplia compatibilidad de herramientas para la compilación automática , idioma extranjero interfaz, perfilado de tiempo y de recursos compartidos, rastreo y depuración.

10
  1. Haskell se define de manera informal como el lenguaje manejado por GHC.
  2. GHC es el compilador de la plataforma Haskell.
  3. Intentar optimizar su código con GHC puede dar más resultados que cambiar a otro compilador ya que aprenderá algunas habilidades de optimización.
  4. Hay muchas extensiones útiles muy en GHC. Simplemente no puedo ver cómo vivir sin ellos.

Por lo tanto, para cualquier cosa grave (por ejemplo, no académica, no experimental, no volátil o con muchos paquetes), la opción pragmática es ir con GHC.

+0

¡Muy interesante y útil! ¡Gracias! – fuz

8

A partir de 2011, no hay realmente otra opción que GHC para la programación diaria. El equipo de HP recomienda encarecidamente el uso de GHC por todos los programadores de Haskell.


Si usted es un investigador, es posible utilizar estar usando UHC, si estás en un sistema muy extraño, es posible que tenga sólo Abrazos o nhc98 disponibles. Si usted es un retro-fan como yo, todavía tiene recadero, HBC y hbi instalados:

$ 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 es bueno porque a) se implementa Haskell B, yb) que apoya el idioma completo en el comando línea:

> 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) 

y el compilador produce código bastante bueno, incluso 15 años después.

+1

¿Qué es Haskell B? – fuz

+2

Una versión temprana de Haskell. –

+3

¿Dónde puedo obtenerlo? Parece que todos los enlaces a hbc están muertos. – fuz

Cuestiones relacionadas