Інтерполяція рядків

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, внаслідок чого можливою стає інтерполяція.

Ще деякі ресурси