GHC扩展DefaultSignatures允许更改默认方法的类型:
class Enum a where
enum :: [a]
default enum :: (Generic a, GEnum (Rep a)) => [a]
enum = map to genum
是否可以向编译器询问默认方法的类型?这样做的语法是什么?:t enum
是不够的(因为它显然报告enum :: Enum a => [a]
(。
:info Enum
会这样做。
对于您的示例,这将生成输出
class Enum a where
enum :: [a]
default enum :: (Generic a, GEnum (Rep a)) => [a]
-- Defined at ...