2014-10-09 64 views
4

在下面的圖片我們可以看到,RealFloat是浮動的,這又是分數等的實例的實例...如何查找類型類的祖先?

對於Haskell中任何類型的類,我們怎樣才能找到所有的「父母」?

enter image description here

+0

看代碼/文檔? Haskell沒有開箱即用的反射。 – 2014-10-09 12:08:32

回答

6

只需使用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如何與RealFracFloating以及如何Floating有關Fractional

+0

有沒有辦法打印這棵樹easilly? – osager 2014-10-09 12:13:15

+0

@osager沒有,我知道。這可能是一個有趣的週末項目。 :) – Sibi 2014-10-09 12:16:47

+1

我應該指出一點,除了數字類,Haskell類的層次結構往往很淺。 – MathematicalOrchid 2014-10-09 14:45:42