Haskell:
Робота з TOML
Як це зробити:
Спочатку переконайтеся, що у вас є бібліотека для парсингу TOML. Для Haskell htoml
є популярним вибором. Вам потрібно буде додати її до залежностей вашого проєкту.
-- Імпортуємо бібліотеку для парсингу TOML
import qualified Text.Toml as Toml
-- Визначаємо структуру даних конфігурації
data Config = Config {
title :: String,
owner :: Owner
} deriving (Show)
data Owner = Owner {
name :: String,
dob :: Maybe Day -- Необов'язкова дата
} deriving (Show)
-- Парсинг рядка TOML
main :: IO ()
main = do
let tomlData = "[owner]\nname = \"Tom Preston-Werner\"\ndob = 1979-05-27T07:32:00Z"
case Toml.parseTomlDoc "" tomlData of
Left err -> putStrLn $ "Помилка: " ++ show err
Right toml -> print toml -- Або додаткова обробка аналізованих даних TOML
Вихідний приклад можна структурувати та доступати як будь-який тип даних Haskell.
Поглиблений аналіз
Історично TOML був створений Томом Престон-Вернером, співзасновником GitHub, у відповідь на складнощі з YAML та JSON для конфігураційних файлів. Він наголошує на більшій зрозумілості та легкості написання порівняно з JSON, а також на більшій строгості та простоті порівняно з YAML.
До альтернатив TOML належать JSON і YAML, кожен з яких має свої переваги. JSON є убіквітним і незалежним від мови, тоді як YAML пропонує більш зручний для сприйняття людиною формат. TOML цінується за його простоту та послідовність, уникаючи деяких пасток своїх родичів.
Імплементація в Haskell, як правило, включає бібліотеку, яка парсить TOML у тип даних Haskell, часто використовуючи розширену систему типів Haskell для забезпечення правильності. Парсинг може виконуватися за допомогою рекурсивного спуску або комбінаторного аналізу, що збалансовує ефективність з читабельністю та підтримуваністю коду.
Див. також
htoml
: https://hackage.haskell.org/package/htoml- Офіційний репозиторій TOML на GitHub: https://github.com/toml-lang/toml
- Порівняння форматів серіалізації даних: https://en.wikipedia.org/wiki/Comparison_of_data-serialization_formats