[英]Meaning of `t a -> b` in type of foldl
我检查了foldl
function 的签名,结果如下:
> :t foldl
foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
我对这部分感到困惑ta ->b
这部分是什么意思?
我的猜测是否正确,这意味着foldl
function 的第三个参数是包含a
类型元素的Foldable
数据结构?
是的。 t
是Foldable
类型类的成员,因此我们它是a
的可折叠元素。
例如,如果t
是t ~ []
,则签名为:
foldl :: (b -> a -> b) -> b -> [] a -> b
或更不规范:
foldl :: (b -> a -> b) -> b -> [a] -> b
但是t
可以是另一个Foldable
,例如Maybe
、 Tree
、 Either c
等。因此我们可以在这样的结构上使用Foldl
:
foldl :: (b -> a -> b) -> b -> [a] -> b
foldl :: (b -> a -> b) -> b -> Maybe a -> b
foldl :: (b -> a -> b) -> b -> Tree a -> b
foldl :: (b -> a -> b) -> b -> Either c a -> b
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.