Lambda The Ultimate mengacu pada gagasan bahwa lambda dari lambda-calculus dapat secara efektif mengimplementasikan setiap konsep bawaan dalam setiap bahasa pemrograman, dulu, sekarang, dan masa depan. Kelas, Modul, Paket, Objek, Metode, Aliran-Kontrol, Struktur Data, Makro, Lanjutan, Coroutine, Generator, Daftar Pemahaman, Streaming, dan sebagainya.
Ketika hal itu terjadi, sifat tertinggi itu termasuk berdiri untuk Fungsi Anonim. Tetapi lambda, pada intinya, tidak terbatas pada fungsi anonim saja. Mereka diajari seperti itu, tetapi esensi lambda jauh lebih dalam daripada fungsi matematika tanpa nama. Dengan kata lain, saya membahas:
Saya mengerti apa arti lambda, gagasan fungsi anonim itu sederhana dan kuat, tetapi saya gagal memahami apa arti "yang tertinggi" dalam konteks ini.
Sebagai praktisnya, penggunaan lambdas sebagai abstraksi sintaksis ('makro'), yang tidak disebut dengan nilai / aplikatif (yang fungsi matematikanya), sangat penting untuk membeli gagasan bahwa lambdas benar-benar dapat berfungsi sebagai inti dari setiap sistem pemrosesan bahasa pemrograman.
Untuk Teori: Ada hubungan yang menarik dengan paradoks Bertrand Russell dan Aksioma Pemahaman (dan Perluasan) dalam teori himpunan naif. Lambda adalah untuk fungsi apa set-builder notation adalah set: lambdas adalah notation-builder. Ada perbedaan penting, biasanya diabaikan, antara (lambda (x) (* xx)) dan apa yang dievaluasi (fungsi yang kuadrat). Jika seseorang gagal untuk membedakan antara keduanya secara umum, yaitu, antara notasi dan denotasi (kesalahan yang dilakukan Gereja dan Frege), maka ia bertabrakan dengan paradoks. Untuk set dan Frege, Barber of Seville dari Bertrand Russell yang menggambarkan kesalahan tersebut; untuk fungsi dan Gereja, itu adalah Alan Turing's Halting Oracle.
Perhatikan bahwa paradoks itu baik, praktis, dan banyak hal. Kami ingin EVAL menjadi ekspresif, dan kami ingin lambdas lebih dari sekadar fungsi. Bahwa dengan asumsi yang sebaliknya mengarah pada kontradiksi adalah hasil yang diinginkan; ini berfungsi sebagai tes kewarasan yang bagus: lambdas hampir tidak bisa menjadi yang utama jika mereka hanya mengekspresikan fungsi belaka.
Racket (sebelumnya PLT Scheme) terus mengajukan gagasan bahwa bahasa pemrograman praktis benar-benar dapat dibangun, dari bawah ke atas, pada 'just lambda'.
Kernel , menurut Shutt, berpendapat bahwa lambda sebenarnya bukan abstraksi pamungkas. Dia berpendapat masih ada satu konsep yang lebih primitif (untuk bahasa Yunani, dijuluki vau) yang dikenal Sussman sebagai FEXPR.
Felleisin dan kawan-kawan (untuk Racket) mendapatkan banyak kekuatan dari Shutt's vau dengan menggunakan konsep fase , atau metalevel, yang kira-kira berarti menjalankan kode sumber melalui beberapa tahap terjemahan (seperti dengan preprocessing C, tetapi menggunakan bahasa yang sama di setiap 'langkah', dan 'langkah' sebenarnya tidak sepenuhnya berbeda dalam waktu). (Jadi, mereka berpendapat bahwa lambda pada fase yang lebih tinggi mendekati vau dengan cukup baik.) Faktanya, mereka berpendapat bahwa fase lebih baik daripada FEXPR, justru karena lebih terbatas; singkatnya, "FEXPR terlalu kuat" (lihat karya Wand, yang Shutt membantah).
3-Lisp karya Brian Smith, "Refleksi prosedural dalam bahasa pemrograman", mencoba merumuskan kembali teori LISP yang mirip dengan bahasa dengan menggunakan notasi yang membedakan secara tajam (simbol / bahasa / program) dari denotasi (benda / rujukan / nilai / hasil) ). http://dspace.mit.edu/handle/1721.1/15961
"Theory of FEXPRs is Trivial" karya Mitchell Wand "mengirim lebih banyak paku ke peti mati (sementara?) Yang dibuat Kent Pittman untuk FEXPRs (yang, seperti Felleisen, berpendapat bahwa FEXPR membuat kompilasi terlalu sulit).
Paul Graham berpendapat dengan kekuatan dan panjang lebar dalam "On Lisp" bahwa kekuatan sebenarnya adalah lambdas sebagai transformer sintaksis (makro), bukan sebagai transformer nilai (fungsi matematika). Pengembangan Plotkin tentang kalkulus lambda aplikatif dapat dianggap agak kontras, karena Plotkin membatasi kalkulus Gereja pada bagian panggilan-oleh-nilai / aplikatifnya. Tentu saja, menangani bagian aplikatif secara efisien sangat penting, sehingga penting untuk mengembangkan teori khusus untuk penggunaan lambda. (Plotkin dan Graham tidak saling mendebat.)
Faktanya, secara umum, gagasan Lambda sebagai Ultimate hanyalah salah satu pelintiran seperti pada perdebatan abadi antara efisiensi dan ekspresif; itu adalah posisi bahwa lambda adalah alat utama untuk berekspresi, dan, jika diberikan penelitian yang cukup, pada akhirnya akan terbukti menjadi alat utama untuk efisiensi juga. Dengan kata lain, kita dapat, jika ingin, melihat masa depan bahasa pemrograman sebagai tidak lebih dan tidak kurang dari studi tentang bagaimana menerapkan secara efisien semua fragmen yang relevan secara praktis dari kalkulus lambda.
Landin "The Next 700 Programming Languages", http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf , adalah referensi yang dapat diakses yang berkontribusi pada pengembangan konsep bahwa Lambda adalah Ultimate.