Vyřešeno: anonymní funkce

Poslední aktualizace: 09/11/2023

Anonymní funkce , běžně známé jako lambda funkce, jsou nedílnou součástí funkcionálních programovacích jazyků, jako je Haskell . Na rozdíl od tradičních funkcí nemají anonymní funkce název. Jsou definovány za běhu a obvykle se používají, když je funkce potřeba pouze jednou. Pojďme se ponořit do problému, který lze efektivně vyřešit pomocí anonymních funkcí.

Problém

Představte si, že se pokoušíte analyzovat seznam slov a potřebujete statisticky manipulovat s daty. Chcete spočítat výskyty každé délky slova v seznamu. Chcete-li, aby byl váš kód stručnější a snadnější na údržbu, rozhodnete se používat anonymní funkce.

Řešení s anonymními funkcemi

[pseudocode lang=”Haskell”]
importovat Data.List
importujte kvalifikovaná Data.Map jako mapu

wordLengthCount :: [String] -> Map.Map Int Int
wordLengthCount = Map.fromListWith (+) . mapa (x -> (délka x, 1))
[/pseudo kód]

Pojďme rozbalit řešení, krok za krokem.

Podrobné vysvětlení kodexu

V prvním řádku importujeme potřebné knihovny. 'Data.List' poskytuje funkce pro manipulaci se seznamy, zatímco 'Data.Map' nám poskytuje přístup k datovému typu, který lze použít k implementaci struktury mapových dat.

Funkce 'wordLengthCount' bere jako argument seznam slov (řetězců) a vrací mapu, která obsahuje počet výskytů každé délky slova.

Nejprve používáme funkci map k aplikaci anonymní funkce na každé slovo v seznamu. Naše anonymní funkce nebo funkce lambda je definována jako:

[pseudocode lang=”Haskell”]
x -> (délka x, 1)
[/pseudo kód]

Funkce lambda bere slovo jako vstup ('x') a vydává n-tici – délku slova a 1. Poté, co je tato operace aplikována na každé slovo v seznamu, skončíme se seznamem n-tic.

Dále použijeme funkci 'Map.fromListWith'. Funkce 'fromListWith' je užitečná funkce, která přebírá binární funkci a seznam n-tic a vytváří mapu.

Binární funkce je (+), která sčítá druhé prvky n-tic, pokud se jejich první prvky shodují. Funkce tedy vezme náš seznam n-tic, seskupí je podle délky slova a sečte druhé prvky n-tic – v podstatě počítá výskyty každé délky slova.

Knihovny a funkce Haskell

V tomto kódu jsme využili poměrně dost knihoven a funkcí Haskellu. Knihovny „Data.List“ a „Data.Map“ jsou nezbytné pro manipulaci s daty a jejich strukturování v Haskellu. Funkce „map“ sehrála klíčovou roli při aplikaci naší anonymní funkce na každou položku v našem seznamu, což výrazně snížilo složitost našeho kódu.

Funkce „fromListWith“ z „Data.Map“ nám navíc umožnila efektivně seskupit data podle délky slova a vypočítat celkový počet výskytů.

Síla Haskellu skutečně září, když použijeme všechny tyto koncepty společně, což demonstruje efektivitu a expresivitu funkcionálních programovacích jazyků.

Z hlediska módy lze eleganci a jednoduchost tohoto anonymního kódu řízeného funkcemi přirovnat k minimalistickému módnímu trendu, kde méně je více a každý kousek (nebo funkce) musí sloužit jasnému a výstižnému účelu. Stejně jako čisté linie a nepřehledná estetika v minimalistické módě, anonymní funkce v Haskellu nabízejí stručný, čistý kód, který funguje s nesrovnatelnou účinností a elegancí.

Související příspěvky: