Ich habe verstanden, dass Funktionen höherer Ordnung lange vor Haskell, O'Caml oder LISP ein akademisches Forschungsfach waren und Schönfinkel (1967) und Haskell Curry (1968) in der Mathematik bereits Techniken wie Curry anwenden, aber das war, bevor es in irgendeiner Programmiersprache verfügbar war.
Laut Wikipedia war das Schema die erste Sprache, die als erstklassige Bürger ordnungsgemäße Funktionen höherer Ordnung einführte. Aber gibt es jemanden, dem wir die ursprüngliche Idee zuschreiben können? Vielleicht Alonzo Church, der in den 1930er Jahren den Lambda-Kalkül erfunden hat? Genauer gesagt, wer hat die folgende Definition geprägt, die ich in verschiedenen Paraphrasen in mehreren Büchern und Online-Ressourcen gesehen habe?
Eine Funktion wird als höherwertig angesehen, wenn sie eine andere Funktion als Argument verwendet oder eine Funktion zurückgibt. Jede Funktion, die keine Funktionen als Argumente oder als Rückgabetypen verwendet, wird als Funktion erster Ordnung bezeichnet.
Antworten:
Frege sagt in "Funktion und Begriff" (1891):
In Englisch (meine Übersetzung):
So wie Dinge und Funktionen unterschiedlich sind, sind auch Funktionen unterschiedlich, deren Argumente sich grundlegend von Funktionen unterscheiden, deren Argumente Dinge sein müssen. Ich nenne die letzteren Funktionen erster Ordnung, die ersteren Funktionen zweiter Ordnung.
quelle
Der Wikipedia-Artikel schreibt Strachey bereits die Terminologie "erstklassige Bürger" zu.
"Funktion höherer Ordnung" würde ich mir vorstellen, geht auf die Unterscheidung zwischen Logik höherer Ordnung und Logik erster Ordnung zurück.
Siehe https://en.wikipedia.org/wiki/Higher-order_logic und http://plato.stanford.edu/entries/logic-higher-order/
quelle