İlk olarak Yüksek Düzen İşlevi ve / veya Birinci Sınıf Vatandaş terimini kim kazandı?


9

Haskell, O'Caml veya LISP'den çok önce, üst düzey işlevlerin akademik bir araştırma konusu olduğunu ve matematikte Schönfinkel (1967'de) ve Haskell Curry'in (1968'de) körleme gibi teknikleri zaten uyguladığını anladım, ancak herhangi bir programlama dilinde bulunmadan önceydi.

Wikipedia'ya göre şema, birinci sınıf vatandaşlar olarak uygun üst düzey işlevleri sunan ilk dildi, ancak orijinal fikri ilişkilendirebileceğimiz herhangi bir kişi var mı? Belki de 1930'larda lambda hesabını icat eden Alonzo Kilisesi? Daha spesifik olarak, çeşitli kitaplarda ve çevrimiçi kaynaklarda çeşitli açıklamalarda gördüğüm aşağıdaki tanımı kim yaptı?

Bir işlev bağımsız değişken olarak başka bir işlevi aldığında veya bir işlevi döndürdüğünde daha yüksek sırada kabul edilir. İşlevleri bağımsız değişken olarak veya dönüş türü olarak almayan işlevlere birinci dereceden işlev denir.


1
Moses Schönfinkel mi demek istiyorsun? O zaman 1967'de onun hakkında yanılmış olmalısın . 1942'de yoksulluk içinde öldü .
Petr Pudlák

LISP'den önce 1967 de yoktur. :-)
jimwise

Yanıtlar:


9

Frege "Funktion und Begriff" de (1891) şöyle diyor:

Wie nun Funktionen von Gegenständen grundverschieden sind, öylesine sind auch Funktionen, deren Argumente Funktionen sind und sein müssen, grundverschieden von Funktionen, deren Argumente Gegenstände sind und nichts anderes sein können. Açıklama Funktionen erster, jene Funktionen zweiter Stufe.

İngilizce (benim çevirim):

Şeyler ve fonksiyonlar gibi, argümanları da argüman olması gereken fonksiyonlardan radikal olarak farklı olan fonksiyonlar da farklıdır. İkinci düzenin ikinci işlevlerine, ikinci düzenin eski işlevlerine çağırıyorum.


1
harika alıntı! Tabii ki frege olurdu.
sclv

Modern işlevsel programlamanın tam tersi bir görüşe sahip olması ilginçtir (olabildiğince (veya en azından kapalı bir kategoride çalıştığınızda), argümanları işlev olan işlevler ve argümanları bir şey olması gereken işlevler arasında bir ayrım yoktur).
Chris Taylor

Daktilo hala karıştırdığımda bana hatırlatıyor, @ChrisTaylor :)
Ingo

1
Fonksiyonlar da bir şey, dostum. (Mitt Romney'i
yorumlamak için

1
Bir kerede mantıkta bir ders yaptım ve sabitler ve fonksiyonlar arasında ayrım yapmayan alanlar için bir tanım kullandık: sabit (değer) sadece argüman içermeyen bir işlevdir, yani değeri herhangi bir giriş değerine bağlı olmayan bir işlevdir ve bu nedenle ortak alan yalnızca bir değer içerir.
Giorgio

3

Vikipedi makalesi zaten "birinci sınıf vatandaşlar" terminolojisini Strachey ile ilişkilendiriyor.

"Yüksek mertebeden fonksiyon" Yüksek mertebeden birinci mertebeden mantık arasındaki ayrımı tarihlendiririm.

Bkz. Https://en.wikipedia.org/wiki/Higher-order_logic ve http://plato.stanford.edu/entries/logic-higher-order/


Yüksek dereceli mantık ve yüksek dereceli fonksiyonların kolayca değiştirilip değiştirilemeyeceğinden emin değilim. Strachey'i işaret ettiğiniz için teşekkürler, bir şekilde bunu okudum.
Abel

2
"Daha üst düzey işlevler", Frege'nin (örneğin, işlevleri argüman olarak alan işlevler) çalışmasında, Kilise'nin lambda hesabı üzerindeki temel çalışmasından önce gelir. Klasik birinci oder mantıkta bir belirleme tam olarak bir boolean değerli işlevdir, bu yüzden sclv'nin bunun terminolojinin kaynağı olabileceği fikrini ikinci olarak verdim.
Philip JF
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.