Anonymous user
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}}==
|