我正在努力学习Haskell.
我们有非常简单的功能.据我所知,以下所有内容都是等效的.
但我不明白为什么f2
,f2'
有不同的类型,为什么到底Integer
.
此外,如果我指定f2'
手动类型,它接受它并且工作相同f2
.
f x = x + 1
-- f :: Num a => a -> a
f' = \x -> x + 1
-- f' :: Num a => a -> a
f2 a b = a + b
-- f2 :: Num a => a -> a -> a
f2' = \a b -> a + b
-- f2 :: Integer -> Integer -> Integer
f2'' = \a -> \b -> a + b
-- f2 :: Integer -> Integer -> Integer
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?