Merkkijonon interpolointi

Haskell:
Merkkijonon interpolointi

How to: - Miten tehdä:

Haskellissa merkkijonon interpolointi ei ole yhtä suoraviivaista kuin joissakin muissa kielissä, mutta se onnistuu kirjastoja hyödyntäen. Tässä esimerkki text-kirjaston kanssa:

{-# LANGUAGE OverloadedStrings #-}
import Data.Text
import Data.Text.IO as TIO
import Data.Text.Lazy.Builder as Builder
import Data.Text.Lazy.Builder.Int

main :: IO ()
main = do
    let age = 25
    let name = "Juha"
    let interpolated = Builder.toLazyText $ "Hei, nimeni on " <> Builder.fromText name <> " ja olen " <> decimal age <> " vuotta vanha."
    TIO.putStrLn interpolated

Ajaessasi tämän saat tulokseksi:

Hei, nimeni on Juha ja olen 25 vuotta vanha.

Deep Dive - Syventyminen

Merkkijonon interpolointi on perinteisesti ollut osa dynaamisia kieliä, kuten Python tai Ruby. Haskellissa, joka on staattisesti tyypitetty kieli, interpolointi vaatii ylimääräisiä työkaluja tai kirjastoja, kuten text.

Vaihtoehtoisia tapoja suorittaa interpolointi Haskellissa ovat esimerkiksi printf-funktio perinteisestä Text.Printf-moduulista tai formatting-kirjasto, joka tarjoaa monipuolisempia muotoiluvaihtoehtoja.

Interpoloinnin toteutus vaatii usein ylimääräistä käännösaikaisia ominaisuuksia, kuten kirjaimellisten merkkijonojen ylilatausta (OverloadedStrings) tai laajennettuja kuvaajia (QuasiQuotes). Se, että interpolointi ei ole kielen ydinosassa, heijastaa Haskellin funktionaalista filosofiaa ja painotusta muuttumattomuuteen.

See Also - Katso myös