Haskell:
Работа с YAML
Как это сделать:
Чтобы работать с YAML в Haskell, используйте пакет yaml
. Сначала установите его:
cabal install yaml
Определите структуру данных, а затем кодируйте и декодируйте YAML:
{-# LANGUAGE OverloadedStrings #-}
import Data.YAML
import Data.ByteString (ByteString)
-- Определение структуры данных
data Person = Person
{ name :: String
, age :: Int
} deriving (Show)
-- Пример экземпляра Person
examplePerson :: Person
examplePerson = Person "Chris" 30
-- Сериализация (Haskell в YAML)
yamlEncode :: Person -> ByteString
yamlEncode = encode
-- Десериализация (YAML в Haskell)
yamlDecode :: ByteString -> Either String Person
yamlDecode = decodeThrow
main :: IO ()
main = do
-- Кодирование в YAML и вывод результата
putStrLn "Encoded YAML:"
print $ yamlEncode examplePerson
-- Пример данных YAML
let exampleYAML = "name: Alex\nage: 25\n"
-- Декодирование из YAML и вывод результата
putStrLn "Decoded Haskell:"
print $ yamlDecode exampleYAML
Пример вывода для кодирования и декодирования:
Encoded YAML:
"age: 30\nname: Chris\n"
Decoded Haskell:
Right (Person {name = "Alex", age = 25})
Глубокое погружение
YAML появился в 2001 году, нацеленный на сериализацию данных и читаемость для человека. Это популярный выбор для файлов конфигурации, таких как Docker Compose и рабочие процессы GitHub. К альтернативам относятся такие форматы, как JSON и XML, но минимальный синтаксис YAML часто предпочитают за его чистый вид. При реализации YAML в Haskell ключевым является определение структур данных, соответствующих парам ключ-значение в YAML. Пакет yaml
, построенный на основе библиотеки C libyaml, обеспечивает отличную производительность и совместимость.
Смотрите также
- Официальный сайт YAML: https://yaml.org
- Пакет
yaml
на Hackage: https://hackage.haskell.org/package/yaml - Пакет
aeson
, для работы с JSON в Haskell, который имеет схожие черты: https://hackage.haskell.org/package/aeson