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.