Haskell:
Työskentely YAML:n kanssa

Kuinka:

Haskell ei sisällä sisäänrakennettua tukea YAML-käsittelylle, mutta voit käyttää kolmannen osapuolen kirjastoja, kuten yaml ja aeson, YAML-datan jäsentämiseen ja tuottamiseen. Tässä on, miten voit aloittaa:

YAMLin lukeminen

Lisää ensin yaml-paketti projektisi riippuvuuksiin. Tämän jälkeen voit käyttää seuraavaa esimerkkiä yksinkertaisen YAML-dokumentin jäsentämiseen:

{-# LANGUAGE OverloadedStrings #-}

import Data.YAML
import Data.ByteString (ByteString)
import Control.Monad.IO.Class (liftIO)

-- Esimerkki YAML-data
yamlData :: ByteString
yamlData = "
name: John Doe
age: 30
"

-- Määritä datarakenne, joka vastaa YAML-dokumenttia
data Henkilö = Henkilö
  { nimi :: String
  , ikä :: Int
  } deriving (Show)

instance FromYAML Henkilö where
  parseYAML = withMap "Henkilö" $ \m -> Henkilö
    <$> m .: "nimi"
    <*> m .: "ikä"

main :: IO ()
main = do
  let parsed = decode1 yamlData :: Either (Pos,String) Henkilö
  case parsed of
    Left err -> putStrLn $ "Virhe YAMLin jäsentämisessä: " ++ show err
    Right henkilö -> print henkilö

Edellä mainitun koodin tuloste voisi näyttää seuraavalta:

Henkilö {nimi = "John Doe", ikä = 30}

YAMLin kirjoittaminen

Haskellin datarakenteista YAMLin tuottamiseen voit käyttää yaml-paketin koodaustoiminnallisuuksia, kuten alla on esitetty:

{-# LANGUAGE OverloadedStrings #-}

import Data.YAML
import Data.ByteString.Lazy.Char8 (unpack)

-- Käyttäen Henkilö-datarakennetta edellisestä esimerkistä

henkilö :: Henkilö
henkilö = Henkilö "Jane Doe" 25

main :: IO ()
main = do
  let yamlData = encode1 henkilö
  putStrLn $ unpack yamlData

Tämän ohjelman tuloste on YAML-muotoiltu merkkijono:

nimi: Jane Doe
ikä: 25

Nämä esimerkit toimivat lähtökohtana YAMLin käsittelylle Haskellissa. Tarpeidesi mukaan saattaisit haluta tutkia näiden kirjastojen tarjoamia monimutkaisempia ominaisuuksia ja vaihtoehtoja.