Temel soru:
Lambda hesabı bizim için, ortaokul cebirinde genel olarak öğrenilen temel işlev özellikleri ve notasyon ile yapamayacağımız için ne yapar ?
Her şeyden önce, soyut lambda hesabı bağlamında ne anlama geliyor? Soyut kelimesini anlamam, bir kavramın kavramsal özeti olan makinelerden ayrılan bir şeydir.
Ancak lambda fonksiyonları, fonksiyon isimlerini kaldırarak belirli bir soyutlama seviyesini önler. Örneğin:
f(x) = x + 2
h(x, y) = x + 5 y
Ancak bu işlevlerin makinelerini tanımlamaksızın bile, bileşimleri hakkında kolayca konuşabiliriz. Örneğin:
1. h(x, y) . f(x) . f(x) . h(x, y) or
2. h . f . f . h
İstersek argümanları ekleyebiliriz ve olup bitenler hakkında genel bir fikir vermek için tamamen soyutlayabiliriz. Ve onları hızla tek bir işleve indirebiliriz. Kompozisyon 2'ye bakalım. Vurgulamaya bağlı olarak yazabileceğim öğrenci detay katmanlarım olabilir:
g = h . f . f . h
g(x, y) = h(x, y) . f(x) . f(x) . h(x, y)
g(x, y) = h . f . f . h = x + 10 y + 4
Yukarıdakileri lambda hesabı ile gerçekleştirelim veya en azından fonksiyonları tanımlayalım. Bunun doğru olduğundan emin değilim, ama ilk ve ikinci ifadelerin 2 kat arttığına inanıyorum.
(λuv.u(u(uv)))(λwyx.y(wyx))x
Ve 5y ile çarpmak.
(λz.y(5z))
Soyut olmaktan ziyade, bu, ekleme, çarpma, vb. Anlamına gelen makineye giriyor gibi gözüküyor.
Dahası, lambda hesabının neden bir şey olduğunu görmek için uğraşıyorum. Avantajı nedir
(λuv.u(u(uv)))(λwyx.y(wyx))x
bitmiş
h(x) = x + 5 y
veya kombine gösterim
Hxy.x+5y
hatta Haskell'in gösterimi
h x y = x + 5 * y
Yine, lambda hesabı bizim için ne yapıyor? F (x) tarzı fonksiyon özellikleri ve çoğunun aşina olduğu notasyon ile yapamayız.