Pregunta

Cuando estoy aprendiendo Haskell, veo que hay muchas extensiones de idioma utilizadas 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 & nbsp; 98 y limita el código a casi solo GHC. Sin embargo, si busco paquetes en Hackage, veo que la mayoría de ellos son solo GHC de todos modos.

Entonces, ¿cuál es la actitud de la comunidad hacia el uso de extensiones de idioma?

Y si el uso de extensiones está bien, ¿cómo puedo distinguir las extensiones que puedo usar & # 8220; con seguridad & # 8221; (los que probablemente se conviertan en parte del próximo estándar de Haskell) de los que son en su mayoría & # 8220; experimentales & # 8221 ;? Por ejemplo, supongo que -XDisambiguateRecordFields es agradable y útil, pero ¿es probable que sea compatible en el futuro?

¿Fue útil?

Solución

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

  • Clases de tipo multiparamétrico
  • Variables de tipo con ámbito
  • Tipos de rango superior
  • Tipos de datos algebraicos generalizados (GADT)

De estos, el realmente esencial son las clases de tipo multiparamétrico.

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

Respaldo la sugerencia de Don Stewart de que cada extensión se marque utilizando el pragma LANGUAGE en el archivo fuente. No habilite extensiones utilizando las opciones de línea de comandos.

Otros consejos

Sí, use extensiones según corresponda.

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

En general, las personas usan bastante las extensiones de GHC, porque son muy útiles y Haskell 98 es bastante antiguo. 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 próximo estándar aquí .

Las otras respuestas aquí son buenas. Agregaría que las extensiones de GHC no son tan vulnerables al futuro (*) como podrían serlo, porque GHC parece ser el compilador Haskell más popular, y no veo que eso cambie pronto.

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

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