为什么数据类型不能序列化,尽管它是show class的成员?

J F*_*sch 3 haskell

data Mine = Firstname String
          | Lastname String
          deriving (Show, Serialize)
Run Code Online (Sandbox Code Playgroud)

这不编译并给出错误

Not in scope: type constructor or class `Serialize'
Run Code Online (Sandbox Code Playgroud)

为什么它不是Serialize类的成员,尽管它是Show类的成员.我认为Show类的所有成员应该没有问题序列化?

asm*_*asm 7

该错误表明Serialize类型类不在范围内.您需要导入定义类型类的包才能使用它.你可能想要:

import Data.Serialize
Run Code Online (Sandbox Code Playgroud)

谷物包装.

  • @AndrewMyers:"派生"类型类的包通常使用TH为您编写实例,或者使用GHC的泛型并提供`实例(Generic a)=> Foo a where`默认实例或可用于编写的通用实现实例."谷物衍生"似乎是后者,但看起来"谷物"支持类似的东西,如在mhwombat的回答中. (3认同)