J'ai compris que bien avant Haskell, O'Caml ou LISP, les fonctions d'ordre supérieur étaient un sujet de recherche universitaire et en mathématiques, Schönfinkel (en 1967) et Haskell Curry (en 1968) appliquaient déjà des techniques telles que le curry, mais que était avant qu'il ne soit disponible dans n'importe quel langage de programmation.
Le schéma, selon Wikipedia , a été la première langue à introduire des fonctions appropriées d'ordre supérieur en tant que citoyens de première classe, mais y a-t-il quelqu'un à qui attribuer l'idée originale? Peut-être l'église Alonzo, qui a inventé le calcul lambda dans les années 1930? Plus précisément, qui a inventé la définition suivante, que j'ai vue dans diverses paraphrases dans plusieurs livres et ressources en ligne?
Une fonction est considérée comme étant d'ordre supérieur lorsqu'elle prend une autre fonction en argument ou lorsqu'elle renvoie une fonction. Toute fonction ne prenant pas de fonctions comme arguments ou comme types de retour est appelée fonction de premier ordre.
Réponses:
Frege dit dans "Funktion und Begriff" (1891):
En anglais (ma traduction):
Tout comme les choses et les fonctions sont différentes, les fonctions dont les arguments sont des fonctions radicalement différentes des fonctions dont les arguments doivent être des choses sont également différentes. J'appelle ces dernières fonctions de premier ordre, les anciennes fonctions de second ordre.
la source
L'article de wikipedia attribue déjà la terminologie des «citoyens de première classe» à Strachey.
"Fonction d'ordre supérieur" J'imagine que cela remonte à la distinction entre la logique d'ordre supérieur et la logique du premier ordre.
Voir https://en.wikipedia.org/wiki/Higher-order_logic et http://plato.stanford.edu/entries/logic-higher-order/
la source