我正在学习haskell中的匿名函数。
mTH3 x = (\y -> \z -> x*y*z)
此类型签名为
*Main> :t mTH3
mTH3 :: Num a => a -> a -> a -> a
而这个功能
mTH4 = (\x -> \y -> \z -> x*y*z)
它出来了
*Main> :t mTH4
mTH4 :: Integer -> Integer -> Integer -> Integer
它们之间的差异是什么原因。为什么第二个功能的类型签名与第一个相同。如果我尝试定义第二个函数的类型签名,如下所示:
mTH4 :: Num a => a -> a -> a -> a
mTH4 = (\x -> \y -> \z -> x*y*z)
然后输出与mTH3
函数相同。