Saat ini saya membaca " Lambda-Calculus and Combinators " oleh Hindley dan Seldin. Saya bukan ahli, tetapi selalu tertarik pada kalkulus lambda karena keterlibatan dengan pemrograman fungsional (dimulai dengan Lisp dan SICP, dan sekarang dengan R dan Haskell).
Dalam " Binary Lambda Calculus and Combinatory Logic" , John Tromp menyatakan:
CL dapat dipandang sebagai bagian dari kalkulus lambda ... teorinya sebagian besar sama, menjadi setara di hadapan aturan ekstensionalitas.
Dalam kondisi apa seseorang akan menggunakan logika kombinatori bukannya kalkulus lambda ?
Referensi apa pun akan dihargai.
Jawaban:
Yang membedakan logika kombinatorik adalah bahwa ia bebas variabel. Ini kadang-kadang berguna dalam metamathematics dan logika filosofis, di mana status variabel rumit.
Mungkin juga berguna dalam implementasi, karena mengelola variabel dapat menjadi sakit kepala. Cf., misalnya, Hughes, 1982, Super-combinators: Metode implementasi baru untuk bahasa aplikatif
sumber
Merujuk pada komentar John Tromp, saya ingin berkomentar bahwa logika kombinasi terasa sangat berbeda dari kalkulus lambda. Karena minat Anda berasal dari pemrograman fungsional, Anda benar-benar tidak ingin tahu banyak tentang logika kombinatorik.
Tutorial favorit saya tentang logika kombinasi ada dalam catatan kuliah ini dari Universitas Cambridge.
Namun, mereka diperkenalkan untuk menjelaskan implementasi yang disebut bahasa malas (atau aplikatif); seperti yang disebutkan dalam komentar saya sebelumnya, teknik seperti itu sekarang sudah ketinggalan zaman.
sumber