假设我有一个源keypads :: Producer IO Keypad
,它会产生敏感数据流,例如一次性键盘。
现在,如果我的资料库公开keypads
,最终用户可能会将keypads
与两个接收器连接,让他们称呼good
和bad
,其中{ {1}}请求一个值并读取它,然后通过bad
将其返回到上游。稍后,leftover
接收器可能使用先前由good
读取的相同键盘。最终用户可能无视这种情况,例如,如果外部库提供bad
和good
。
有没有办法在管道中设计一个只丢弃剩余数据的只读源?
(我已经读过here它无法禁用重复使用的剩菜,但是因为我是管道的新手,可能有不同的设计方式我没见过的建筑。)
答案 0 :(得分:1)
我可以想到两个选择:
用bad
包裹map id Conduit
,以防止遗留物传播。我认为您的代码看起来像是:
keypads $$ (CL.map id =$= bad) >> good
下拉到Pipe
抽象层并在injectLeftovers
上调用bad
以确保所有剩余物都在那里消耗然后丢弃。
我猜测(1)是你想要的方法。