Ratkaistu: anonyymi toiminto

Viimeisin päivitys: 09/11/2023

Anonyymit toiminnot, joka tunnetaan yleisesti lambda-funktioina, ovat olennainen osa toiminnallisia ohjelmointikieliä, kuten Haskell. Toisin kuin perinteisillä funktioilla, anonyymeillä funktioilla ei ole nimeä. Ne määritellään lennossa ja niitä käytetään yleensä, kun toimintoa tarvitaan vain kerran. Sukellaan ongelmaan, joka voidaan ratkaista tehokkaasti anonyymien toimintojen avulla.

Ongelma

Kuvittele, että yrität analysoida sanaluetteloa ja sinun on manipuloitava tilastollisesti tietoja. Haluat laskea luettelon jokaisen sanan pituuden esiintymät. Jotta koodisi olisi ytimekkäämpi ja helpompi ylläpitää, päätät käyttää anonyymejä toimintoja.

Ratkaisu anonyymeillä toiminnoilla

[pseudocode lang="Haskell"]
tuoda Data.List
tuoda kelpuutetut Data.Map karttana

wordLengthCount :: [String] -> Map.Map Int Int
wordLengthCount = Map.fromListWith (+) . kartta (x -> (pituus x, 1))
[/pseudokoodi]

Puretaan ratkaisu vaihe vaiheelta.

Säännöstön yksityiskohtainen selitys

Ensimmäisellä rivillä tuomme tarvittavat kirjastot. 'Data.List' tarjoaa luettelonkäsittelytoimintoja, kun taas 'Data.Map' antaa meille pääsyn tietotyyppiin, jota voidaan käyttää karttatietorakenteen toteuttamiseen.

Funktio 'wordLengthCount' ottaa sanaluettelon (merkkijonot) argumenttina ja palauttaa kartan, joka sisältää kunkin sanan pituuden esiintymismäärän.

Ensinnäkin käytämme karttatoimintoa anonyymin funktion käyttämiseen luettelon jokaiseen sanaan. Anonyymi funktiomme tai lambda-funktiomme määritellään seuraavasti:

[pseudocode lang="Haskell"]
x -> (pituus x, 1)
[/pseudokoodi]

Lambda-funktio ottaa sanan syötteeksi ('x') ja tulostaa monikon – sanan pituuden ja 1:n. Kun tätä toimintoa on käytetty jokaiseen listan sanaan, päädymme monikkoluetteloon.

Seuraavaksi käytämme toimintoa "Map.fromListWith". Funktio "fromListWith" on kätevä toiminto, joka ottaa binäärifunktion ja monikkoluettelon ja luo kartan.

Binäärifunktio on (+), joka laskee yhteen monikoiden toiset elementit, jos niiden ensimmäiset elementit täsmäävät. Siten funktio ottaa monikkoluettelomme, ryhmittelee ne sanan pituuden mukaan ja laskee yhteen monikoiden toiset elementit – olennaisesti laskemalla jokaisen sanan pituuden esiintymät.

Haskell-kirjastot ja funktiot

Tässä koodissa hyödynsimme useita Haskell-kirjastoja ja -toimintoja. 'Data.List' ja 'Data.Map' kirjastot ovat välttämättömiä Haskellin tietojen käsittelylle ja rakenteelle. The 'kartta' -toiminto auttoi soveltamaan anonyymiä toimintoamme jokaiseen luettelon kohteeseen, mikä vähensi koodimme monimutkaisuutta merkittävästi.

Lisäksi 'fromListWith' Data.Map-funktion avulla pystyimme ryhmittelemään tietomme tehokkaasti sanan pituuden mukaan ja laskemaan esiintymien kokonaismäärän.

Haskellin voima loistaa todella, kun käytämme kaikkia näitä käsitteitä yhdessä, mikä osoittaa toiminnallisten ohjelmointikielten tehokkuuden ja ilmaisukyvyn.

Muodin suhteen tämän anonyymin toimintovetoisen koodin eleganssia ja yksinkertaisuutta voidaan verrata minimalistiseen muotitrendiin, jossa vähemmän on enemmän ja jokaisen kappaleen (tai toiminnon) tulee palvella selkeää, ytimekkäämpää tarkoitusta. Kuten puhtaat linjat ja selkeä estetiikka minimalistisella tavalla, Haskellin anonyymit toiminnot tarjoavat ytimekkään, puhtaan koodin, joka toimii verrattoman tehokkaasti ja eleganssilla.

Related viestiä: