我试图了解 Haskell 函数定义。我采用了 foldl 函数,它的定义是
:t foldl
foldl :: (a -> b -> a) -> a -> [b] -> a
现在第一个参数是一个函数,所以如果我传递它,剩下的就是:
:t foldl (+)
foldl (+) :: Num b => b -> [b] -> b
我将其读作“一个接受数值并返回接受数组的函数的函数”。
现在,第一个参数真的是一个函数吗?可以读作
foldl :: a -> b -> a -> a -> [b] -> a
反而?
我尝试只传递一个数值,这就是我得到的:
foldl 4 :: Num (a -> b -> a) => a -> [b] -> a
问题是..你怎么读这个?我不明白我有什么。