haskell - 我应该在 Turtle 或 Foldl 包中使用折叠吗?

标签 haskell haskell-turtle

我在使用 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

为什么会出现名称冲突?我不相信这是巧合,但我无法弄清楚。这些本质上是不同类型的折叠吗?

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

最佳答案

(首先,我们这里讨论的折叠不是来自 Data.Foldablefoldr foldl foldl' 函数,它们来自 foldl 包, 概念上Data.Foldable 中的 foldl' 函数相关,作为一种多功能泛化,但具有单独的定义。)

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

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

fold来自 foldl 的函数包可容纳任何可折叠容器的内容。 fold来自turtle提供 Shell 的结果。像“pipes”这样的流媒体库有它们的 own adapters .

关于haskell - 我应该在 Turtle 或 Foldl 包中使用折叠吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50050325/

相关文章:

haskell - foldr 和 foldr1 Haskell

haskell - 使用无点表示法定义 `id` 函数

haskell - 如何在 Haskell Turtle 库中将 `Shell Line` 转换为 `Text`?

haskell - 如何将 stdout/stderr 通过管道传输到 Turtle 中另一个命令的 stdin?

haskell - Do 符号和 Monad 组合

haskell - 从什么意义上说,一个函数的定义“定义”比另一个函数少?

haskell - 海龟 : how to read a list of files?

haskell - 将字符串转换为 Turtle.FilePath

haskell - 堆栈解释器选项 - 添加外部依赖项

function - Haskell 运行时错误 : error: Prelude. (!!):索引太大