online mac instalar descargar compiler como haskell ghc

mac - ¿Debo usar extensiones GHC Haskell o no?



haskell core download (4)

En general, las personas usan extensiones de GHC bastante, porque son muy útiles y Haskell 98 es bastante viejo. Una vez que haya un estándar más actualizado, las personas pueden hacer más esfuerzos para cumplirlo.

Puede encontrar el estado de las propuestas para el siguiente estándar here .

Mientras estoy aprendiendo Haskell, veo que hay muchas extensiones de lenguaje usadas en el código de la vida real. Como principiante, ¿debería aprender a usarlos o debería evitarlos a toda costa? Veo que rompe la compatibilidad con Haskell 98 y limita el código a prácticamente GHC solamente. Sin embargo, si busco paquetes en Hackage, veo que la mayoría de ellos son solo GHC de todos modos.

Entonces, ¿cuál es una actitud de comunidad hacia el uso de extensiones de lenguaje?

Y si el uso de extensiones está bien, ¿cómo puedo distinguir las extensiones que puedo usar de forma "segura" (aquellas que probablemente formen parte del próximo estándar Haskell) de aquellas que son en su mayoría "experimentales"? Por ejemplo, supongo que -XDisambiguateRecordFields es agradable y útil, pero ¿es probable que sea compatible en el futuro?


Hay algunas extensiones de GHC que son demasiado buenas para vivir sin ellas. Entre mis favoritos están

  • Clases de tipo multiparámetro
  • Variables de tipo de ámbito
  • Tipos de rango superior
  • Tipos de datos algebraicos generalizados (GADT)

De estos, el más importante es el de las clases de tipo multiparámetro.

Algunas extensiones de GHC son muy especulativas y experimentales, y es posible que desee utilizar con precaución. Una buena forma de identificar una extensión estable y confiable es ver si está programado para su inclusión en Haskell Prime , que se espera sea el sucesor de Haskell 98.

Apoyo la sugerencia de Don Stewart de que cada extensión debe marcarse usando el pragma LANGUAGE en el archivo de origen. No habilite extensiones utilizando opciones de línea de comandos.


Las otras respuestas aquí son buenas. Yo añadiría que las extensiones de GHC no son tan vulnerables en el futuro (*) como podrían ser, porque GHC parece ser de lejos el compilador de Haskell más popular, y no creo que eso cambie pronto.

(*) como opuesto a "a prueba de futuro"


Sí, use extensiones según corresponda.

Pero asegúrese de habilitarlos intencionalmente , solo cuando usted decida que los necesita. Haga esto por módulos a través de {-# LANGUAGE Rank2Types #-} (por ejemplo).