Anonimne funkcije, poznatije kao lambda funkcije, sastavni su dio funkcionalnih programskih jezika kao što su Haskell. Za razliku od tradicionalnih funkcija, anonimne funkcije nemaju naziv. Definiraju se u hodu i obično se koriste kada je funkcija potrebna samo jednom. Uronimo u problem koji se može učinkovito riješiti uporabom anonimnih funkcija.
Problem
Zamislite da pokušavate analizirati popis riječi i trebate statistički manipulirati podacima. Želite prebrojati pojavljivanja svake duljine riječi na popisu. Kako biste svoj kod učinili sažetijim i lakšim za održavanje, odlučite koristiti anonimne funkcije.
Rješenje s anonimnim funkcijama
[pseudokod lang=”Haskell”]
import Data.List
uvoz kvalificiranih podataka. Karta kao karta
wordLengthCount :: [String] -> Map.Map Int Int
wordLengthCount = Map.fromListWith (+) . karta (x -> (duljina x, 1))
[/pseudokod]
Raspakirajmo rješenje, korak po korak.
Detaljno objašnjenje kodeksa
U prvom redu uvozimo potrebne biblioteke. 'Data.List' pruža funkcije za manipulaciju popisom, dok nam 'Data.Map' daje pristup tipu podataka koji se može koristiti za implementaciju strukture podataka karte.
Funkcija 'wordLengthCount' uzima popis riječi (stringova) kao argument i vraća mapu koja sadrži broj pojavljivanja svake duljine riječi.
Prvo, koristimo funkciju karte da primijenimo anonimnu funkciju na svaku riječ na popisu. Naša anonimna funkcija ili lambda funkcija definirana je kao:
[pseudokod lang=”Haskell”]
x -> (duljina x, 1)
[/pseudokod]
Lambda funkcija uzima riječ kao ulaz ('x') i ispisuje torku – duljinu riječi i 1. Nakon što se ova operacija primijeni na svaku riječ na popisu, završavamo s popisom torki.
Zatim koristimo funkciju 'Map.fromListWith'. Funkcija 'fromListWith' zgodna je funkcija koja uzima binarnu funkciju i popis torki i stvara kartu.
Binarna funkcija je (+), koja zbraja druge elemente torki ako se njihovi prvi elementi podudaraju. Dakle, funkcija uzima naš popis torki, grupira ih prema duljini riječi i zbraja druge elemente torki – u biti broji pojavljivanja svake duljine riječi.
Haskell biblioteke i funkcije
U ovom smo kodu iskoristili dosta Haskell biblioteka i funkcija. 'Data.List' i 'Data.Map' knjižnice su bitne za manipulaciju podacima i strukturu u Haskell-u. The 'karta' bila je ključna u primjeni naše anonimne funkcije na svaku stavku na našem popisu, značajno smanjujući složenost našeg koda.
Nadalje, 'fromListWith' funkcija iz 'Data.Map' omogućila nam je učinkovito grupiranje podataka prema duljini riječi i izračunavanje ukupnog broja pojavljivanja.
Snaga Haskella stvarno blista kada koristimo sve ove koncepte zajedno, pokazujući učinkovitost i izražajnost funkcionalnih programskih jezika.
Što se tiče mode, elegancija i jednostavnost ovog anonimnog koda vođenog funkcijama može se usporediti s minimalističkim modnim trendom, gdje je manje više, a svaki komad (ili funkcija) mora služiti jasnoj, sažetoj svrsi. Poput čistih linija i čiste estetike u minimalističkom stilu, anonimne funkcije u Haskellu nude sažet, čist kod koji radi s neusporedivom učinkovitošću i elegancijom.