Zrozumiałem, że na długo przed Haskell, O'Caml lub LISP funkcje wyższego rzędu były przedmiotem badań akademickich, a w matematyce Schönfinkel (w 1967 r.) I Haskell Curry (w 1968 r.) Stosowali już techniki takie jak curry, ale że było zanim było dostępne w dowolnym języku programowania.
Schemat, według Wikipedii , był pierwszym językiem wprowadzić odpowiednie funkcje wyższego rzędu jako obywateli pierwszej klasy, ale jest tam ktoś możemy przypisywać oryginalny pomysł? Może Alonzo Church, który wynalazł rachunek lambda w latach 30. XX wieku? Mówiąc dokładniej, kto wymyślił następującą definicję, którą zobaczyłem w różnych parafrazach w kilku książkach i zasobach internetowych?
Funkcja jest uważana za wyższą, gdy bierze inną funkcję jako argument lub gdy zwraca funkcję. Każda funkcja, która nie przyjmuje funkcji jako argumentów lub typów zwracanych, nazywana jest funkcją pierwszego rzędu.
Odpowiedzi:
Frege mówi w „Funktion und Begriff” (1891):
W języku angielskim (moje tłumaczenie):
Rzeczy i funkcje są różne, podobnie jak funkcje, których argumenty są funkcjami radykalnie odmiennymi od funkcji, których argumentami muszą być rzeczy. Nazywam te ostatnie funkcje pierwszego rzędu, poprzednie funkcje drugiego rzędu.
źródło
Artykuł w Wikipedii przypisuje już Stracheyowi terminologię „obywateli pierwszej klasy”.
„Funkcja wyższego rzędu” Wyobrażam sobie, że sięga rozróżnienia między logiką wyższego rzędu a logiką pierwszego rzędu.
Zobacz https://en.wikipedia.org/wiki/Higher-order_logic i http://plato.stanford.edu/entries/logic-higher-order/
źródło