Ratkaistu: hae luettelon kohteen määrä

Viimeisin päivitys: 09/11/2023

Totta kai, sukeltakaamme siihen.

Ohjelmointi on täynnä monia huolenaiheita, ja yksi niistä on luetteloiden kanssa työskentelyn oppiminen. **Listat** Haskellissa ovat homogeenisia tietorakenteita, joihin voidaan tallentaa useita samantyyppisiä kohteita, mikä tekee niistä sopivia useiden ongelmien ratkaisemiseen. Tänään keskustelemme yksinkertaisesta mutta hyödyllisestä luetteloiden toiminnosta – kohteen määrän laskemisesta.

**Haskellissa** käytämme joitain tämän kauniin ja tehokkaan ohjelmointikielen sisäänrakennetuista toiminnoista.

import Data.List (genericLength)
itemCount :: Eq a => a -> [a] -> Int
itemCount a = fromIntegral . genericLength . filter (== a)

Ratkaisu yksityiskohtaisesti

Yllä oleva koodinpätkä käyttää Haskell-työkalujen yhdistelmää, nimittäin genericLength-, suodatin- ja tasa-arvooperaattoria. Funktio "itemCount" laskee, kuinka monta kertaa jokin nimike esiintyy luettelossa.

Funktio "itemCount" ottaa kaksi parametria: "a", haettava elementti ja luettelo elementeistä "[a]". Funktio käyttää sitten suodatinta, joka muodostaa uuden listan, joka koostuu vain elementeistä, joiden predikaatti `== a` on tosi. Sen jälkeen käytetään genericLengthiä, yleisempää pituusfunktion versiota, joka mittaa luettelon pituuden saadakseen tietyn kohteen määrän.

Tässä on suoritusjärjestys:

1. Luettelo tarkistetaan ja kaikki 'a':n esiintymät puretaan suodattimen avulla.
2. Näiden tapausten määrä lasketaan käyttämällä genericLengthiä.

Tietoja Haskell-kirjastoista ja funktioista

Ratkaisu käyttää standardinmukaisia ​​**Haskell-kirjastoja ja -funktioita**, kuten genericLength ja filter.

Funktio "genericLength" on osa Haskellin Data.List-kirjastoa. Se on yleisempi versio tavallisen pituuden funktiosta, koska se voi ottaa minkä tahansa tyyppisen luettelon ja palauttaa numeron, joka edustaa luettelon kohteiden kokonaismäärää.

Suodatintoiminto puolestaan ​​kuuluu alkusoittoon. Se on korkeamman asteen funktio, joka ottaa predikaatin ja listan ja palauttaa listan elementeistä, jotka täyttävät predikaatin.

"Eq":n käyttö Haskellissa

Koodinpätkässä näet, että määritämme yhtälön a funktion allekirjoituksessa. "Eq" on Haskellin tyyppiluokka. Se määrittelee tasa-arvofunktiot, mukaan lukien `==` ja `/=`. Kaikilla tyypeillä, jotka haluavat käyttää tasa-arvotestiä, tulee olla tämän luokan esiintymä.

Lopuksi, positiivisuus ja eleganssi ovat muodin tapaan tehokkaan koodin ytimessä. Esimerkiksi Haskellin kaltaisten toiminnallisten kielten ja huippumuodin vahvat yhtäläisyydet ovat se, että ne molemmat tarjoavat meille työkaluja ja käytäntöjä ilmaista itseämme ja että käyttämämme kielet muokkaavat lopputuloksen.

Tästä syystä jatka tutkimista, jatka koodaamista ja käännä päätäsi fantastisella ja ainutlaatuisella koodityylilläsi, joka muistuttaa paljon muotikiitoradan näyttelijöitä.

Related viestiä: