Saya mengerti apa itu, tapi saya tidak melihat bagaimana itu digunakan untuk algoritma atau apa pun. Mungkin saya kehilangan sesuatu. Saya butuh seseorang untuk memberi saya contoh bagaimana itu bisa digunakan sehingga saya bisa memahaminya dengan lebih baik.
algorithms
lambda-calculus
combinatory-logic
Kenneth Onyebinachi
sumber
sumber
Jawaban:
Aplikasi kalkulus lambda yang jelas adalah bahasa pemrograman fungsional apa pun (misalnya, Lisp, ML, Haskell), dan bahasa apa pun yang mendukung fungsi anonim.
Sedangkan untuk kalkulus kombinator, apakah harus ada "aplikasi dunia nyata"? Mesin Turing, misalnya, hampir tidak pernah digunakan "di dunia nyata" tetapi mereka membentuk dasar teori komputasi. Salah satu fitur berguna dari kalkulus kombinator adalah mereka lebih sederhana daripada sistem, misalnya, mesin Turing. Jika Anda ingin membuktikan bahwa beberapa sistem lain adalah Turing-complete, mungkin lebih mudah untuk menunjukkan bagaimana ia dapat mensimulasikan kombinatorator daripada menunjukkannya dapat mensimulasikan mesin Turing.
sumber
Saya menemukan SKI berguna untuk memahami beberapa aksioma logis.
Sebagai contoh, aksioma gaya Hilbert dari implikasi (intuitionistic) adalah
Pertama kali saya melihat aksioma ini, saya bertanya-tanya mengapa mereka harus bekerja. Tentu, mudah untuk memeriksa bahwa mereka pegang. Tetapi mengapa ini harus cukup, yaitu mengapa menggunakan dua postulat ini saja sudah cukup untuk membuktikan (melalui modus ponens) semua tautologi implikasi lainnya? Misteri ... atau itu?
Nah, ternyata setiap tautologi harus sesuai dengan jenis istilah lambda, berkat isomorfisme Curry-Howard. Tetapi kata istilah lambda dapat secara setara ditulis ulang dalam istilah combinators saja. Jadi, jenis dan harus menghasilkan, melalui aplikasi, jenis tautologi apa pun. Dan memang, dua aksioma di atas adalah tipe yang paling umum untukS,K S K S dan K .
sumber
Lihatlah Microsoft's LINQ (Language INtegrated Query). Itu membuat ekstensif dan cukup langsung menggunakan kalkulus lambda untuk memanipulasi dan mengubah pohon ekspresi. Mungkin contoh yang paling lengkap dan canggih adalah Linq2SQL (implementasi SQL Server) yang secara efisien melakukan transformasi kompleks yang memisahkan bagian-bagian dari pohon ekspresi yang dapat didelegasikan ke server database.
Ini bukan teknologi pertama yang memungkinkan query yang menggabungkan data dari beberapa sumber, tetapi mungkin yang pertama mengotomatiskan penguraian dependensi untuk meningkatkan kemampuan manipulasi massal dari server database. Ini tidak sempurna (kadang-kadang Anda harus membantunya) tetapi itu bekerja kasar dengan sangat baik dan dengan perhatian pada detail Anda tidak akan dapatkan dari manusia.
Bila Anda lakukan harus membantu keluar, memahami kalkulus akan membawa Anda jauh ke arah mencari tahu apa yang mengganggu itu - sehingga selain Apa gunanya? ada jawaban Anda untuk Mengapa saya harus belajar ini ketika mesin akan melakukannya untuk saya?
sumber