(Humell中的Num(b - > b),Num b)

时间:2017-04-13 09:42:53

标签: haskell type-systems

我注意到Haskell中有一个模式。通常当我做错事时

[(+3),(-3)] <*> pure 4 :: (Num (b -> b), Num b) => [b]

我知道问题是(-3),它应该是(subtract 3),但是类型签名似乎首先暗示,你得到一个有效的值,但有一些约束。

Num b是合乎逻辑的,涉及数学运算。 但这Num (b -> b)是什么意思?操作b -> b应该是一个数字?

通常当我注意到这一点时,我可以暗示该声明的进一步论据,并且我得到了良好类型的陈述:

[(+ 3),(- 3)] <*>  pure 4 4 4 :: (Num (t -> [b]), Num (b -> b), Num t, Num b) => [b]

这里发生了什么?

0 个答案:

没有答案