如果我们做 let add a b = a+b
然后add :: Num a => a -> a -> a
。我们如何知道类型类是否是另一个类型类的子类?
我们也知道1.5 :: Fractional a => a
。 和add 1 1.5
完美无瑕。
如果我理解正确的每一个具有Fractional
实例的类型也有一个Num
的实例,但是这个事实是如何明确的?
如果我们做 let add a b = a+b
然后add :: Num a => a -> a -> a
。我们如何知道类型类是否是另一个类型类的子类?
我们也知道1.5 :: Fractional a => a
。 和add 1 1.5
完美无瑕。
如果我理解正确的每一个具有Fractional
实例的类型也有一个Num
的实例,但是这个事实是如何明确的?
重要提示:Haskell没有“子类型类型”,它只是检查“Fractional”的所有实例是否遵守类上下文,在这种情况下表示子类型类关系。这不是一个特殊的语法,只是一个有用的习惯用法。 – Lazersmoke
你能解释“这个事实是如何明确的?”更好?你究竟是什么意思? – niceman