Pertanyaan mendasar:
Apa yang dilakukan kalkulus lambda bagi kita yang tidak dapat kita lakukan dengan properti fungsi dasar dan notasi yang umumnya dipelajari dalam aljabar sekolah menengah?
Pertama-tama, apa artinya abstrak dalam konteks kalkulus lambda? Pemahaman saya tentang kata abstrak adalah sesuatu yang terpisah dari mesin, ringkasan konsep dari suatu konsep.
Namun, fungsi lambda, dengan menghilangkan nama fungsi, mencegah tingkat abstraksi tertentu. Sebagai contoh:
f(x) = x + 2
h(x, y) = x + 5 y
Tetapi bahkan tanpa mendefinisikan mesin dari fungsi-fungsi ini, kita dapat dengan mudah berbicara tentang komposisi mereka. Sebagai contoh:
1. h(x, y) . f(x) . f(x) . h(x, y) or
2. h . f . f . h
Kita bisa memasukkan argumen jika kita mau, atau kita bisa abstrak sepenuhnya untuk memberikan gambaran tentang apa yang terjadi. Dan kita dapat dengan cepat menguranginya menjadi satu fungsi. Mari kita lihat komposisi 2. Saya dapat memiliki lapisan detail siswa yang dapat saya tulis dengan tergantung pada penekanan saya:
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
Mari kita lakukan di atas dengan kalkulus lambda, atau setidaknya mendefinisikan fungsi. Saya tidak yakin ini benar, tetapi saya percaya bahwa penambahan ekspresi pertama dan kedua oleh 2.
(λuv.u(u(uv)))(λwyx.y(wyx))x
Dan untuk mengalikannya dengan 5y.
(λz.y(5z))
Alih-alih abstrak, ini tampaknya masuk ke dalam mesin apa artinya menambahkan, memperbanyak, dll. Abstraksi, dalam pikiran saya, berarti tingkat yang lebih tinggi daripada tingkat yang lebih rendah.
Lebih jauh, saya berjuang untuk melihat mengapa kalkulus lambda bahkan merupakan suatu hal. Apa kelebihannya?
(λuv.u(u(uv)))(λwyx.y(wyx))x
lebih
h(x) = x + 5 y
atau notasi gabungan
Hxy.x+5y
atau bahkan notasi Haskell
h x y = x + 5 * y
Sekali lagi, apa yang dilakukan kalkulus lambda untuk kita yang tidak bisa kita lakukan dengan properti fungsi gaya f (x) dan notasi yang banyak dikenal.