1

如何为如下数据类型定义可存储向量实例(由 GHC 原始类型组成):

data Atoms =  I GHC.Int.Int32|S GHC.Int.Int16 -- define a union data type

我检查了这个可存储的教程,但它只适用于相同类型的向量,而不是像上面那样的联合。

4

1 回答 1

4

您必须以某种方式对用于实例化类型的构造函数进行编码。

例如,您可以添加一个字节来指定所使用的构造函数的索引。这意味着上面的值可以这样存储:

Haskell    Binary
I 3     -> 00 00 00 00 03
S 4     -> 01 00 04 XX XX
              ^ Data
           ^ Constructor index
XX = unused byte

然后,当您想从字节字符串中反序列化一个值时,您可以查看第一个字节,查看它是哪个索引,然后根据此选择要使用的构造函数(以及接下来要查看的内容)。

于 2011-12-08T22:03:52.417 回答