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
- Text.Printf moduuli - Toteuttaa C-tyylisen
printf
-funktion Haskellissa. - Formatting kirjasto - Monipuolinen muotoilukirjasto Haskellin merkkijonoille.
- Haskell
text
-kirjasto - Tehokas käsittelemään Unicode-merkkijonoja Haskellissa.