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
Respuesta
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.
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.
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.
- Haskell se define de manera informal como el lenguaje manejado por GHC.
- GHC es el compilador de la plataforma Haskell.
- 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.
- 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.
¡Muy interesante y útil! ¡Gracias! – fuz
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. Haskell a los compiladores de Javascript?
- 2. compiladores JIT para matemática
- 3. Compiladores para scripts de shell
- 4. compiladores de Ada para Linux
- 5. JavaScript "compiladores"
- 6. Análisis semántico en compiladores
- 7. Compatibilidad Dll entre compiladores
- 8. AS3 a compiladores JS
- 9. Compiladores compatibles con C11
- 10. GLUT Alternativas para Haskell?
- 11. ¿Existen compiladores Lisp/Scheme/Clojure bastante maduros para .Net CLR?
- 12. la comprensión de la necesidad de compiladores para diferentes plataformas
- 13. CMake con múltiples compiladores para el mismo idioma
- 14. ¿Hay compiladores optimizados de C++ para el uso de plantillas?
- 15. compiladores dan diferentes respuestas para Proyecto Euler # 22
- 16. compiladores + referencias entre clases: ¿cómo hace javac rápidamente lo que los compiladores C++ hacen lentamente?
- 17. Haskell: Incumplimiento limitaciones para escribir
- 18. MonadPlus definición para Haskell IO
- 19. ¿Qué analizador XML para Haskell?
- 20. Haskell para la plataforma .net?
- 21. Analizador Haskell Parsec para encontrar [...]
- 22. Analizador de Haskell para AST
- 23. Usando Haskell para extender Perl?
- 24. Configuración de emacs para haskell
- 25. Conectando a los compiladores de Java
- 26. Coincidencia de tipos de va_list entre compiladores
- 27. ¿Cuán profundo funcionan los compiladores en línea?
- 28. System.Xml.Linq con mando mono compiladores de línea
- 29. ¿Por qué hay cuatro compiladores mono C#?
- 30. compiladores de C++ y back/front ends
http://www.haskell.org/haskellwiki/Implementaciones es lo que estás buscando. –