Merkkijonojen osien poimiminen

Haskell:
Merkkijonojen osien poimiminen

How to:

Haskellissa käytetään usein funktioita take, drop ja substring merkkijonorakenteiden käsittelyyn. Tässä pari esimerkkiä:

import Data.List

-- Otetaan merkkijonon alusta 5 merkkiä
takeExample :: String -> String
takeExample = take 5

-- Poistetaan alusta 5 merkkiä
dropExample :: String -> String
dropExample = drop 5

-- Otetaan merkkijonosta alkaen kolmas merkki ja otetaan 5 merkkiä
substringExample :: String -> String
substringExample = take 5 . drop 2

-- Esimerkkien käyttö:
main :: IO ()
main = do
  let testString = "Moikka maailma!"
  putStrLn $ takeExample testString      -- Tulostuu "Moikk"
  putStrLn $ dropExample testString      -- Tulostuu "maailma!"
  putStrLn $ substringExample testString -- Tulostuu "ikka "

Deep Dive

Haskellin funktiot take ja drop ovat peräisin funktionaalisen ohjelmoinnin maailmasta ja ne ovat olleet kielessä sen alkuaikoina. Substring-toiminnallisuudelle ei ole vakioratkaisua, mutta edellä esitetyt funktiot tekevät työn hyvin. Nämä funktiot toimivat ’lazy evaluation’ periaatteella, mikä on tehokasta isojen datasettien kanssa.

Vaihtoehtoina on kirjastoja kuten text ja bytestring, jotka tarjoavat tehokkaampia työkaluja, kun työstetään suuria tekstiaineistoja. Suorituskyky syistä, näiden kirjastojen käyttäminen voi olla fiksumpaa, jos sovellus käsittelee paljon dataa.

Haskellissa voit myös toteuttaa substring-funktion itse, mikä antaa lisää joustavuutta ja voi olla opettavaista, erityisesti jos haluat ymmärtää miten Haskellissa työskennellään listojen ja rekursiivisten funktioiden kanssa.

See Also