管道:只读源可能吗?

时间:2014-09-02 04:32:38

标签: haskell conduit

假设我有一个源keypads :: Producer IO Keypad,它会产生敏感数据流,例如一次性键盘。

现在,如果我的资料库公开keypads,最终用户可能会将keypads与两个接收器连接,让他们称呼goodbad,其中{ {1}}请求一个值并读取它,然后通过bad将其返回到上游。稍后,leftover接收器可能使用先前由good读取的相同键盘。最终用户可能无视这种情况,例如,如果外部库提供badgood

有没有办法在管道中设计一个只丢弃剩余数据的只读源?

(我已经读过here它无法禁用重复使用的剩菜,但是因为我是管道的新手,可能有不同的设计方式我没见过的建筑。)

1 个答案:

答案 0 :(得分:1)

我可以想到两个选择:

  1. bad包裹map id Conduit,以防止遗留物传播。我认为您的代码看起来像是:

    keypads $$ (CL.map id =$= bad) >> good
    
  2. 下拉到Pipe抽象层并在injectLeftovers上调用bad以确保所有剩余物都在那里消耗然后丢弃。

  3. 我猜测(1)是你想要的方法。