Object serialization: Difference between revisions

no edit summary
No edit summary
Line 985:
yellow lab, not trained
trained collie, but doesn't catch frisbee</pre>
 
=={{header|Haskell}}==
 
Example uses [https://hackage.haskell.org/package/binary <tt>binary</tt>] package. Since Haskell doesn't directly support OO-style inheritance, we use a sum type instead:
 
<lang 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])
</lang>
 
=={{header|Groovy}}==
Anonymous user