Siapa yang pertama kali menciptakan istilah Fungsi Urutan Tinggi dan / atau Warga Kelas Satu?

9

Saya telah memahami bahwa jauh sebelum Haskell, O'Caml atau LISP, fungsi-fungsi tingkat tinggi adalah subjek penelitian akademik dan dalam matematika, Schönfinkel (pada 1967) dan Haskell Curry (pada 1968) sudah menerapkan teknik seperti kari, tetapi itu sebelum tersedia dalam bahasa pemrograman apa pun.

Skema, menurut Wikipedia , adalah bahasa pertama yang memperkenalkan fungsi tingkat tinggi yang layak sebagai warga negara kelas satu, tetapi adakah orang yang bisa kita kaitkan dengan ide aslinya? Mungkin Gereja Alonzo, yang menemukan kalkulus lambda di tahun 1930-an? Lebih khusus lagi, siapa yang menciptakan definisi berikut, yang saya lihat dalam berbagai parafrase di dalam beberapa buku dan sumber daya online?

Suatu fungsi dianggap orde tinggi ketika mengambil fungsi lain sebagai argumen atau ketika mengembalikan fungsi. Fungsi apa pun yang tidak mengambil fungsi sebagai argumen atau sebagai tipe pengembalian disebut fungsi urutan pertama.

Abel
sumber
1
Maksud Anda Moses Schönfinkel? Maka Anda pasti salah tentang dia pada tahun 1967 . Dia meninggal dalam kemiskinan pada tahun 1942 .
Petr Pudlák
1967 juga belum ada sebelum LISP. :-)
jimwise

Jawaban:

9

Frege mengatakan dalam "Funktion und Begriff" (1891):

Dengan menggunakan Funktionen von Gegenständen grundverschieden sind, begitu juga 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.

Dalam bahasa Inggris (terjemahan saya):

Seperti benda dan fungsi berbeda, begitu pula fungsi, yang argumennya adalah fungsi yang secara radikal berbeda dari fungsi yang argumennya adalah benda. Saya menyebut fungsi terakhir dari urutan pertama, fungsi sebelumnya dari urutan kedua.

Ingo
sumber
1
kutipan bagus! tentu saja itu akan frege.
sclv
Menarik bahwa pemrograman fungsional modern mengambil pandangan yang berlawanan - sejauh mungkin (atau setidaknya, setiap kali Anda bekerja dalam kategori tertutup) tidak ada perbedaan antara fungsi yang argumennya berfungsi, dan fungsi yang argumennya pasti benda.
Chris Taylor
Typechecker masih mengingatkan saya ketika saya mencampurnya, @ChrisTaylor :)
Ingo
1
Fungsinya juga, teman. (Mengutip Mitt Romney.)
Agustus
1
Saya pernah terlalu kursus dalam logika dan kami menggunakan definisi untuk domain yang tidak membuat perbedaan antara konstanta dan fungsi: konstanta (nilai) hanya fungsi tanpa argumen, yaitu fungsi yang nilainya tidak tergantung pada nilai input apa pun, dan oleh karena itu co-domain hanya berisi satu nilai.
Giorgio
3

Artikel wikipedia sudah menghubungkan terminologi "warga negara kelas satu" dengan Strachey.

"Fungsi orde tinggi" Saya membayangkan tanggal kembali ke perbedaan antara orde tinggi dan logika orde pertama.

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

sclv
sumber
Saya tidak sepenuhnya yakin apakah logika tingkat tinggi dan fungsi tingkat tinggi dapat dipertukarkan dengan mudah. Terima kasih telah menunjukkan Strachey, saya entah bagaimana membacanya.
Abel
2
"Fungsi tingkat tinggi" ada dalam karya Frege (fungsi mengambil fungsi sebagai argumen misalnya), jauh mendahului pekerjaan dasar Gereja pada kalkulus lambda. Predikat dalam logika oder klasik pertama persis merupakan fungsi bernilai boolean, jadi saya menyarankan saran ini bahwa ini mungkin merupakan sumber terminologi.
Philip JF