Mientras estoy aprendiendo Haskell, veo que hay muchas extensiones de lenguaje que se usan en el código de la vida real. Como principiante, ¿debo aprender a usarlos o debo evitarlos a toda costa? Veo que rompe la compatibilidad con Haskell 98 y limita el código a prácticamente 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 lenguaje?
Y si el uso de extensiones está bien, ¿cómo puedo distinguir las extensiones que puedo usar de forma "segura" (aquellas que probablemente se convertirán en parte del próximo estándar Haskell) de aquellas que son en su mayoría "experimentales"? Por ejemplo, supongo que -XDisambiguateRecordFields es bueno y útil, pero ¿es probable que sea compatible en el futuro?
Respuestas:
Hay algunas extensiones de GHC que son demasiado buenas para vivir sin ellas. Entre mis favoritos estan
De estos, el realmente esencial son las clases de tipos multiparámetros.
Algunas extensiones de GHC son muy especulativas y experimentales, y es posible que desee utilizarlas con precaución. Una buena forma de identificar una extensión estable y confiable es ver si está programada para su inclusión en Haskell Prime , que se espera sea la sucesora de Haskell 98.
Apoyo la sugerencia de Don Stewart de que todas las extensiones deben marcarse usando el
LANGUAGE
pragma en el archivo fuente. No habilite extensiones usando opciones de línea de comandos.fuente
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).fuente
En general, la gente usa mucho las extensiones 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í .
fuente
Las otras respuestas aquí son buenas. Agregaría que las extensiones de GHC no son tan vulnerables al futuro (*) como podrían ser, porque GHC parece ser, de lejos, el compilador Haskell más popular, y no veo que eso cambie pronto.
(*) como en el opuesto de "a prueba de futuro"
fuente