2010-09-04 20 views
16

Estoy buscando información sobre el conocido Damas-Hindley-Milner algorithm para hacer una inferencia de tipo de lenguaje funcional, especialmente información sobre la implementación.Implementación del algoritmo de inferencia de tipo Damas-Hindley-Milner

Ya sé cómo hacer el Algorithm W, pero escuché acerca de los nuevos algoritmos recientes basados ​​en el generador/solucionador de restricciones en lugar de la unificación usual. Sin embargo, no logro encontrar discusiones sobre la implementación de esos nuevos algoritmos.

¿Alguna idea de dónde podría encontrar información parcial sobre la inferencia de ML?

+0

Son está seguro de que la generación/resolución de restricciones no era para sistemas tipo con subtipificación, por ejemplo uno de la familia HM (X) (Hindley-Milner parametrizado por una relación de subtipado)? –

+0

Lo leí que podría usarse para la familia HM (X) con subtipificación, pero también para cosas como clases de tipos (polimorfismo paramétrico), así que estoy un poco perplejo – Vinz

+0

Las clases de tipo son algo ortogonales al polimorfismo paramétrico. Creo que Pascal Cuoq podría estar en lo cierto. No estoy seguro de haber visto alguna alternativa seria a la simple generación y unificación de restricciones para la reconstrucción de tipos en ML estándar, por ejemplo. Sin embargo, los enfoques alternativos serían útiles para los tipos de extensiones que se han propuesto. – Gian

Respuesta

15

Si te sientes cómodo con el código ML, la mejor manera de encontrar estas cosas es simplemente observar las implementaciones en la naturaleza. Una buena implementación de referencia es HaMLet, que está diseñada más como una plataforma de prueba que como una implementación de producción.

Casi todas las discusiones serias recientes sobre estos temas van a ser en lugares académicos. Un documento que podría ser de interés es Generalising Hindley-Milner type inference algorithms.

Además, las implementaciones de varios sistemas de tipo (incluyendo dejar que el polimorfismo) en Pierce "Types and Programming Languages", así como de Appel "Modern Compiler Implementation in ML" se asemejan más a los enfoques modernos para la aplicación del presente que la descripción de vainilla del algoritmo W.

+0

gracias por la referencia a HaMLet, ¡no sabía que tal proyecto existiera! – Vinz

+0

@Vinz, sí, es bastante limpio. Está relacionado con algunos de los trabajos (aparentemente difuntos) sobre ML sucesora. – Gian

+0

Me encontré con esto el otro día: relaciona las Reglas de manejo de restricciones con la inferencia de tipo con las Clases de tipos: http://arxiv.org/abs/cs/0006034 – Gian

Cuestiones relacionadas