2017-04-02 115 views
2

如果我們做 let add a b = a+b 然後add :: Num a => a -> a -> a我們如何知道類型類是否是另一個類型類的子類?

我們也知道1.5 :: Fractional a => a。 和add 1 1.5完美無瑕。

如果我理解正確的每一個具有Fractional實例的類型也有一個Num的實例,但是這個事實是如何明確的?

+0

你能解釋「這個事實是如何明確的?」更好?你究竟是什麼意思? – niceman

回答

9

它在Fractional類的定義:

class Num a => Fractional a where 
    ... 

你可以看到它在GHCI打字:i Fractional,或在Haddock docs

+0

重要提示:Haskell沒有「子類型類型」,它只是檢查「Fractional」的所有實例是否遵守類上下文,在這種情況下表示子類型類關係。這不是一個特殊的語法,只是一個有用的習慣用法。 – Lazersmoke

相關問題