问题标签 [haskell-pipes]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
164 浏览

haskell - 在haskell-pipes中分叉流

我无法通过带有haskell-pipes的管道引导流量。基本上,我分析了一堆文件,然后我必须要么

  1. 以人性化的方式将结果打印到终端
  2. 将结果编码为 JSON

选择的路径取决于命令行选项。
在第二种情况下,我必须输出一个左括号,然后是每个传入的值,后跟一个逗号,然后是一个右括号。当前insertCommas从不终止,因此从不输出右括号。

0 投票
0 回答
117 浏览

haskell - 将 Pipes.Safe 与 IO 操作一起使用

我正在使用 Pipes.Files,它又依赖于 Pipes.Safe。我有这样的管道:

问题是类型analyze

allFilesMonadSafe mMonadIO m约束。理论上liftIO应该解决这个问题,但我得到了这个错误:

还有第二个错误,我现在不知道如何解释。

编辑:这是其他类型的签名:

0 投票
1 回答
74 浏览

haskell - Haskell-pipes:如何使用 drawAll 来测试具有 MonadSafe 约束的生产者?

我有一个生产者,给定一个路径,它遍历文件系统产生 Haskell 文件的路径。它建立在管道文件之上:

现在我想用 Hspec 对其进行测试,但我发现很难将生产者转换为列表。MonadSafe m如果不是因为那个导致很多类型错误的约束,它会更简单。这是我写的:

这是应该如何使用的:

编译测试会出现以下错误:

0 投票
1 回答
192 浏览

haskell - 如何检测 Haskell Pipe 中的最后一个块?

我有一个小型 Haskell Pipe,可以打印出它运行了多少次:

一旦处理完最后一个块,我希望能够打印出一条消息,并可能执行其他任务。我该怎么做呢?

0 投票
2 回答
200 浏览

haskell - Why does Haskell Pipes "use () to close unused inputs and X (the uninhabited type) to close unused outputs"?

In the Pipes Tutorial, it says that:

The concrete type synonyms use () to close unused inputs and X (the uninhabited type) to close unused outputs:

I'd like to understand why () and X are used the way they are. Why not X or () for both inputs and outputs?

0 投票
1 回答
60 浏览

haskell - Pipes.Concurrent:发送的信号比预期晚一键传递

我正在使用 Pipes.Concurrent 用 GTK 编写一个简短的 GUI 程序。这是一个扫雷游戏,所以我正在构建一个按钮网格。

我构建并连接我的按钮:

我将管道连接到:

几乎按预期运行。但是如果我点击按钮 1,什么都不会发生。但是如果我按下按钮 23,它会将信息标签更新为“1..”。如果我单击另一个按钮,它将更新为“23..”,依此类推。

我怀疑要么我无法理解并发管道是如何在某个级别上工作的,要么是惰性 IO 正在做一些奇怪的事情。

0 投票
0 回答
87 浏览

csv - 使用管道 csv 解析 Latin-1 编码的内容?

我想pipes-csv用来解析一些大型 CSV 文件,但事实证明这些 CSV 文件是 Latin-1 编码的,而且它所依赖pipes-csv的库也假设为 UTF-8。cassava这最终会产生我需要处理的解析错误。

我采用的方法是复制将保存 CSV 数据的记录,以便所有Text字段都是ByteStringdup 中的字段。我解码到 dup,然后手动将 Latin-1 字符串翻译成 UTF-8 并创建最终记录。至少可以说不雅。

有没有更好的办法?


根据丹尼尔的建议,这是我目前所拥有的:

它用不必要的记录换取不必要的文本重新编码,但这是一种改进。我不认为有办法做到这一点而不做这些不必要的事情?

0 投票
1 回答
272 浏览

haskell - 保持状态的管道

我正在尝试使用pipes.

目前我有这个。但是不知道如何编写一个维护状态的管道。

如何让buzzHash保存上一个值并将其用于计算下一个值?初始状态值应为 0。

0 投票
2 回答
230 浏览

haskell - Haskell Pipes:如何对生产者的输出进行排序?

我有以下代码:

它打印目录中的所有文件top。如何在打印之前对输出进行排序?我是否需要编写一个消费者,首先将输出“排出”到一个列表中,然后对其进行排序?我正在使用管道 4.1.4。

0 投票
1 回答
91 浏览

haskell - 在 monad 转换器中捕获异常

我正在使用 haskell-pipes 递归遍历目录并打印文件。如何处理来自 Producer 的异常,它是一个 monad 转换器?bracket在这种情况下handle不工作。