Chi ha coniato per primo il termine Funzione di ordine superiore e / o Cittadino di prima classe?


9

Ho capito che molto prima di Haskell, O'Caml o LISP, le funzioni di ordine superiore erano una materia di ricerca accademica e in matematica, Schönfinkel (nel 1967) e Haskell Curry (nel 1968) avevano già applicato tecniche come il curry, ma che era prima che fosse disponibile in qualsiasi linguaggio di programmazione.

Lo schema, secondo Wikipedia , è stata la prima lingua a introdurre funzioni di ordine superiore adeguate come cittadini di prima classe, ma c'è qualcuno a cui possiamo attribuire l'idea originale? Forse Alonzo Church, che ha inventato il calcolo lambda negli anni '30? Più specificamente, chi ha coniato la seguente definizione, che ho visto in varie parafrasi in giro in diversi libri e risorse online?

Una funzione è considerata di ordine superiore quando accetta un'altra funzione come argomento o quando restituisce una funzione. Qualsiasi funzione che non accetta funzioni come argomenti o come tipi restituiti è chiamata funzione del primo ordine.


1
Intendi Moses Schönfinkel? Quindi devi sbagliarti su di lui nel 1967 . Morì in povertà nel 1942 .
Petr Pudlák,

Né è il 1967 prima di LISP. :-)
jimwise

Risposte:


9

Frege dice in "Funktion und Begriff" (1891):

Wie nun Funktionen von Gegenständen grundverschieden sind, so sind auch Funktionen, deren Argumente Funktionen sind and sein müssen, grundverschieden von Funktionen, deren Argumente Gegenstände sind und nichts anderes sein können. Diese nenne ich Funktionen erster, jene Funktionen zweiter Stufe.

In inglese (la mia traduzione):

Come le cose e le funzioni sono diverse, così come le funzioni, i cui argomenti sono funzioni radicalmente diverse dalle funzioni i cui argomenti devono essere cose. Chiamo le ultime funzioni del primo ordine, le prime funzioni del secondo ordine.


1
grande citazione! ovviamente sarebbe frege.
sclv,

È interessante notare che la moderna programmazione funzionale ha una visione opposta - per quanto possibile (o almeno, ogni volta che lavori in una categoria chiusa) non c'è distinzione tra funzioni i cui argomenti sono funzioni e funzioni i cui argomenti devono essere cose.
Chris Taylor,

Il typechecker mi ricorda ancora quando lo confondo, @ChrisTaylor :)
Ingo

1
Anche le funzioni sono cose, amico mio. (Per parafrasare Mitt Romney.)
agosto

1
Anche io una volta ho seguito un corso di logica e abbiamo usato una definizione per domini che non faceva distinzioni tra costanti e funzioni: una costante (valore) è solo una funzione senza argomenti, vale a dire una funzione il cui valore non dipende da alcun valore di input, e pertanto il co-dominio contiene solo un valore.
Giorgio,

3

L'articolo di Wikipedia già attribuisce la terminologia dei "cittadini di prima classe" a Strachey.

"Funzione di ordine superiore" Immagino che risale alla distinzione tra logica di ordine superiore e logica del primo ordine.

Vedi https://en.wikipedia.org/wiki/Higher-order_logic e http://plato.stanford.edu/entries/logic-higher-order/


Non sono del tutto sicuro se la logica di ordine superiore e le funzioni di ordine superiore siano intercambiabili così facilmente. Grazie per aver sottolineato Strachey, in qualche modo l'ho letto.
Abele,

2
Le "funzioni di ordine superiore" esistono nell'opera di Frege (funzioni che assumono funzioni come argomenti ad esempio), che precede di gran lunga il lavoro di base della Chiesa sul calcolo lambda. Un predicato nella prima logica classica è esattamente una funzione valutata booleana, quindi secondo il suggerimento di sclv che questa potrebbe essere la fonte della terminologia.
Philip JF,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.