Eu entendi que muito antes de Haskell, O'Caml ou LISP, funções de ordem superior eram um assunto de pesquisa acadêmica e, em matemática, Schönfinkel (em 1967) e Haskell Curry (em 1968) já aplicavam técnicas como curry, mas isso foi antes de estar disponível em qualquer linguagem de programação.
O esquema, de acordo com a Wikipedia , foi o primeiro idioma a introduzir funções apropriadas de ordem superior como cidadãos de primeira classe, mas existe alguém a quem possamos atribuir a idéia original? Talvez a Igreja Alonzo, que inventou o cálculo lambda na década de 1930? Mais especificamente, quem cunhou a seguinte definição, que vi em várias paráfrases em vários livros e recursos online?
Uma função é considerada de ordem superior quando assume outra função como argumento ou quando retorna uma função. Qualquer função que não aceite funções como argumentos ou como tipos de retorno é chamada de função de primeira ordem.