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.
Смотрите также
- Hackage - пакет interpolate
- Hackage - модуль Text.Printf
- Haskell Wiki - Квазикотирование
- Для богатого шаблонизирования ознакомьтесь с Hackage - шаблоны Mustache