What Monads Can and Cannot Do with a Few Extra Pages
Møgelberg, Zwart
The delay monad provides a way to introduce general recursion in type theory. To write programs that use a wide range of computational effects directly in type theory, we need to combine the delay monad with the monads of these effects. Here we present a first systematic study of such combinations.
We study both the coinductive delay monad and its guarded recursive cousin, giving concrete examples of combining these with well-known computational effects. We also provide general theorems stating which algebraic effects distribute over the delay monad, and which do not. Lastly, we salvage some of the impossible cases by considering distributive laws up to weak bisimilarity.
academic
Lo que los Mónadas Pueden y No Pueden Hacer con Algunas Páginas Adicionales
La mónada de retardo (delay monad) proporciona un método para introducir recursión general en teoría de tipos. Para escribir directamente programas que utilizan amplios efectos computacionales en teoría de tipos, necesitamos combinar la mónada de retardo con las mónadas de estos efectos. Este artículo estudia sistemáticamente por primera vez esta combinación. Se investigan la mónada de retardo coinductiva y su variante de recursión protegida, proporcionando ejemplos concretos de combinación de estas mónadas con efectos computacionales conocidos. Simultáneamente, se proporcionan teoremas generales que indican qué efectos algebraicos se distribuyen sobre la mónada de retardo y cuáles no. Finalmente, se rescatan algunos casos imposibles considerando leyes de distribución bajo bisimulación débil.
Problema a Resolver: La teoría de tipos de Martin-Löf requiere que todos los programas terminen para mantener la corrección de la interpretación lógica, pero la programación práctica necesita recursión general. La mónada de retardo resuelve esto encapsulando la recursión, pero carece de una teoría para combinar sistemáticamente la mónada de retardo con otros efectos computacionales.
Importancia del Problema: Los lenguajes de programación funcional modernos necesitan manejar múltiples efectos computacionales (excepciones, estado, no-determinismo, etc.). La programación y razonamiento directo sobre estos efectos en teoría de tipos requiere una teoría matemática que describa la interacción entre la mónada de retardo y otras mónadas.
Limitaciones de Métodos Existentes:
Falta de investigación sistemática sobre la combinación de la mónada de retardo con otras mónadas
Los resultados relacionados en teoría de dominios son demasiado complejos para aplicarse en configuraciones de teoría de tipos
Se sabe que ciertas combinaciones (como la mónada del conjunto potencia finito) no son viables, pero falta una teoría general
Motivación de Investigación: Establecer una teoría matemática completa de la combinación de la mónada de retardo con otros efectos computacionales, proporcionando una base teórica para la programación funcional avanzada en teoría de tipos.
Marco de Investigación Sistemática: Primera investigación sistemática de la combinación de la mónada de retardo con otras mónadas, cubriendo tanto variantes coinductivas como de recursión protegida.
Ejemplos Concretos de Combinación: Demostración de formas concretas de combinar la mónada de retardo con efectos computacionales estándar (excepciones, lector, estado global, continuaciones, selección).
Teoremas Generales sobre Leyes de Distribución:
Prueba de que la distribución secuencial se cumple para mónadas algebraicas con ecuaciones balanceadas
Prueba de que las mónadas con operaciones idempotentes conmutativas no poseen leyes de distribución
Establecimiento de correspondencia entre tipos de ecuaciones y existencia de leyes de distribución
Teoría de Bisimulación Débil: Mediante trabajo en la categoría de conjuntos, se prueba que pueden construirse leyes de distribución bajo bisimulación débil para mónadas algebraicas sin ecuaciones de descarte.
Verificación Formal: Formalización de resultados parciales en Agda, proporcionando implementaciones verificables.
Investigar la existencia de leyes de distribución TD → DT, donde T es una mónada arbitraria y D es la mónada de retardo. Las leyes de distribución distribuyen las operaciones de T sobre pasos computacionales, permitiendo que la composición DT tenga estructura de mónada.
Codificación de Recursión Protegida: Utilización de recursión protegida multi-reloj para codificar tipos coinductivos como ∀κ.D^κX, evitando requisitos de continuidad.
Equivalencia de Leyes de Distribución: Establecimiento de correspondencia biyectiva entre leyes de distribución y elevaciones de mónadas en la categoría de Eilenberg-Moore (Teorema 2.12).
Análisis Dirigido por Ecuaciones: Predicción de existencia de leyes de distribución mediante tipos de ecuaciones de teorías algebraicas, proporcionando un marco de análisis sistemático.
Categoría de Bisimulación Débil: Trabajo en la categoría de conjuntos para manejar estructuras cociente, superando dificultades técnicas de cocientización directa de la mónada de retardo.
Este artículo cita 69 referencias importantes, cubriendo trabajos clásicos en múltiples campos incluyendo teoría de tipos, teoría de categorías, y efectos computacionales, particularmente la teoría de leyes de distribución de Beck (1969), la mónada de retardo de Capretta (2005), y la recursión protegida de Nakano (2000) y otros trabajos fundamentales.