[Esta segunda respuesta presenta un resumen de cómo podría ser una "Categoría Teoría 2.0", que se ocupa de las funciones de orden superior correctamente.]
Hemos sabido durante mucho tiempo cómo lidiar con funciones de orden superior al razonar sobre ellas.
Cuando una estructura algebraica tiene operaciones de orden superior, los homomorfismos no funcionan. Debemos usar relaciones lógicas en su lugar. En otras palabras, debemos pasar de " estructura de preservación de funciones " a " estructura de preservación de relaciones ".
Para hablar de transformaciones "uniformes" o "dadas simultáneamente" en tipos de orden superior, la naturalidad no funciona. Debemos usar la parametridad relacional en su lugar. En otras palabras, debemos pasar de "familias que preservan todos los morfismos " a "familias que preservan todas las relaciones lógicas ".
→
Una introducción rápida a estos problemas se encuentra en la sección de Peter O'Hearn sobre "Parametricidad relacional" en dominios y semántica denotacional: historia, logros y problemas abiertos (CiteSeerX) .
También podría agregar que el razonamiento sobre el estado es donde las funciones de orden superior aparecen prominentemente. Los teóricos de los autómatas fueron los primeros en reconocer que los homomorfismos no funcionan correctamente, en un documento histórico llamado Productos de autómatas y el problema de la cobertura . Usaron términos como "homomorfismos débiles" y "relaciones de cobertura" para referirse a las relaciones lógicas. A su debido tiempo, se usaron términos como "simulación" y "bisimulación" para referirse a ellos. El artículo de la encuesta de Davide Sangiorgi: Sobre los orígenes de la bisimulación y la coinducción abarca toda esta historia temprana y más.
La necesidad de razonamiento relacional surge repetidamente en el razonamiento sobre el estado, en particular la programación imperativa . Muy pocas personas notan que el humilde "punto y coma" es una operación de orden superior. Por lo tanto, no puede despegar pensando en programas imperativos sin saber cómo manejar las funciones de orden superior. Seguimos ignorando los problemas de programación estatal e imperativa en la creencia errónea de que las matemáticas tienen todas las respuestas. Entonces, si los matemáticos no entienden el estado, ¡no debe ser bueno! Nada mas lejos de la verdad. El estado está en el corazón de la informática. ¡Avanzaremos la ciencia en general al mostrarle a la gente cómo lidiar con el estado!