2017-04-02 119 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

相关问题