¿Haskell tiene tipos dependientes?

20

Sé que Haskell ya tiene la capacidad de parametrizar un tipo sobre otro tipo (similar a la programación de plantillas en C ++), pero me pregunto si Haskell también puede parametrizar un tipo sobre valores, si admite tipos dependientes. Con los tipos dependientes, puede tener un tipo parametrizado sobre enteros, por ejemplo, vectores de tamaño n, matrices de tamaño n × m, etc.

¿Si no, porque no? ¿Y hay alguna posibilidad de que sea compatible en el futuro?

Mozibur Ullah
fuente

Respuestas:

18

Haskell no tiene tipos totalmente dependientes, aunque puede acercarse mucho con extensiones como DataKindsy TypeFamilies. El problema en este momento, hasta donde yo sé, es que Haskell, con nivel de valor, tiene fondos explícitos, pero Haskell no lo tiene.

Esto no le impide parametrizar tipos sobre otros tipos, incluido el DataKindlevantamiento de valores . A partir de GHC 7.6, y con DataKindshabilitado, puede usar cadenas naturales y de nivel de tipo, así como tuplas de nivel de tipo, listas de nivel de tipo y los levantamientos de nivel de tipo de cualquier (no de tipo superior, no generalizado). , tipos de datos algebraicos no restringidos, que es similar a (pero mucho más general que) la capacidad de C ++ para usar enteros en plantillas.

Llama de Ptharien
fuente
1
¿Los próximos cambios en GHC 8 agregan tipos dependientes completos?
Janus Troelsen
@JanusTroelsen No del todo; Permiten clases dependientes .
Ptharien's Flame
8

Para ampliar un poco lo que Ptharien's Flame explicó muy bien sobre el estado actual, y GHC Haskell parece estar avanzando en la dirección de los tipos dependientes (al tiempo que preserva la separación de fases) con cada versión.

Entonces, por ejemplo, en ICFP 2013 este septiembre, se debe presentar un documento sobre la próxima fase de este proceso, "Hacia Haskell tipeado de manera dependiente: Sistema FC con igualdad amable" , sobre el colapso de los niveles de tipo y tipo. Como se anunció para ser el plan hace unos 3 años .

E incluso menciona el siguiente paso: "También somos conscientes de que la próxima disertación de Adam Gundry incluirá tipos Π en una versión de System FC y también queremos que esta función esté disponible en el idioma de origen. (Comunicación personal)"

usuario96830
fuente