Haskell:
Travailler avec YAML

Comment :

Haskell n’a pas de support intégré pour le traitement de YAML, mais vous pouvez utiliser des bibliothèques tierces comme yaml et aeson pour analyser et générer des données YAML. Voici comment vous pouvez commencer :

Lire du YAML

D’abord, ajoutez le paquet yaml aux dépendances de votre projet. Ensuite, vous pouvez utiliser l’exemple suivant pour analyser un document YAML simple :

{-# LANGUAGE OverloadedStrings #-}

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

-- Exemple de données YAML
yamlData :: ByteString
yamlData = "
name: John Doe
age: 30
"

-- Définir une structure de données qui correspond au document 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 $ "Erreur lors de l'analyse du YAML : " ++ show err
    Right person -> print person

Un exemple de sortie pour le code ci-dessus pourrait ressembler à :

Person {name = "John Doe", age = 30}

Écrire du YAML

Pour générer du YAML à partir de structures de données Haskell, vous pouvez utiliser les fonctionnalités d’encodage du paquet yaml comme montré ci-dessous :

{-# LANGUAGE OverloadedStrings #-}

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

-- Utilisation de la structure de données Person de l'exemple précédent

person :: Person
person = Person "Jane Doe" 25

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

La sortie de ce programme sera une chaîne de caractères formatée en YAML :

name: Jane Doe
age: 25

Ces exemples devraient servir de point de départ pour travailler avec YAML en Haskell. Selon vos besoins, vous voudrez peut-être explorer des fonctionnalités et options plus avancées fournies par ces bibliothèques.