作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我检查了 foldl
函数的签名,结果如下:
> :t foldl
foldl :: Foldable t => (b -> a -> b) -> b -> t a -> b
我对这部分感到困惑 t a ->b
这部分是什么意思?
我的猜测是否正确,这是否意味着 foldl
函数的第三个参数是一个 Foldable
数据结构,其中包含 a
类型的元素?
最佳答案
是。 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
关于function - foldl类型中 `t a -> b`的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65605304/
我是一名优秀的程序员,十分优秀!