Lambda matematiği ve birleştirici mantık aynı mıdır?


26

Şu anda Hindley ve Seldin tarafından " Lambda-Matematik ve Birleştiriciler " i okuyorum. Ben bir uzman değilim ama lambda hesabına, işlevsel programlamaya katılımı (Lisp ve SICP ile ve şimdi de R ve Haskell ile) ilgilenmesi nedeniyle her zaman ilgi duydum.

" İkili Lambda Matematik ve Birleşme Mantığı" nda , John Tromp şöyle diyor:

CL bir lambda hesabının alt kümesi olarak görülebilir ... teoriler büyük ölçüde aynıdır, uzatma kuralının varlığında eşdeğer olurlar.

Hangi şartlar altında lambda hesabı yerine birleştirici mantık kullanılır ?

Herhangi bir referans takdir edilecektir.


HP Barendregt tarafından "Lambda hesabı: sözdizimi ve anlambilim" konusuna bir bakın.
Kaveh

Yanıtlar:


15

Birleştirici mantığı ayırt eden, değişken olmadığıdır. Bu, bazen değişkenlerin durumunun zor olduğu meta matematik ve felsefi mantıkta faydalıdır.

Değişkenleri yönetmek bir baş ağrısı olabileceğinden, uygulamalarda da faydalı olabilir. Bakınız, örneğin, Hughes, 1982, Süper birleştiriciler: Uygulamalı diller için yeni bir uygulama yöntemi


3
Birleştirici mantığın uygulamalarda artık yararlı olmadığı düşünülmekte ve “değişkenleri yönetmek baş ağrısı olabilir” diye kullanılmamıştır. Tembel diller için grafik indirgemesi uygulamak için birleştiriciler ve varyantlar kullanılmıştır, ancak bugünlerde Haskell (en belirgin tembel dil) grafik indirgemeyi uygulamak için çok daha makul teknikler kullanmaktadır.
Blaisorblade

Bkz. Örneğin, S. Peyton Jones, 1992, "Stok donanımına tembel işlevsel diller uygulamak: Spinless Tagless G-machine" - research.microsoft.com/copyright/accept.asp?path=/users/simonpj/…
Blaisorblade

2
@Blaisorblade: Tembel diller için grafik azaltma uygulamak için kombinatorler ve değişkenler kullanıldı - Dikkatli olun: Haskell ve ghc aynı değildir ve literatürde birkaç süper-madde bazlı Haskells bulunmaktadır. Ancak doğrudur, işlevsel programlamadaki son teknoloji, karmaşıklığına ağır basan ortamların kullanımında verimlilik avantajları buldu. Örneğin, bunun doğru olmadığı durumlarda yüksek-dereceli mantık programlamasında kullanılan süper-titleyicileri görüyorsunuz. Süper-besleyiciler, yüksek dereceli programlamanın uygulanmasında kullanılan tekniklerin envanterinin bir parçası olmaya devam etmektedir.
Charles Stewart

Üstünleştiriciler, sınırlandırılmış olanları değil sadece serbest değişkenleri önlerler; bu nedenle IMHO, kendi başına birleştirme mantığının kullanımı olarak kabul edilemez. Bunlar çoğunlukla özel lambda terimleridir. Süpektodinatörler, lambdalı programlar (eğer varsa emin değilseniz) ve GHC'nin uygulaması (bir kapanıştan serbest değişkenlere giden işaretçilerin, saflık sayesinde, ev sahibi işlevinden kopyalanabileceği) arasında çok daha küçük farklılıklar vardır. Bunu söylediğimde, GHC'ye çok benzeyen Utrecht Haskell Derleyicisini de düşünüyordum, ancak IIRC lambda kaldırmayı kullanıyor; yine de, bu CL değil.
Blaisorblade

Yüksek dereceli mantık programlaması bilmiyordum - Üzerinde bu yazıyı buldum: springerlink.com/content/t68777w270713p5n . Ne yazık ki, okumak için zamanım olma ihtimali düşük.
Blaisorblade

4

John Tromp'un yorumuna atıfta bulunarak, birleştirici mantığın lamda matematiğinden çok farklı hissettiğini söylemek istiyorum . İlgi alanınız işlevsel programlamadan kaynaklandığından, gerçekten birleşim mantığı hakkında fazla bir şey bilmek istemezsiniz.

Birleştirici mantığa ilişkin en sevdiğim ders , Cambridge Üniversitesi'nden bu ders notlarında .

Bununla birlikte, tembel (ya da uygulamalı) dillerin uygulanmasını açıklamak; önceki yorumumda da belirtildiği gibi, bu tür teknikler artık modası geçmiş.


Birleştirici diller artık tembel / uygulamalı dilleri uygulamak için kullanılmadığı için, şimdi sanat tekniklerinin durumu nedir? Ve bu teknikleri sınıflandırmak için bir isim / kategori var mı?
CMCDragonkai

@ CMCDragonkai Tartışma için cstheory.stackexchange.com/a/306/989 adresindeki yorumlara bakın . Kısa pratik cevap, “GHC'nin ne yaptığı ile ilgili makalelere bakınız”: tembel programları hızlı yapmak için bir araya getirilen çeşitli farklı teknikler (hem STG makinesi hem de katılık analizi gibi optimizasyonlar dahil).
Blaisorblade
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.