me2*_*me2 5 binary serialization haskell
Haskell是否有一个简单的序列化方法,类似于Erlang的term_to_binary/binary_to_term调用?Data.Binary似乎不必要地复杂和原始.请参阅此示例,您基本上手动将术语编码为整数.
Don*_*art 10
使用Data.Binary,以及程序包附带的派生脚本之一.
通过Data.Binay工具集中提供的'derive'或'deriveM'函数派生二进制实例非常简单.
derive :: (Data a) => a -> String
Run Code Online (Sandbox Code Playgroud)
对于Data中的任何"a",它将为您导出Binary实例作为String.还有一个putStr版本,deriveM.例:
*Main> deriveM (undefined :: Drinks)
instance Binary Main.Drinks where
put (Beer a) = putWord8 0 >> put a
put Coffee = putWord8 1
put Tea = putWord8 2
put EnergyDrink = putWord8 3
put Water = putWord8 4
put Wine = putWord8 5
put Whisky = putWord8 6
get = do
tag_ <- getWord8
case tag_ of
0 -> get >>= \a -> return (Beer a)
1 -> return Coffee
2 -> return Tea
3 -> return EnergyDrink
4 -> return Water
5 -> return Wine
6 -> return Whisky
_ -> fail "no parse"
Run Code Online (Sandbox Code Playgroud)
您引用的示例是机器生成的输出的示例 - 是的,它是最低级别的所有位!不要手工编写 - 使用工具通过反射为您导出它.
| 归档时间: |
|
| 查看次数: |
494 次 |
| 最近记录: |