packages feed

msgpack-0.4.0: test/UserData.hs

{-# Language TemplateHaskell #-}

import Data.MessagePack
import Data.MessagePack.Derive

data T
  = A Int String
  | B Double
  deriving (Show)

$(deriveObject ''T)

data U
  = C { c1 :: Int, c2 :: String }
  | D { d1 :: Double }
  deriving (Show)

$(deriveObject ''U)

main = do
  let bs = pack $ A 123 "hoge"
  print bs
  print (unpack bs :: T)
  let cs = pack $ B 3.14
  print cs
  print (unpack cs :: T)
  let oa = toObject $ A 123 "hoge"
  print oa
  print (fromObject oa :: T)
  let ob = toObject $ B 3.14
  print ob
  print (fromObject ob :: T)

  let ds = pack $ C 123 "hoge"
  print ds
  print (unpack ds :: U)
  let es = pack $ D 3.14
  print es
  print (unpack es :: U)
  let oc = toObject $ C 123 "hoge"
  print oc
  print (fromObject oc :: U)
  let od = toObject $ D 3.14
  print od
  print (fromObject od :: U)