Object serialization: Difference between revisions

m
"G" before "H"
m ("G" before "H")
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}}==
Line 1,073 ⟶ 1,043:
[lists, are, serializable]
Schroeder</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|J}}==
Anonymous user