Un buen ejemplo es la Generación de optimizaciones del compilador de Tate et al. A partir de pruebas . Utiliza retrocesos y expulsiones como uniones e intersecciones generalizadas, en categorías donde las flechas son sustituciones (IIRC).
Ross Tate afirma (en la página web en papel) que los detalles eran abrumadores sin la abstracción que ofrece la teoría de categorías. Personalmente, me gustaría presentar como "evidencia sugestiva" (si puede haber evidencia de tal afirmación) los diagramas (6) y (7) en su documento, se ven lo suficientemente complejos en forma de diagrama. Permítanme citar sus comentarios en línea.
Algunos nos han preguntado por qué abstrajimos nuestra técnica de generalización de pruebas y por qué utilizamos la teoría de categorías como nuestra abstracción. Sin embargo, en realidad diseñamos el algoritmo abstracto primero, usando la teoría de categorías, y luego lo usamos para descubrir cómo resolver nuestro problema concreto. Nos quedamos atrapados con el problema concreto, abrumados por los detalles y las variables, y cualquier solución que pudiéramos pensar parecía arbitraria. Para reflexionar y simplificar, decidimos formular nuestra pregunta categóricamente. Esto condujo a un diagrama de fuentes y sumideros, por lo que solo usamos pushouts y retrocesos para unir las cosas. El mayor desafío consistía en completar las modificaciones, en lugar de utilizar algún concepto estándar existente. La formulación categórica fue fácil de especificar y razonar. Luego, instanciamos los procesos abstractos,
De hecho, hemos encontrado que este proceso de abstracción a la teoría de categorías cada vez que nos atascamos es bastante fructífero. No solo termina resolviendo nuestro problema concreto, sino que terminamos con una mejor comprensión de nuestro propio problema, así como una solución abstracta que se puede adaptar fácilmente a otras aplicaciones. Por lo tanto, nuestra experiencia sugiere que la teoría de categorías puede ser útil para construir algoritmos reales, además de ser útil como marco para la formalización. Nos interesaría conocer otras experiencias similares, ya sean positivas o negativas.