Haskell 如何找到类型类';谁的祖先?

Haskell 如何找到类型类';谁的祖先?,haskell,Haskell,在下图中,我们看到RealFloat是浮点的一个实例,而浮点又是分数等的一个实例 对于Haskell中的任何类型类,我们如何找到所有的“父类” 只需使用ghci解释器即可。要演示您的示例,请执行以下操作: λ> :i RealFloat class (RealFrac a, Floating a) => RealFloat a where floatRadix :: a -> Integer floatDigits :: a -> Int ..... inst

在下图中,我们看到RealFloat是浮点的一个实例,而浮点又是分数等的一个实例

对于Haskell中的任何类型类,我们如何找到所有的“父类”


只需使用ghci解释器即可。要演示您的示例,请执行以下操作:

λ> :i RealFloat
class (RealFrac a, Floating a) => RealFloat a where
  floatRadix :: a -> Integer
  floatDigits :: a -> Int
  .....
instance Floating Float -- Defined in `GHC.Float'
instance Floating Double -- Defined in `GHC.Float'
λ> :i Floating
class Fractional a => Floating a where
  pi :: a
  exp :: a -> a
  .....

从上面的示例中,您可以看到
RealFloat
RealFrac
Floating
的关系,以及
Floating
fractive
的关系查看代码/文档?哈斯克尔没有开箱即用的反射。@osager什么都没有,我知道。这可能是一个有趣的周末项目。:)我也许应该指出,除了数值类之外,Haskell类的层次结构往往很浅。