Haskell 派生(';:)的可类型化实例

Haskell 派生(';:)的可类型化实例,haskell,Haskell,我正在尝试为(':)派生一个可键入的实例 我使用的是DataTypes和[*] 我启用了类型运算符、独立派生和多种类 我无法派生typeable的实例 我试过了 deriving instance Typeable (':) 及 及 但它们都会出现解析错误 我知道如果我写 data List a = Cons a (List a) | Empty deriving instance Typeable (Cons) 我得到了预期的结果,但我不希望重写现有代码以使用自定义列表类型。这似乎可行

我正在尝试为(':)派生一个可键入的实例

我使用的是DataTypes和[*]

我启用了类型运算符、独立派生和多种类

我无法派生typeable的实例

我试过了

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)