Een string interpoleren

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