Iglesia (también conocido como patrón Visitante) es una forma de representar los datos como funciones: en lugar derazones prácticas para Сhurch Codificación codificación
data T = C1 F1 F2 | C2 F3 F4
puede definir
data T = T (forall r. (F1 -> F2 -> r) -> (F3 -> F4 -> r) -> r)
. Aunque la capacidad de representar cualquier cosa como una función es agradable, siempre he pensado que la primera versión era preferible porque es más limpia y no requiere extensiones de lenguaje (explícita forall
). Sin embargo, a veces puede encontrar datos codificados por la iglesia en las bibliotecas públicas. ¿Cuáles son las ventajas de usar eso?
Los ejemplos de codificación de la iglesia en las bibliotecas públicas:
- Iteratee
- Revision control monad
- (por favor me ayude a ampliar la lista)