Fungsi Lambda
Fungsi Lambda dalam Scheme adalah fungsi anonim, artinya fungsi tersebut adalah fungsi tanpa nama. Fungsi-fungsi ini didefinisikan secara inline dan biasanya digunakan untuk operasi singkat dan satu kali saja. Konstruksi lambda adalah alat yang ampuh dalam pemrograman fungsional, memungkinkan Anda membuat logika yang ringkas dan fleksibel dengan cepat.
Fungsi Lambda sangat berguna ketika:
- Anda memerlukan fungsi kecil untuk tujuan sementara yang spesifik.
- Meneruskan fungsi sebagai argumen ke fungsi tingkat tinggi seperti
map,filter, ataufold. - Mengembalikan fungsi dari fungsi lainnya.
Sintaks Fungsi Lambda
Fungsi Lambda dapat didefinisikan sendiri…
(lambda (parameter1 parameter2 ...)
body-expression)…atau segera dipanggil:
((lambda (parameter1 parameter2 ...)
body-expression)
argument1 argument2 ...)parameter1, parameter2, ...: Parameter yang diterima fungsi.body-expression: Logika dijalankan ketika fungsi dipanggil.- Invokasi Langsung: Bentuk kedua menunjukkan lambda yang segera dipanggil dengan argumen.
Contoh Fungsi Lambda
Menggunakan Lambda untuk Perhitungan Sederhana
((lambda (x y) (+ x y)) 3 5) ; Mengembalikan 8Di sini:
- Fungsi lambda dibuat untuk menambahkan dua angka (
xdany). - Fungsi ini segera dipanggil dengan argumen
3dan5.
Fungsi Lambda Sebaris
Contoh berikut menunjukkan cara menggunakan for-each dengan fungsi bernama dan fungsi lambda:
Menggunakan Fungsi Bernama:
(define (print-item x)
(lumi-message (number->string x)))
(for-each print-item (list 1 2 3 4))- Penjelasan:
print-itemadalah fungsi bernama yang mengubah angka menjadi string (number->string) dan mencetaknya menggunakanlumi-message.for-eachmenerapkanprint-itemuntuk setiap elemen dalam daftar(1 2 3 4).
Keluaran: 1 2 3 4
Menggunakan Fungsi Lambda:
Logika yang sama dapat ditulis sejalan dengan fungsi lambda, sehingga tidak memerlukan fungsi bernama terpisah:
(for-each (lambda (x) (lumi-message (number->string x)))
(list 1 2 3 4))- Penjelasan:
(lambda (x) (lumi-message (number->string x)))mendefinisikan fungsi anonim.- Fungsi ini diterapkan ke setiap elemen daftar
(1 2 3 4)olehfor-each.
Keluaran: 1 2 3 4
Lambda Berfungsi sebagai Argumen
Fungsi Lambda sering kali diteruskan langsung ke fungsi tingkat tinggi seperti map atau filter.
Mengkuadratkan Daftar Angka
(map (lambda (x) (* x x)) '(1 2 3 4)) ; Mengembalikan (1 4 9 16)- Fungsi
lambdamengkuadratkan setiap elemen daftar. - Fungsi
mapmenerapkanlambdake setiap elemen.
Lambda Berfungsi sebagai Nilai Pengembalian
Anda dapat mengembalikan fungsi lambda dari fungsi lain untuk menciptakan perilaku dinamis.
Menghasilkan Fungsi Penambah
(define (make-adder n)
(lambda (x) (+ x n)))
(define add5 (make-adder 5))
(add5 10) ; Mengembalikan 15make-addermenghasilkan fungsi lambda baru yang menambahkan nomor tertentu (n).- Lambda yang dikembalikan disimpan di
add5, yang menambahkan5ke inputnya.
Menggunakan Lambda dengan let
Lambda sering digunakan dengan let untuk membuat fungsi sementara dengan cakupan lokal.
Lambda Lokal untuk Tambahan
(let ((add (lambda (a b) (+ a b))))
(add 3 4)) ; Mengembalikan 7letmengikat fungsi lambda ke namaadd.- Lambda kemudian digunakan sebagai fungsi normal dalam lingkup
let.
Menggabungkan Lambdas dengan Fungsi Tingkat Tinggi
Lambda sangat berguna ketika dikombinasikan dengan fungsi tingkat tinggi untuk melakukan transformasi data yang kompleks.
Memfilter Bilangan Genap
(filter (lambda (x) (= (modulo x 2) 0)) '(1 2 3 4 5 6)) ; Mengembalikan (2 4 6)lambdamemeriksa apakah suatu bilangan genap.- Fungsi
filtermenggunakan lambda untuk hanya menyimpan bilangan genap dari daftar.
Manfaat Fungsi Lambda
- Keringkasan: Lambda mengurangi kode boilerplate dengan menghilangkan kebutuhan untuk mendefinisikan fungsi bernama terpisah.
- Fleksibilitas: Anda dapat menentukan dan menggunakannya di mana pun diperlukan, sehingga membuat kode lebih modular.
- Peningkatan Keterbacaan: Untuk tugas yang singkat dan spesifik, lambda memperjelas maksudnya tanpa mengacaukan kode dengan fungsi bernama tambahan.
Kapan Menggunakan Fungsi Lambda
Gunakan fungsi lambda ketika:
- Logikanya singkat dan mandiri.
- Fungsi tersebut hanya diperlukan sementara atau dalam lingkup tertentu.
- Anda bekerja dengan fungsi tingkat tinggi seperti
map,filter, ataureduce.
Hindari penggunaan lambda untuk logika multi-baris yang rumit, karena hal ini dapat mengurangi keterbacaan. Untuk operasi yang lebih luas, gunakan fungsi bernama saja.
Kesimpulan
Fungsi Lambda dalam Scheme menyediakan cara yang ringkas dan canggih untuk mendefinisikan fungsi anonim untuk tugas tertentu. Fleksibilitas dan kemudahan penggunaannya menjadikannya alat penting bagi pemrogram Scheme mana pun. Memahami cara menggunakan lambda secara efektif akan membantu Anda menulis skrip yang lebih bersih, lebih modular, dan efisien.