Haskell:
Een string interpoleren
Hoe te:
In Haskell is stringinterpolatie niet standaard ingebouwd, maar met het interpolate
pakket kun je er vrij dichtbij komen. Zorg eerst dat je het pakket hebt:
cabal update
cabal install interpolate
Schrijf nu wat Haskell:
{-# LANGUAGE QuasiQuotes #-}
import Data.String.Interpolate (i)
main :: IO ()
main = do
let name = "wereld"
let greeting = [i|Hallo, #{name}!|]
putStrLn greeting
Voer het uit:
Hallo, wereld!
Diepgaande Duik
Historisch gezien kwam Haskell niet standaard met stringinterpolatie uit de doos. Het is een functie die vaker voorkomt in scripttalen. Interpolatie in Haskell werd soepeler met de ontwikkeling van quasiquoters, die je toestaan om je eigen aangepaste syntax te definiëren—zoals onze i
voor het interpoleren van strings.
Alternatieven? Zeker, gebruik printf
van Text.Printf
, of voeg strings en variabelen samen met ++
. Maar deze missen de elegantie en eenvoudigheid van interpolatie.
Wat de implementatie betreft, transformeert interpolate
je geïnterpoleerde strings in reguliere Haskell strings op compilatietijd met behulp van Template Haskell, dus er is geen prestatievermindering bij het uitvoeren van je code. Het is slim en netjes, net als Haskell.
Zie Ook
- Hackage - interpolate pakket
- Hackage - Text.Printf module
- Haskell Wiki - Quasiquotation
- Voor rijke templating, bekijk Hackage - Mustache templates