Lambda The Ultimate, lambda-calculus'un lambdalarının her yerleşik kavramı her programlama dilinde, geçmiş, şimdi ve gelecekte etkili bir şekilde uygulayabileceği fikrini ifade eder . Sınıflar, Modüller, Paketler, Nesneler, Metotlar, Kontrol-Akış, Veri Yapıları, Makrolar, Süreklilikler, Coutinler, Jeneratörler, Liste Kavramaları, Akışlar vb.
Olduğu gibi, bu nihai doğa bir Anonim İşlevi için ayakta durmayı da içerir . Ancak lambdalar özünde sadece isimsiz işlevlerle sınırlı değildir. Bu şekilde öğretilirler, ancak lambda'nın özü isimleri olmayan matematiksel işlevlerden çok daha derindir. Başka bir deyişle, şu konu ile ilgileniyorum:
Lambda'nın ne anlama geldiğini anlıyorum, adsız bir işlev fikri hem basit hem de güçlüdür, ancak bu bağlamda "nihai" ifadenin ne anlama geldiğini anlayamıyorum.
Pratik bir mesele olarak, lambdaların değer çağrısı / uygulayıcı olmayan (ki bu matematiksel fonksiyonlar) sözdizimsel soyutlamalar ('makrolar') olarak kullanılması, lambdaların gerçekten de, Her programlama dili işleme sisteminin özü.
Teori için: Bertrand Russell'ın paradoksuyla ve naif küme teorisinde Anlama Aksiyomları (ve Uzatma) ile ilginç bir bağlantı var. Bir lambda, set-kurucu notasyonunun set yapacağı şeyi işler: lambdalar, fonksiyon-kurucu notasyonudır. Genellikle göz ardı edilen (lambda (x) (* xx)) ile neyin değerlendirildiği (kareler arasındaki işlev) arasında önemli bir fark vardır. Eğer biri genel olarak ikisini ayırt etmeyi başaramazsa, yani notasyon ile cümle arasında (Kilise ve Frege'nin her ikisinin de yaptığı bir hata), o zaman biri paradokslara karşı geliyor. Kümeler ve Frege için, hatayı gösteren Bertrand Russell'ın Seville Berberi; Fonksiyonlar ve Kilise için, Alan Turing'in Oracle Halting'i.
Paradoksların iyi, pratik şeyler olduğuna dikkat edin. EVAL'ın açıklanmasını istiyoruz ve lambdaların sadece işlevlerden daha fazlasını ifade etmesini istiyoruz. Bunun zıtlığın yol açtığını varsaymak, istenen sonuçtur; güzel bir akıl sağlığı testi olarak kullanılır: lambdalar yalnızca yalnızca işlevleri ifade ederlerse en üst düzeyde olabilirler.
Raket (eski adıyla PLT Şeması) pratik programlama dillerinin gerçekten sıfırdan başlayarak 'sadece lambda' üzerine kurulabileceği fikrini savunmaya devam ediyor.
Çekirdek , Shutt tarafından, lambda'nın gerçekten nihai bir soyutlama olmadığını savunuyor. Sussman'a FEXPR olarak bilinen hala daha ilkel bir kavram olduğunu (Yunanca, dublajlı vau için) olduğunu savunuyor.
Felleisin ve şirket (Raket için) , kaynak kodunu birden fazla çeviri aşaması boyunca çalıştırmak anlamına gelen (C'nin ön işlemesinde olduğu gibi, ancak her biri aynı dili kullanarak), Shutt'ın vau gücünün büyük bölümünü fazlar veya metal düzeylerini kullanarak elde eder. 'adım' ve 'adımlar' aslında zaman içinde tamamen farklı değildir). (Yani, daha yüksek bir evrede bir lambranın yeterince iyi bir değere yaklaştığını iddia ediyorlar.) Aslında, fazların FEXPR'lerden daha iyi olduğunu, tam olarak daha sınırlı oldukları için savunuyorlar ; Kısacası, "FEXPR'ler çok güçlü" (bkz. Wutt'un Shutt'ın karşı çıktığı çalışmaları).
Brian Smith'in 3-Lisp'i, "Programlama dillerinde usule yansıtma", LISP benzeri diller teorisinin, notasyonları (semboller / dil / programlar) belirgin bir şekilde ayırt edici ifadelerden (şeyler / referanslar / değerler / sonuçlar) ayırma çizgileri boyunca titizlikle yeniden düzenlemeye çalışıyor. ). http://dspace.mit.edu/handle/1721.1/15961
Mitchell Wand'ın "FEXPR'lerin Teorisi Önemsizdir" tabutuna (geçici?) Tabutuna daha fazla çivi gönderiyor. Kent Pittman'ın FEXPR'ler için dövme yapması (Felleisen gibi, FEXPR'lerin derlenmesini çok zorlaştırdığını iddia ediyor).
Paul Graham, "On Lisp" de güç ve uzunlukla gerçek gücün, değerlerin dönüştürücüleri (matematiksel işlevler) yerine sözdizimi dönüştürücüleri (makrolar) olarak lambdalar olduğunu savunuyor. Plotkin'in uygulamalı lambda-calculus'u geliştirmesi biraz zıtlık olarak alınabilir, çünkü Plotkin, Church'ün hesabını kendi değerine göre / uygulama altkümesiyle sınırlar. Elbette, uygulayıcı parçanın verimli bir şekilde kullanılması çok önemlidir, bu nedenle lambda kullanımı için uzmanlaşmış bir teori geliştirmek önemlidir. (Plotkin ve Graham birbirlerine karşı tartışmazlar.)
Aslında, genel olarak, Lambda'nın Nihai olduğu kavramı, verimlilik ve ifade edilebilirlik arasındaki ebedi tartışmada böyle bir bükümdür; lambda'nın ifade için en üst araç olduğu ve yeterli çalışma yapıldığında sonuçta verimlilik için de en üst araç olacağı kanıtıdır. Başka bir deyişle, istersek, programlama dillerinin geleceğini lambda hesabının pratik olarak ilgili tüm parçalarının verimli bir şekilde nasıl uygulanacağı üzerine yapılan çalışmadan başka bir şey olarak görmeyebiliriz.
Landin'in "Yeni 700 Programlama Dilleri", http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf , Lambda'nın Ultimate olduğu kavramının geliştirilmesine katkıda bulunan erişilebilir bir referanstır.