繁体   English   中英

管理和创建基于管道的库

[英]Conduit and creating conduit based libraries

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

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

那么,如何制作一些普通的图书馆管道呢? 只需使用主管道包,它是否有资格为流数据问题提供解决方案?

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

是的,主管道包几乎是你需要开始的一切。

我们的想法是您在Conduit组织您的工作流程。 拿一些元素 - 推出一些元素。 在基础层面上,只需使用awaityield就可以走得很远。 只需在monad中使用它们,如下所示:

idConduit =
  do mElt <- await
     case mElt of
       Nothing -> return ()
       Just element ->
         do yield element
            idConduit

然后你把它们放在SinkSource之间,就像mySink $= myConduit1 $= myConduit2 $$ mySource ,你就完成了。

如果你想用它们读取文件,也可以尝试使用attoparsec-conduit

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM