为什么在Haskell中使用lambda表示法会产生不同的类型签名?

时间:2016-11-06 03:22:27

标签: haskell types lambda

我用以下三种方式编写了我认为相同的功能:

addThree x y z = x + y + z
addThree' = \x y z -> x + y + z
addThree'' = \x -> \y -> \z -> x + y + z 

然而,当我使用:t加载并检查GHCi中的类型时,它给了我一个非常奇怪的答案:

addThree :: Num a => a -> a -> a -> a
addThree' :: Integer -> Integer -> Integer -> Integer
addThree'' :: Integer -> Integer -> Integer -> Integer

为什么lambda具有不同的特殊类型,而普通的类型具有正确的类型?

0 个答案:

没有答案