问题标签 [conduit]

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 投票
1 回答
1341 浏览

haskell - “MonadIO m”和“MonadBaseControl IO m”有什么区别吗?

network-conduit中的函数runTCPClient具有以下签名:

MonadIO m提供

MonadBaseControl IO m提供

没有明显的区别。它们提供相同的功能吗?如果是,为什么类型签名中有重复?如果不是,有什么区别?

0 投票
4 回答
503 浏览

sockets - 导管和插座:允许多个连接

conduit下面是一些使用、network-conduit和实现小型接收服务器的代码stm-conduit。它在套接字上接收数据,然后通过 STM 通道将其流式传输到主线程。

(在实际应用程序中,来自套接字的数据流与其他一些数据流合并,这就是为什么我不在侦听器中直接处理它的原因)。

问题是,我曾期望它在主线程被杀死之前保持打开状态,而是在套接字上收到第一条消息后退出。我无法弄清楚它为什么这样做,除非它是接收器(在第 2 到最后一行)在看到第一个数据流的结尾时退出。我可以说服它不要这样做吗?有一些Conduit关于使源可恢复的东西,但不是接收器。

0 投票
1 回答
1475 浏览

haskell - 在 Network.HTTP.Conduit 中禁用 SSL/TLS 证书验证

我使用http-conduit库版本 2.0+ 从http://URL 获取内容:

运行此程序时,我收到此错误:

从错误消息中可以看出,问题是无法Network.HTTP.Conduit正确验证服务器证书(在这种情况下,证书链中似乎存在问题)

如何更改上述代码以忽略证书错误(即根本不验证证书)?

0 投票
1 回答
269 浏览

haskell - Haskell bzlib-conduit/zlib-conduit example

Let's assume we create the file a.txt.gz as follows:

I intend to use zlib-conduit in order to emulate zcat in Haskell.

I'm looking for a simple example that can also be applied to bzlib-conduit.

Note: This question was answered immediately in a Q&A-Style. Therefore it intentionally does not show any research effort.

0 投票
1 回答
178 浏览

haskell - 导管和创建基于导管的库

我知道 Conduit 是一种解决流数据问题的解决方案,用于处理常量内存中的数据。

我在 hackage 中看到很多带有管道名称的库。一些例子是cvs-conduitzlib-conduitattoparsec-conduit等。

那么,如何制作一些基于普通库的管道呢?仅仅使用主管道 包,是否有资格解决流数据问题?

我试图深入研究 csv-conduit 的来源,它太复杂了。(比 RWH 书中实现的完整 csv 解析器大得多(大得多)。)此外,这个github 库实际上使用了 Conduit,那么它是否也可以处理恒定内存中的流数据?

0 投票
1 回答
218 浏览

haskell - 使用管道解析通过地图保留剩菜

我试图了解管道解析 3.0 如何处理除spanand之外的情况splitAt,但无法完全弄清楚如何让事情正常进行。基本思想是我有一个同构,我想映射所有输入值以从 type 转换A为 type B。然后,我希望将所有剩菜从转换BA. 我将如何做到这一点pipes-parse

为了比较,代码如下所示conduit

编辑:为了澄清,这是我上面代码的输出:

请注意,原始流的类型为A. 我们正在转换B并查看第一个元素,然后将接下来的 3 个元素作为 type A,然后将以下三个作为B,最后将其余的作为A

0 投票
2 回答
400 浏览

haskell - 单步导管

我想按照 ArrowChoice 的方式做一些事情,但要使用管道。我想等待一个 Either 值,然后将 Left 值传递给一个管道,将 Right 值传递给另一个,然后将结果合并回 Either 流。

大概这可以通过使内部管道像自动机一样来完成:将管道变成一个函数,该函数接受一个参数并返回一个产生的输出的单子列表:

输出列表的原因是导管可能为每个输入产生 0 个或多个输出。

我查看了 ResumableConduit 及其亲属,大概答案就在某处。但我不太明白它是如何完成的。

0 投票
2 回答
183 浏览

haskell - Incorporating Conduit to ordinary functions

I wrote a simple program in which I read a big XML file and do some processing on the contents of the file and then save the processed data in new file.

The original main function follows something like this:

But this code eats up the full memory and takes a huge time to finish. So, I decided to use conduit library for making the program run in constant memory.

But after reading the conduit tutorial, I still haven't got the idea how to make the above program use the features of conduit library.

I figured out that I can use conduit's sourceFile which can stream the content of the file. But then how to apply the function parseTags (which is a function from the TagSoup library) and other simple functions to the streamed content now ?

Edit: The entire code is here

0 投票
1 回答
140 浏览

haskell - 导管:提取结果数

我正在玩导管库,并编写了一段示例代码,用于在两个数字(2 和 3)出现在序列中时提取它们。以下是我的代码:

但是当我执行该main函数时,我没有得到任何输出。我所期望的实际上是这样的:

知道我做错了什么吗?

0 投票
1 回答
182 浏览

haskell - 从文件中无限读取

我正在尝试从文件中读取一些不规则的输入(例如,可能不时出现的命令)。例如最初源文件是空的,我的程序已经启动。然后一个字符串被附加到文件中,我的程序必须读取这个字符串。

第一个幼稚的实现:

但它当然不能正常工作(首先是因为性能问题)。我怎样才能正确地实现这一点(也许使用管道)?