Интерполяция строки

Haskell:
Интерполяция строки

Как это сделать:

В Haskell интерполяция строк не встроена изначально, но с пакетом interpolate вы можете приблизиться к желаемому. Сначала убедитесь, что у вас установлен пакет:

cabal update
cabal install interpolate

Теперь напишите немного кода на Haskell:

{-# LANGUAGE QuasiQuotes #-}
import Data.String.Interpolate (i)

main :: IO ()
main = do
    let name = "world"
    let greeting = [i|Привет, #{name}!|]
    putStrLn greeting

Запустите его:

Привет, мир!

Погружение в тему

Исторически Haskell не включал интерполяцию строк из коробки. Это функциональность более распространена в скриптовых языках. Интерполяция в Haskell стала более гладкой с развитием квазикотировщиков, которые позволяют определить собственный пользовательский синтаксис — как наш i для интерполяции строк.

Альтернативы? Конечно, используйте printf из Text.Printf, или конкатенируйте строки и переменные с помощью ++. Но эти методы не имеют элегантности и простоты интерполяции.

С точки зрения реализации, interpolate трансформирует ваши интерполированные строки в обычные строки Haskell во время компиляции с использованием Template Haskell, так что при выполнении вашего кода не происходит потери производительности. Это умно и чисто, как и сам Haskell.

Смотрите также