Quem cunhou o termo Função de Ordem Superior e / ou Cidadão de Primeira Classe?
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.
Você quer dizer Moses Schönfinkel? Então você deve estar errado sobre ele em 1967 . Ele morreu na pobreza em 1942 .
Nem é 1967 antes do LISP. :-)
Frege diz em "Funktion und Begriff" (1891):
Como as Funktionen de Gegenständen grundverschieden sind, então, também, Funktionen, der Argumente Funktionen sind e seun müssen, Grundversion de von Funktionen, der Argenente Gegenstände sind and nichts anderin sein können. Diese nenne ichter Funktionen, jene Funktionen zweiter Stufe.
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.
ótimo citar! claro que seria frege.
Interessante que a programação funcional moderna tenha uma visão oposta - tanto quanto possível (ou pelo menos sempre que você estiver trabalhando em uma categoria fechada), não há distinção entre funções cujos argumentos são funções e funções cujos argumentos devem ser coisas.
O typechecker ainda me lembra quando eu misturar-se, @ChrisTaylor :)
Funções também são coisas, meu amigo. (Parafraseando Mitt Romney.)
Eu também fiz um curso de lógica e usamos uma definição para domínios que não faziam distinção entre constantes e funções: uma constante (valor) é apenas uma função sem argumentos, ou seja, uma função cujo valor não depende de nenhum valor de entrada e portanto, o co-domínio contém apenas um valor.
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/
Não tenho muita certeza se a lógica de ordem superior e as funções de ordem superior são intercambiáveis ​​com tanta facilidade. Obrigado por apontar Strachey, de alguma forma, li sobre isso.
"Funções de ordem superior" existem no trabalho de Frege (funções que tomam funções como argumentos, por exemplo), muito antes do trabalho fundamental da Igreja sobre o cálculo lambda. Um predicado na lógica clássica do primeiro oder é exatamente uma função com valor booleano, então eu sugiro a sugestão de que essa pode ser a fonte da terminologia.