我正在努力学习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
有什么想法吗?