Haskell:为什么derivingSafeCopy只依赖于传递给构造函数的类型?
我想使用derivingSafeCopy from来序列化数据类型以将它们存储在数据库中——这是因为我希望能够轻松地迁移数据库中的类型 根据规格,如果我有类似的东西:Haskell:为什么derivingSafeCopy只依赖于传递给构造函数的类型?,haskell,serialization,database-migration,Haskell,Serialization,Database Migration,我想使用derivingSafeCopy from来序列化数据类型以将它们存储在数据库中——这是因为我希望能够轻松地迁移数据库中的类型 根据规格,如果我有类似的东西: data A = A data B = B deriveSafeCopy 1 'base ''A deriveSafeCopy 1 'base ''B putCopy A和putCopy B的输出将相同。我希望putCopy A和putCopy B会有所不同,因为我正在使用runGet序列化A和B。safeGet,并且希望A和B
data A = A
data B = B
deriveSafeCopy 1 'base ''A
deriveSafeCopy 1 'base ''B
putCopy A和putCopy B的输出将相同。我希望putCopy A和putCopy B会有所不同,因为我正在使用runGet序列化A和B。safeGet,并且希望A和B序列化为不同的内容。为什么它是这样工作的,我怎样才能让A和B以一种允许我轻松迁移数据类型的方式序列化到不同的东西呢?假设数据是用序列化类型标记的,正如您所认为的那样。您将如何使用这些信息?即使可以在不指定类型的情况下反序列化值,您将如何使用结果值(毕竟您不知道其类型) 考虑制作如下类型:
data C = TagA A | TagB B
现在,您可以将A
和B
值放入C
包装器中并序列化结果。当您反序列化C
类型的值时,您现在有一个标记(构造函数)来指示所包含值的类型
免责声明:我从来没有机会使用这些库