【发布时间】:2014-11-16 21:34:54
【问题描述】:
我正在使用管道库,需要使用 ASCII 编码将 ByteString 流转换为行流(即String)。我知道还有其他库(Pipes.Text 和 Pipes.Prelude)可能让我更轻松地从文本文件中生成行,但是由于其他一些代码,我需要能够从ByteString 的制作人。
更正式地说,我需要将 Producer ByteString IO () 转换为 Producer String IO (),这会产生行。
我确信这对于经验丰富的 Pipes-Programmer 来说一定是单行的,但到目前为止,我还没有成功破解 Pipes-ByteString 中的所有 FreeT 和 Lens-trickery。
非常感谢任何帮助!
斯蒂芬
【问题讨论】:
-
lined :: Monad m => Producer ByteString m r -> Producer String m (Producer ByteString m r)lined = folds mappend mempty T.unpack . view PT.lines . PTE.decodeAscii。如果要删除可能的不可读字节串剩余,请添加Control.Monad.void。
标签: haskell-pipes