standard programming lenguaje language haskell ocaml sml ml type-systems

programming - ¿Cuáles son las principales dificultades teóricas para agregar módulos de ML a Haskell?



lenguaje standard ml (3)

Es bien sabido que las clases de estilo Haskell y los módulos de estilo ML ofrecen diferentes mecanismos para especificar interfaces . Son (posiblemente) equivalentes en poder, pero en la práctica cada uno tiene sus propios beneficios y desventajas.

Como soy bastante integracionista en lo que respecta a las características del lenguaje, mi pregunta es esta: ¿cuáles son las principales dificultades teóricas para agregar módulos de ML a Haskell? Me interesan las respuestas en las siguientes líneas:

  • ¿Qué características del sistema de tipos existentes interactúan mal con los módulos de estilo ML? (Un ejemplo de interacción deficiente es GADT y dependencias funcionales, ¡aunque las fundeps son técnicamente equivalentes a los tipos asociados!)

  • ¿Qué cosas se deben abandonar en el compilador para compilar módulos ML-style?

  • ¿Cómo interactúan los módulos de estilo ML con la inferencia de tipo?

Lectura relacionada:


El principal lugar para hacer la comparación es

  • Módulos ML y clases de tipo Haskell: una comparación constructiva . Stefan Wehr y Manuel MT Chakravarty. En Actas del Sexto Simposio ASIAN sobre Lenguajes y Sistemas de Programación - APLAS 2008, Springer-Verlag, LNCS, 2008.

  • Clases de tipo modular . Derek Dreyer, Robert Harper y Manuel MT Chakravarty. En Actas del 34º Simposio Anual ACM SIGPLAN - SIGACT sobre Principios de Lenguajes de Programación, ACM Press, 2007.

  • Módulos de primera clase para Haskell , Mark Shields y Simon Peyton Jones. Presentado a la Novena Conferencia Internacional sobre Fundamentos de Lenguajes Orientados a Objetos (FOOL 9), Portland, Oregon. 20 páginas. Oct 2001.

No estoy al tanto de ningún problema teórico, al menos, se han hecho propuestas concretas (e implementado en prototipos), el documento de Shields y PJ tiene muchos detalles. La carga de implementación, sin embargo, no es trivial.


No creo que haya grandes problemas teóricos. Tendría que tomar una decisión sobre los funtores aplicativos o no. Aplicativo es probablemente más en el estilo Haskell. Pero creo que cualquier intento de agregar módulos de estilo ML a Haskell será grotesco debido a la superposición entre módulos y clases; Habrá dos formas de hacer muchas cosas.


Simon PJ ha argumentado que los módulos de estilo ML tienen una baja relación potencia / costo, que son difíciles de implementar. Vea las diapositivas de SPJ de POPL 2003 (hacia el final). También pide un diseño que tenga una mejor relación costo / potencia pero no conozco ninguna propuesta de este tipo.