Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何为如下数据类型定义可存储向量实例(由 GHC 原始类型组成):
data Atoms = I GHC.Int.Int32|S GHC.Int.Int16 -- define a union data type
我检查了这个可存储的教程,但它只适用于相同类型的向量,而不是像上面那样的联合。
您必须以某种方式对用于实例化类型的构造函数进行编码。
例如,您可以添加一个字节来指定所使用的构造函数的索引。这意味着上面的值可以这样存储:
Haskell Binary I 3 -> 00 00 00 00 03 S 4 -> 01 00 04 XX XX ^ Data ^ Constructor index XX = unused byte
然后,当您想从字节字符串中反序列化一个值时,您可以查看第一个字节,查看它是哪个索引,然后根据此选择要使用的构造函数(以及接下来要查看的内容)。