compiler-construction - online - haskell core download
Compiladores para Haskell (5)
- Haskell se define informalmente como el lenguaje manejado por GHC.
- GHC es el compilador de la plataforma Haskell .
- Tratar de optimizar su código con GHC puede ser más rentable que cambiar a otro compilador, ya que aprenderá algunas habilidades de optimización.
- Hay muchas extensiones muy ú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 que usa muchos paquetes), la elección pragmática es ir con GHC.
AFAIK GHC es el compilador más común en la actualidad, pero también veo que hay otros compiladores disponibles. ¿Es GHC realmente la mejor opción para todos los propósitos o puedo usar otra cosa? Por ejemplo, leí que a algún compilador (se le olvidó el nombre) le va mejor en las optimizaciones, pero no implementa todas las extensiones.
A partir de 2011, realmente no hay otra opción que GHC para la programación diaria. El equipo de HP recomienda encarecidamente el uso de GHC por parte de todos los programadores de Haskell.
Si eres un investigador, puedes usar UHC, si estás en un sistema muy extraño, es posible que solo tengas Hugs 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, yb) soporta 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.
Creo que también vale la pena mencionar nhc98 . De la propaganda en la página de inicio:
nhc98 es un compilador pequeño, fácil de instalar y 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í bastante rápida. También viene con un amplio soporte de herramientas para la compilación automática, la interconexión de idiomas extranjeros, la creación de perfiles de tiempo y pila, el rastreo y la depuración.
GHC es, con mucho, el compilador de Haskell más utilizado y ofrece la mayoría de las funciones. Sin embargo, hay otras opciones que a veces tienen algunos beneficios sobre el 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 está completo (probablemente es lo que estás pensando). Tenga en cuenta que no siempre es más rápido que GHC, solo algunas veces. No he usado JHC mucho porque no implementa clases de tipo de múltiples parámetros, que uso mucho. 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 compilación cruzada y generalmente produce binarios más pequeños.
UHC : el compilador de Haskell de Utrecht está casi completo en sus características (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 la documentación, el código no está necesariamente bien optimizado todavía. 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. Vale la pena probar JHC si no necesita MPTC o alguna otra característica. Las extensiones de UHC pueden ser convincentes en algunos casos, pero no contaría con eso para un código rápido todavía.
ghc es un compilador sólido. Decir que es la mejor opción para todos los propósitos es muy fuerte. y buscar una herramienta así es inútil.
Úsalo, y si realmente necesitas algo más, entonces para ese punto probablemente sabrás lo que es.