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. בהתאם לצרכים שלכם, כדאי יהיה לחקור תכונות ואפשרויות מתקדמות יותר המוצעות על ידי ספריות אלה.