Haskell:
Робота з YAML
Як робити:
Haskell не має вбудованої підтримки для обробки YAML, але ви можете використовувати сторонні бібліотеки, такі як yaml
та aeson
, для розбору та генерації даних YAML. Ось як ви можете розпочати:
Читання YAML
Спочатку, додайте пакет yaml
до залежностей вашого проекту. Потім, ви можете використовувати наступний приклад для розбору простого документа YAML:
{-# LANGUAGE OverloadedStrings #-}
import Data.YAML
import Data.ByteString (ByteString)
import Control.Monad.IO.Class (liftIO)
-- Приклад даних YAML
yamlData :: ByteString
yamlData = "
name: John Doe
age: 30
"
-- Визначаємо структуру даних, яка відповідає документу YAML
data Person = Person
{ name :: String
, age :: Int
} deriving (Show)
instance FromYAML Person where
parseYAML = withMap "Person" $ \m -> Person
<$> m .: "name"
<*> m .: "age"
main :: IO ()
main = do
let parsed = decode1 yamlData :: Either (Pos,String) Person
case parsed of
Left err -> putStrLn $ "Помилка при розборі YAML: " ++ show err
Right person -> print person
Зразок виводу для вище наведеного коду може виглядати так:
Person {name = "John Doe", age = 30}
Запис YAML
Для генерації YAML з структур даних Haskell можна використовувати функціонал кодування пакету yaml
, як показано нижче:
{-# LANGUAGE OverloadedStrings #-}
import Data.YAML
import Data.ByteString.Lazy.Char8 (unpack)
-- Використовуючи структуру даних Person з попереднього прикладу
person :: Person
person = Person "Jane Doe" 25
main :: IO ()
main = do
let yamlData = encode1 person
putStrLn $ unpack yamlData
Вивід цієї програми буде рядком, відформатованим у YAML:
name: Jane Doe
age: 25
Ці приклади повинні стати відправною точкою для роботи з YAML у Haskell. Залежно від ваших потреб, можливо, вам захочеться дослідити більш розширені можливості та опції, які пропонують ці бібліотеки.