我们说我有一个函数($10)
。
现在,由于10属于Num a => a
类型,($10)
肯定属于Num a => (a -> b) -> b
类型,GHCi确认了这一点。
但是当我说let f = ($10)
时,GHC会将f的类型推断为(Integer -> b) -> b
,就好像let
- 分配推断了一些额外的&#39}。使用文字的信息。
这是否意味着GHC的类型推断强制文字的具体类型?
但如果是这样,为什么:t ($10)
会返回Num a => (a -> b) -> b
?
f :: Num a => (a -> b) -> b
f = ($10)
typechecks,f (+0.1)
产生正确的结果,而
g = ($10)
使用g (+0.1)
调用的失败,期待Integer
。