我使用Haskell进行基于行的数据处理,即可以应用sed、awk和类似工具的任务。作为一个简单的例子,让我们在标准输入的每一行前面加上000。 我有三种不同的方法来完成这个任务: 使用惰性IO和惰性ByteString 基于行的传送带。 基于块的传送带,内部使用纯严格的ByteStri...
这是一段使用 conduit、network-conduit和stm-conduit实现小型接收服务器的代码。它在套接字上接收数据,然后通过 STM 通道流式传输至主线程。 import Control.Concurrent (forkIO) import Control.Concurren...
我正在编写一个程序,将输入文件拆分为多个文件(Shamir's Secret Sharing Scheme)。 以下是我想象中的流程: source:使用Conduit.Binary.sourceFile从输入读取 conduit:接受ByteString,生成[ByteString] ...
我用Haskell写了一个守护进程,每5分钟从网页上爬取信息。虽然原本这个守护进程可以运行50分钟左右,但是后来出现了内存不足的错误(out of memory (requested 1048576 bytes)),并且每次运行都在同样的时间点崩溃。即使将它设置为30秒睡眠,它也会在8分钟后崩...
我正在尝试编写一个使用attoparsec解析器的Conduit。具体来说,给定parseOne :: Parser T,我想构建一个Conduit ByteString m T,它将解析器重复应用于输入并流式传输结果。 attoparsec-conduit提供了sinkParser将Par...
在《Monad.Reader Issue 19》的“Coroutine Pipelines”文章中,作者定义了一个通用的Coroutine类型: newtype Coroutine f m a = Coroutine { resume :: m (Either (f (Coroutine...
我一直在尝试使用conduit-extra的UNIX包,它基本上允许使用UNIX域套接字轻松创建服务器,特别是使用runUnixServer函数。 问题是函数退出后它不会清理套接字文件,这意味着需要手动清理。以下是一个简单的示例,它基本上创建了一个回显服务器。 main :: IO () ...