Haskell:
Інтерполяція рядків
Як це зробити:
У Haskell інтерполяція рядків не є вбудованою, але можна використовувати бібліотеку text
із шаблонними літералами.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE QuasiQuotes #-}
import Data.Text
import Data.String.Interpolate ( i )
main :: IO ()
main = do
let userName = "Володимир"
let userEmail = "[email protected]"
putStrLn [i|Користувач: #{userName}, Електронна адреса: #{userEmail}|]
Запуск програми виведе:
Користувач: Володимир, Електронна адреса: [email protected]
Також бібліотека printf
може слугувати для форматування рядків.
import Text.Printf ( printf )
main :: IO ()
main = do
let age = 30
printf "Мені %d років\n" age
Вивід буде:
Мені 30 років
Занурення в глибину
Haskell не має вбудованої підтримки для інтерполяції рядків, на відміну від мов як Python чи JavaScript. Історично, одна з причин – це типова система Haskell та немутабельність даних, які не сприяють простій встроєній інтерполяції.
Альтернативами вбудованій інтерполяції є: використання printf
з модуля Text.Printf
, що дозволяє форматування рядків, чи бібліотеки та пакети на зразок interpolate
, shakespeare
, і formatting
.
text
і interpolate
використовують quasi-quoters, які дають змогу створювати власні обчислювальні контексти u Haskell, внаслідок чого можливою стає інтерполяція.
Ще деякі ресурси
- Hackage: text - документація бібліотеки
text
. - Hackage: interpolate - інформація про бібліотеку
interpolate
. - Haskell Wiki: String interpolation - стаття з вікіпедії Haskell про інтерполяцію рядків.
- Hackage: format - документація бібліотеки
formatting
.