Fungsi anonim, umumnya dikenal sebagai fungsi lambda, merupakan bagian integral dari bahasa pemrograman fungsional seperti Haskell. Berbeda dengan fungsi tradisional, fungsi anonim tidak memiliki nama. Mereka didefinisikan dengan cepat dan biasanya digunakan ketika suatu fungsi diperlukan hanya sekali. Mari selami masalah yang dapat diselesaikan secara efisien menggunakan fungsi anonim.
Masalah
Bayangkan Anda mencoba menganalisis daftar kata, dan Anda perlu memanipulasi data secara statistik. Anda ingin menghitung kemunculan setiap panjang kata dalam daftar. Untuk membuat kode Anda lebih ringkas dan mudah dikelola, Anda memutuskan untuk menggunakan fungsi anonim.
Solusi dengan Fungsi Anonim
[kodesemu lang=”Haskell”]
impor Data.Daftar
impor Data.Map yang memenuhi syarat sebagai Peta
WordLengthCount :: [String] -> Map.Map Int Int
wordLengthCount = Peta.fromListWith (+) . peta (x -> (panjang x, 1))
[/kodesemu]
Mari kita uraikan solusinya, selangkah demi selangkah.
Penjelasan Detail Kode
Pada baris pertama, kami mengimpor perpustakaan yang diperlukan. 'Data.List' menyediakan fungsi manipulasi daftar, sedangkan 'Data.Map' memberi kita akses ke tipe data yang dapat digunakan untuk mengimplementasikan struktur data peta.
Fungsi 'wordLengthCount' mengambil daftar kata (string) sebagai argumen, dan mengembalikan Peta yang berisi jumlah kemunculan setiap panjang kata.
Pertama, kita menggunakan fungsi peta untuk menerapkan fungsi anonim ke setiap kata dalam daftar. Fungsi anonim kami, atau fungsi lambda, didefinisikan sebagai:
[kodesemu lang=”Haskell”]
x -> (panjang x, 1)
[/kodesemu]
Fungsi lambda mengambil sebuah kata sebagai masukan ('x'), dan mengeluarkan tupel – panjang kata dan 1. Setelah operasi ini diterapkan ke setiap kata dalam daftar, kita akan mendapatkan daftar tupel.
Selanjutnya, kita menggunakan fungsi 'Map.fromListWith'. Fungsi 'fromListWith' adalah fungsi praktis yang menggunakan fungsi biner dan daftar tupel, dan membuat peta.
Fungsi binernya adalah (+), yang menjumlahkan elemen kedua dari tupel jika elemen pertamanya cocok. Jadi, fungsi ini mengambil daftar tupel, mengelompokkannya berdasarkan panjang kata, dan menjumlahkan elemen kedua tupel – yang pada dasarnya menghitung kemunculan setiap panjang kata.
Perpustakaan dan Fungsi Haskell
Dalam kode ini, kami memanfaatkan beberapa perpustakaan dan fungsi Haskell. 'Data.Daftar' dan 'Data.Peta' perpustakaan sangat penting untuk manipulasi dan struktur data di Haskell. Itu 'peta' function sangat penting dalam menerapkan fungsi anonim kami ke setiap item dalam daftar kami, sehingga secara signifikan mengurangi kompleksitas kode kami.
Selanjutnya, 'dari DaftarDengan' fungsi dari 'Data.Map' memungkinkan kami mengelompokkan data berdasarkan panjang kata secara efisien dan menghitung total kemunculannya.
Kekuatan Haskell benar-benar bersinar ketika kita menggunakan semua konsep ini bersama-sama, menunjukkan efisiensi dan ekspresi bahasa pemrograman fungsional.
Dalam hal fesyen, keanggunan dan kesederhanaan kode berbasis fungsi anonim ini dapat disamakan dengan tren fesyen minimalis, di mana lebih sedikit lebih banyak, dan setiap bagian (atau fungsi) harus memiliki tujuan yang jelas dan ringkas. Seperti garis yang rapi dan estetika yang rapi dalam gaya minimalis, fungsi anonim di Haskell menawarkan kode yang ringkas dan bersih yang bekerja dengan efisiensi dan keanggunan yang tak tertandingi.