Хто вперше ввів термін функція вищого порядку та / або громадянин першого класу?


9

Я зрозумів, що задовго до того, як Haskell, O'Caml або LISP, функції вищого порядку були предметом академічного дослідження, а в математиці Schönfinkel (в 1967 р.) І Haskell Curry (1968 р.) Вже застосовували такі методи, як currying, але це до того, як вона була доступна будь-якою мовою програмування

Згідно з Вікіпедією , схема була першою мовою, яка запровадила належні функції вищого порядку як громадяни першого класу, але чи є хто, до кого ми можемо віднести початкову ідею? Можливо, Церква Алонцо, яка винайшла лямбда-числення в 1930-х роках? Більш конкретно, хто створив таке визначення, яке я бачив у різних переказах у кількох книгах та інтернет-ресурсах?

Функція вважається вищого порядку, коли вона приймає іншу функцію як аргумент або коли вона повертає функцію. Будь-яка функція, яка не приймає функції як аргументи або як типи повернення, називається функцією першого порядку.


1
Ви маєте на увазі Мойсея Шенфінкеля? Тоді ви повинні помилитися з ним у 1967 році . Помер у бідності у 1942 році .
Петро Пудлак

Не є і 1967 рік перед LISP. :-)
jimwise

Відповіді:


9

Фреге говорить у "Funktion und Begriff" (1891):

Wie nun Funktionen von Gegenständen grundverschieden sind, so s au au Funktionen, deren Argumente Funktionen sind und 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.

Англійською мовою (мій переклад):

Як і речі, і функції різні, так і функції, аргументи яких функції докорінно відрізняються від функцій, аргументами яких повинні бути речі. Я називаю останні функції першого порядку, колишні функції другого порядку.


1
чудова цитата! звичайно, це було б вільно.
sclv

Цікаво, що сучасне функціональне програмування займає протилежну точку зору - наскільки це можливо (або, принаймні, щоразу, коли ви працюєте в закритій категорії), немає різниці між функціями, аргументами яких є функції, і функціями, аргументами яких повинні бути речі.
Кріс Тейлор

Шукальник все ще нагадує мені, коли я його змішую, @ChrisTaylor :)
Інго

1
Функції - це теж речі, мій друже. (Перефразувавши Мітта Ромні.)
серпень

1
Я колись теж курс логіки, і ми використовували визначення для доменів, які не розрізняли константи і функції: константа (значення) - це лише функція без аргументів, тобто функція, значення якої не залежить від будь-якого вхідного значення, і тому спільний домен містить лише одне значення.
Джорджіо

3

Стаття у вікіпедії вже приписує термінологію "першокласних громадян" Страчею.

Я б міг уявити, що "функція вищого порядку" датується різницею між логікою вищого порядку та першого порядку.

Дивіться https://en.wikipedia.org/wiki/Higher-order_logic та http://plato.stanford.edu/entries/logic-higher-order/


Я не зовсім впевнений, чи логіка вищого порядку та функції вищого порядку так легко взаємозамінні. Дякую, що вказав на Страчі, я якось прочитав це.
Авель

2
"Функції вищого порядку" існують у роботі Фреге (функції, що приймають функції в якості аргументів, наприклад), що значно передує фундаментальній роботі Церкви над обчисленням лямбда. Присудок у класичній логіці першого відрізку - це саме булева значення, тому я другий привід sclv, що це може бути джерелом термінології.
Philip JF
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.