Haskell 派生(';:)的可类型化实例
我正在尝试为(':)派生一个可键入的实例 我使用的是DataTypes和[*] 我启用了类型运算符、独立派生和多种类 我无法派生typeable的实例 我试过了Haskell 派生(';:)的可类型化实例,haskell,Haskell,我正在尝试为(':)派生一个可键入的实例 我使用的是DataTypes和[*] 我启用了类型运算符、独立派生和多种类 我无法派生typeable的实例 我试过了 deriving instance Typeable (':) 及 及 但它们都会出现解析错误 我知道如果我写 data List a = Cons a (List a) | Empty deriving instance Typeable (Cons) 我得到了预期的结果,但我不希望重写现有代码以使用自定义列表类型。这似乎可行
deriving instance Typeable (':)
及
及
但它们都会出现解析错误
我知道如果我写
data List a = Cons a (List a) | Empty
deriving instance Typeable (Cons)
我得到了预期的结果,但我不希望重写现有代码以使用自定义列表类型。这似乎可行
deriving instance Typeable '(:)
大概“
设计用于标记“整个类型构造函数”,包括它是否是分段的?我觉得有点奇怪。然而,这与元组是一致的,您可以在元组中编写
'(a, b)
非常有趣的是,您可以通过这种方式为
“[]
派生实例,但不能为”:
派生实例。对于其他想尝试此功能的人,您需要数据种类、多种类、可派生数据类型和独立派生。
deriving instance Typeable '(:)
'(a, b)