26 lines
713 B
Haskell
26 lines
713 B
Haskell
{-# LANGUAGE DeriveGeneric #-}
|
|
|
|
module Main (main) where
|
|
|
|
import qualified Data.ByteString.Lazy as ByteString (readFile, writeFile)
|
|
import Data.Binary (Binary)
|
|
import qualified Data.Binary as Binary (decode, encode)
|
|
import GHC.Generics (Generic)
|
|
|
|
data Employee =
|
|
Manager String String
|
|
| IndividualContributor String String
|
|
deriving (Generic, Show)
|
|
instance Binary Employee
|
|
|
|
main :: IO ()
|
|
main = do
|
|
ByteString.writeFile "objects.dat" $ Binary.encode
|
|
[ IndividualContributor "John Doe" "Sales"
|
|
, Manager "Jane Doe" "Engineering"
|
|
]
|
|
|
|
bytes <- ByteString.readFile "objects.dat"
|
|
let employees = Binary.decode bytes
|
|
print (employees :: [Employee])
|