Bisakah seseorang memberikan gambaran yang baik tentang apa itu Lambda? Kami memiliki tag untuk mereka dan mereka berada di rahasia pertanyaan C #, tetapi saya belum menemukan definisi dan penjelasan yang baik tentang apa itu di tempat pertama.
93
Jawaban:
Penutupan, lambda, dan fungsi anonim belum tentu sama.
Fungsi anonim adalah fungsi apa pun yang tidak memiliki (atau, setidaknya, membutuhkan) namanya sendiri.
Closure adalah sebuah fungsi yang dapat mengakses variabel yang berada dalam lingkup leksikal ketika dideklarasikan, bahkan setelah variabel tersebut berada di luar cakupan. Fungsi anonim tidak harus berupa closure, tetapi ada di sebagian besar bahasa dan menjadi kurang berguna jika tidak.
Lambda adalah .. tidak didefinisikan dengan baik sejauh ilmu komputer berjalan. Banyak bahasa bahkan tidak menggunakan istilah tersebut; sebaliknya mereka hanya akan menyebutnya closures atau anon functions atau menciptakan terminologi mereka sendiri. Di LISP, lambda hanyalah fungsi anonim. Dalam Python, lambda adalah fungsi anonim yang secara khusus dibatasi pada ekspresi tunggal; lebih dari itu, dan Anda membutuhkan fungsi bernama. Lambda adalah penutupan dalam kedua bahasa.
sumber
Juga disebut penutupan atau fungsi anonim .. Saya menemukan deskripsi terbaik di sini . Pada dasarnya, blok kode sebaris yang dapat diteruskan sebagai argumen ke suatu fungsi.
sumber
"Lambda" mengacu pada Kalkulus Lambda atau ekspresi lambda tertentu. Kalkulus Lambda pada dasarnya adalah cabang logika dan matematika yang berhubungan dengan fungsi, dan merupakan dasar dari bahasa pemrograman fungsional .
~ William Riley-Land
sumber
Ini hanyalah fungsi anonim yang dideklarasikan secara inline, paling sering ditugaskan ke delegasi ketika Anda tidak ingin menulis fungsi yang lengkap.
Dalam bahasa seperti lisp / scheme, mereka sering diedarkan secara bebas sebagai parameter fungsi, tetapi idiom dalam C # biasanya menemukan lambda digunakan hanya untuk evaluasi lazy fungsi, seperti di linq, atau untuk membuat kode penanganan peristiwa sedikit lebih pendek.
sumber
Sebenarnya tidak ada yang namanya 'lambda' dalam pemrograman. Itu tergantung pada bahasa, dll.
Singkatnya, biasanya bahasa yang 'memiliki lambda' menggunakan istilah untuk fungsi anonim atau, dalam beberapa kasus, closure. Seperti itu, di Ruby:
sumber
Menanggapi jawaban sebelumnya:
-Hal penting tentang fungsi anonim bukanlah bahwa mereka tidak memerlukan nama.
-Tutup adalah konsep terpisah.
-Artikel wikipedia yang sangat besar tidak membuat ini menjadi lebih jelas.
Inilah jawaban saya dalam 3 bagian:
1. Lambda adalah fungsi yang juga merupakan ekspresi. Ini yang penting.
2. Banyak bahasa yang mengimplementasikan apa yang disebut "lambda" menambahkan beberapa gula sintaksis untuk membuat penulisan fungsi pendek ini lebih mudah dan lebih cepat, tetapi ini tidak diperlukan.
3. Beberapa bahasa mungkin mengharuskan lambda tidak memiliki efek samping . Itu akan menjadi lambda yang lebih murni dalam arti fungsional.
Ketika sebuah fungsi adalah ekspresi, itu adalah "warga negara kelas satu" dalam bahasa tersebut. Saya bisa melakukan semua hal penting dengannya:
sumber
Dipotong dari wikipedia: http://en.wikipedia.org/wiki/Lambda#Lambda.2C_the_word
Dalam bahasa pemrograman seperti Lisp dan Python, lambda adalah operator yang digunakan untuk menunjukkan fungsi atau penutupan anonim, mengikuti penggunaan kalkulus lambda.
sumber