如何查询默认方法的类型?

How to query the type of a default method?

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 ...