Pregunta

Afaik GHC es el compilador más común en la actualidad, pero también veo que otros ompiladores también están disponibles. ¿Es GHC realmente la mejor opción para todos los fines o puedo usar algo más? Por ejemplo, leí que algún compilador (olvidó el nombre) funciona mejor en las optimizaciones, pero no implementa todas las extensiones.

¿Fue útil?

Solución

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

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

JHC - Un compilador de programa completo. JHC puede producir un código muy eficiente, pero aún no se complete (esto es probablemente en lo que estás pensando). Tenga en cuenta que no siempre es más rápido que GHC, solo a veces. No he usado mucho JHC porque no implementa clases de tipo multiparamétrico, que uso en gran medida. He oído que el código fuente es extremadamente claro y legible, lo que hace que este sea 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 de Utrecht Haskell está casi completo (creo que lo único que falta son los patrones N+K) para Haskell98. Implementa muchas de las extensiones más populares de GHC y algunas extensiones originales también. De acuerdo con el código de documentación, aún no es necesariamente optimizado. Este también es un buen compilador para piratear.

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

Otros consejos

  1. Haskell se define informalmente como el lenguaje manejado por GHC.
  2. GHC es el compilador del Plataforma Haskell.
  3. Intentar optimizar su código con GHC puede pagar más que cambiar a otro compilador, ya que aprenderá algunas habilidades de optimización.
  4. Hay muchos muy Extensiones útiles en GHC. Simplemente no puedo ver cómo vivir sin ellos.

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

Creo que también vale la pena mencionar NHC98. Desde la propaganda en la página de inicio:

NHC98 es un compilador pequeño, fácil de instalar que cumple con los estándares para 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 código medio rápido, y la compilación es en sí misma bastante rápida. También viene con un amplio soporte de herramientas para compilación automática, interfaz de lengua extranjera, montón y perfiles de tiempo, rastreo y depuración.

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


Si es un investigador, puede usar UHC, si está en un sistema muy extraño, es posible que solo tenga abrazos o NHC98 disponibles. Si eres un fanático retro como yo, todavía tienes Gofer, 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 genial porque a) implementa Haskell B, y b) admite el lenguaje completo en la línea de comando:

> 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 un código bastante bueno, incluso 15 años después.

GHC es un compilador sólido. Decir que es la mejor opción para todos los fines es muy fuerte. Y buscar tal herramienta es inútil.

Úselo, y si realmente necesita algo más, entonces, en ese momento, probablemente sepa qué es.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top