3

我在使用 Turtle 时遇到了一些困难,只有在盯着难以理解的错误消息几分钟后,我才意识到我使用了错误的fold功能。

https://hackage.haskell.org/package/turtle-1.5.8/docs/Turtle-Shell.html#v:fold https://hackage.haskell.org/package/foldl-1.4.0/docs/src /Control.Foldl.html#fold

为什么会出现名称冲突?我不相信这是巧合,但我无法弄清楚。这些是天生不同类型的褶皱吗?

具体来说,我想使用最大修改时间将流文件名折叠成单个名称。

4

1 回答 1

3

(首先,我们这里所说的折叠不是来自 的foldr foldl foldl'函数Data.Foldable,它们来自foldl包,它在概念上foldl'来自 的函数相关Data.Foldable,作为一种通用的概括,但有单独的定义.)

Fold数据类型表示对传入的值序列执行的严格的、有状态的操作。它的Applicative实例允许您在相同的值序列上运行两个操作组合。Folds 具有很好的特性,即它们不知道值的来源。

每种类型的源都有自己的函数来输入值。这些函数可能共享名称fold,但这不是问题,因为典型的建议是导入合格的包。

foldl包中的fold函数提供任何容器的内容。turtlefold提供a 的结果。像“管道”这样的流媒体库有自己的适配器FoldableShell

于 2018-04-26T19:43:27.567 回答