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.