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