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
我对 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