haskell - 管道的剩菜有什么好处?

标签 haskell conduit haskell-pipes

我试图了解导管和管道之间的区别。与管道不同,导管具有剩菜的概念。剩菜有什么用?我想看看一些剩菜必不可少的例子。

而且由于管道没有剩菜的概念,有没有办法用它们实现类似的行为?

最佳答案

Gabriella 关于剩余部分总是解析的一部分的观点很有趣。我不确定我是否会同意,但这可能仅取决于解析的定义。
有一大类用例需要剩余部分。解析当然是一个:任何时候解析需要某种前瞻,你就需要剩余部分。 Markdown 包的 getIndented 就是一个例子。函数,它以一定的缩进级别隔离所有即将出现的行,将其余行留待以后处理。
但是,在管道本身中有一组更平凡的例子。每当您处理打包数据(如 ByteString 或 Text)时,您都需要读取一个 block ,以某种方式对其进行分析,使用剩余的东西来推回额外的内容,然后对原始内容做一些事情。也许最简单的例子是 dropWhile .
事实上,我认为 leftover 是流式库的核心、基本功能,以至于管道的新 1.0 接口(interface)甚至没有向用户公开禁用 leftovers 的选项。我知道很少有实际用例不需要以某种方式使用它。

关于haskell - 管道的剩菜有什么好处?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15258587/

相关文章:

haskell - 为 Monad 脱糖 do-notation

haskell - 在导管顶部设计一个库

haskell - 带有剩余物的导管水槽

networking - Http-Conduit 频繁连接失败

haskell - 使用 postgresql-simple 创建流式管道源

haskell - 管道.并发: Sent signal is delivered one click later than expected

haskell - 为什么 Conduit 和 Pipe 不能有 Arrow 实例?

haskell - 如何使用管道检测输入结束

haskell - 用组织态实现加泰罗尼亚数的显着开销

function - Haskell 中 where 表示法的好处