【发布时间】:2016-10-31 22:54:11
【问题描述】:
当我在 ghci 中输入 :t 4 时,我得到了
Prelude> :t 4
4 :: Num t => t
我理解为什么4 不仅是一个 Int 或一个 Integer,而且它是自下而上推断的,但我不明白为什么 4 没有显示为 Ord t => t 或更正确的是这样的:
4 :: (Ord t || Num t) => t
因为4 既是Ord 又是Num 但Ord 和Num 没有连接...
那么为什么:t 4 只输出Num?
【问题讨论】:
-
这在haskell report中有描述
-
假设我给
4类型Ord t => t。现在我注意到Bool是Ord的一个实例。因此4 :: Bool。4 :: Bool应该是True还是False,为什么? -
@Lee Btw,关于类型默认规则有类似的问题:stackoverflow.com/questions/39251728/… 我试图回答并理解报告,但仍然没有明确的看法。也许更有经验的 Haskell 用户可以提供帮助:)
标签: haskell types type-inference typeclass