Pregunta

Me empezó a leer sobre GADT en Haskell Wiki, pero no se sentía bastante cómodo comprenderla. ¿Usted recomienda un capítulo de un libro específico o un post explicando GADT para un principiante Haskell?

¿Fue útil?

Solución

vídeo tutorial para GADTs cuales podrían ser útiles.

Otros consejos

I como en el ejemplo en el GHC manual. Es muy sencillo, e ilustra algunos puntos clave:

  • GADTs permite utilizar el sistema de tipos de Haskell para modelar el sistema de tipos de un lenguaje que va a implementar (el "lenguaje objeto")

  • Esto permite la comprobación estática de Haskell para afirmar que su "compilador pasa" o qué-no son el tipo de conservantes. Funciones que toman términos lenguaje objeto puede asumir esos términos son bien mecanografiados a. Se requieren funciones que devuelven términos lenguaje objeto de producir términos bien escritos.

  • coincidencia de patrones un constructor GADT provoca tipo de refinamiento. eval tiene Term a -> a tipo general, pero el lado derecho de eval (Lit i) tiene Int tipo, porque el constructor de la mano izquierda tenía Term Int tipo.

  • El sistema Haskell no le importa qué tipo le da a sus constructores GADT. Podríamos tan fácilmente hacer que cada constructor en data Term a dar un resultado de tipo Term a o Term Bool, y la definición data seguiríamos pasar. Sin embargo, no sería capaz de escribir eval :: Term a -> a. Solo tiene que elegir los "tipos de etiquetas" GADT a modelo de su problema, por lo que las funciones útiles que desea escribir son bien mecanografiadas.

GADTs El Haskell wiki para los maniquíes es la mejor explicación que he visto.

El problema I (y I a otros sospechosos) tengo con la mayoría de las presentaciones es que muestran ejemplos de GADTs en términos de sintaxis que no es obvio hasta que entienda GADTs . Esto hace que los ejemplos más simples en el que todo está construido especialmente difícil de entender plenamente, se puede adivinar lo que muchos de los patrones están haciendo, pero la comprensión de la función exacta de cada declaración es un reto.

Las "para tontos" disecciona correos y se acumula el significado de la sintaxis en el camino para explicar sus propios ejemplos básicos, lo que hace que sea un punto de partida mucho más útil. Yo altamente recomiendo.

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