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 $ "Error parsing 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 ขึ้นอยู่กับความต้องการของคุณ คุณอาจต้องการสำรวจคุณสมบัติและตัวเลือกขั้นสูงมากขึ้นที่ไลบรารีเหล่านี้มีให้