Conduit 的 "await" 收到 Maybe。为什么?怎么办?

Conduit's "await" receives Maybe. Why? And how to?

我对 Conduit 的 await :: Monad m => ConduitM i o m (Maybe i) 感兴趣。

任何人都可以解释为什么会发生这种情况,特别是,我如何 yield 这样一个可选值或者我如何编写一个 producer/source 可以做到这一点?

一旦上游资源耗尽,await 管道将开始 returning Nothing 作为结果并且不会 return 除了 Nothing今后。它指示上游管道的终止,因此您可以完成一些完成工作。

另一端yieldOr表示下游汇/管道的终止。简单的 yield 实现为 \o -> yieldOr o (return ()),您可以在其中将 return () 替换为最终代码。

如果您在此管道中没有完成工作要做,那么您可以改用 awaitForever

你可能有的问题都在conduit包作者写的教程里总结出来了,推荐先看一下:Conduit Overview