【发布时间】:2012-07-05 04:36:54
【问题描述】:
我们不能对每种类型都使用read someValue :: someDataType 或show someValue,因为deriving (Show, Read) 必须写在data 声明中。除了错误之外,是否存在我们不希望我们的类型可序列化的情况?
为什么 Show 与 Read 分开?有没有一种情况,除了错误,我们只想显示一些数据而不读取它?如果没有,为什么不使用单一数据类型Serializable?
刚才,我使用的是the Key datatype of the Gloss library,它派生了Show,而不是Read,我不明白。很遗憾,因为我想把控件的配置放在一个文件中然后读取它,这样玩家就可以更改控件并拥有自己的配置。
我必须为 Key、SpecialKey 和 MouseButton 做包装,这没什么大不了的,但没用。
data Key' = Char' Char | SpecialKey' SpecialKey | MouseButton' MouseButton
deriving (Eq, Ord, Show, Read)
convertKey x = case x of
Char' c -> Char c
SpecialKey' sk -> SpecialKey sk
MouseButton' mb -> MouseButton mb
【问题讨论】:
标签: haskell derived-types