【发布时间】:2013-03-06 21:27:08
【问题描述】:
我试图了解管道概念的不同实现之间的差异。 conduit 和 pipes 之间的区别之一是它们如何将管道融合在一起。 导管有
(>+>) :: Monad m
=> Pipe l a b r0 m r1 -> Pipe Void b c r1 m r2 -> Pipe l a c r0 m r2
而管道有
(>->) :: (Monad m, Proxy p)
=> (b' -> p a' a b' b m r) -> (c' -> p b' b c' c m r) -> c' -> p a' a c' c m r
如果我理解正确的话,使用 pipes,当两个管道中的任何一个停止时,它的结果被返回,另一个被停止。使用 conduit,如果左管道完成,其结果将被发送到下游到右管道。
我想知道,conduit 的方法有什么好处?我希望看到一些使用 conduit 和 >+> 很容易实现的示例(最好是真实世界),但使用 pipes 和>->.
【问题讨论】:
标签: haskell conduit haskell-pipes