¿Quién acuñó primero el término Función de orden superior y / o Ciudadano de primera clase?

9

He llegado a comprender que mucho antes de Haskell, O'Caml o LISP, las funciones de orden superior eran un tema de investigación académica y en matemáticas, Schönfinkel (en 1967) y Haskell Curry (en 1968) ya aplicaban técnicas como el curry, pero eso fue antes de que estuviera disponible en cualquier lenguaje de programación.

Scheme, según Wikipedia , fue el primer idioma en introducir funciones apropiadas de orden superior como ciudadanos de primera clase, pero ¿hay alguien a quien podamos atribuirle la idea original? ¿Quizás Alonzo Church, quien inventó el cálculo lambda en la década de 1930? Más específicamente, ¿quién acuñó la siguiente definición, que vi en varias paráfrasis en varios libros y recursos en línea?

Una función se considera de orden superior cuando toma otra función como argumento o cuando devuelve una función. Cualquier función que no tome funciones como argumentos o como tipos de retorno se denomina función de primer orden.

Abel
fuente
1
¿Te refieres a Moses Schönfinkel? Entonces debes estar equivocado acerca de él en 1967 . Murió en la pobreza en 1942 .
Petr Pudlák
Tampoco es 1967 antes de LISP. :-)
jimwise

Respuestas:

9

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

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

En inglés (mi traducción):

Al igual que las cosas y las funciones son diferentes, también lo son las funciones, cuyos argumentos son funciones radicalmente diferentes de las funciones cuyos argumentos deben ser cosas. Llamo a las últimas funciones de primer orden, las funciones anteriores de segundo orden.

Ingo
fuente
1
gran cita! Por supuesto que sería frege.
sclv
Es interesante que la programación funcional moderna adopte la visión opuesta: en la medida de lo posible (o al menos, cuando trabaje en una categoría cerrada) no hay distinción entre funciones cuyos argumentos son funciones y funciones cuyos argumentos deben ser cosas.
Chris Taylor
El typechecker todavía me recuerda cuando lo mezclo, @ChrisTaylor :)
Ingo
1
Las funciones también son cosas, mi amigo. (Parafraseando a Mitt Romney.)
augustss
1
También hice un curso de lógica y usamos una definición para dominios que no hacían distinción entre constantes y funciones: una constante (valor) es solo una función sin argumentos, es decir, una función cuyo valor no depende de ningún valor de entrada, y por lo tanto, el codominio contiene solo un valor.
Giorgio
3

El artículo de Wikipedia ya atribuye la terminología de "ciudadanos de primera clase" a Strachey.

"Función de orden superior" Me imagino que se remonta a la distinción entre orden superior y lógica de primer orden.

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

sclv
fuente
No estoy completamente seguro de si la lógica de orden superior y las funciones de orden superior son intercambiables tan fácilmente. Gracias por señalar a Strachey, de alguna manera leí eso.
Abel
2
Las "funciones de orden superior" existen en el trabajo de Frege (funciones que toman funciones como argumentos, por ejemplo), muy anteriores al trabajo fundamental de la Iglesia sobre el cálculo lambda. Un predicado en la lógica clásica del primer oder es exactamente una función de valor booleano, por lo que sugiero en segundo lugar que esta puede ser la fuente de la terminología.
Philip JF