He llegado a comprender que mucho antes de Haskell, O'Caml o LISP, las funciones de orden superior eran un tema de investigación académica y en matemáticas, Schönfinkel (en 1967) y Haskell Curry (en 1968) ya aplicaban técnicas como el curry, pero eso fue antes de que estuviera disponible en cualquier lenguaje de programación.
Scheme, según Wikipedia , fue el primer idioma en introducir funciones apropiadas de orden superior como ciudadanos de primera clase, pero ¿hay alguien a quien podamos atribuirle la idea original? ¿Quizás Alonzo Church, quien inventó el cálculo lambda en la década de 1930? Más específicamente, ¿quién acuñó la siguiente definición, que vi en varias paráfrasis en varios libros y recursos en línea?
Una función se considera de orden superior cuando toma otra función como argumento o cuando devuelve una función. Cualquier función que no tome funciones como argumentos o como tipos de retorno se denomina función de primer orden.
Respuestas:
Frege dice en "Funktion und Begriff" (1891):
En inglés (mi traducción):
Al igual que las cosas y las funciones son diferentes, también lo son las funciones, cuyos argumentos son funciones radicalmente diferentes de las funciones cuyos argumentos deben ser cosas. Llamo a las últimas funciones de primer orden, las funciones anteriores de segundo orden.
fuente
El artículo de Wikipedia ya atribuye la terminología de "ciudadanos de primera clase" a Strachey.
"Función de orden superior" Me imagino que se remonta a la distinción entre orden superior y lógica de primer orden.
Ver https://en.wikipedia.org/wiki/Higher-order_logic y http://plato.stanford.edu/entries/logic-higher-order/
fuente