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.
Respostas:
Frege diz em "Funktion und Begriff" (1891):
Em inglês (minha tradução):
Como coisas e funções são diferentes, também são funções, cujos argumentos são funções radicalmente diferentes das funções cujos argumentos devem ser coisas. Eu chamo as últimas funções de primeira ordem, as primeiras funções de segunda ordem.
fonte
O artigo da wikipedia já atribui a terminologia "cidadãos de primeira classe" a Strachey.
"Função de ordem superior" eu imaginaria remonta à distinção entre lógica de ordem superior e lógica de primeira ordem.
Consulte https://en.wikipedia.org/wiki/Higher-order_logic e http://plato.stanford.edu/entries/logic-higher-order/
fonte