我正在使用Conduit以类似流的方式解析一些数据.在流中的某个点上,我需要每12个元素.有没有方便的方法来做到这一点?
我目前正在等待12个元素只是为了返回第一个元素:
get12th :: Monad m => Conduit Int m Int
get12th = loop
where
loop = do
v1 <- await
_ <- await
_ <- await
_ <- await
_ <- await
_ <- await
_ <- await
_ <- await
_ <- await
_ <- await
_ <- await
_ <- await
case v1 of
Nothing -> return ()
Just x -> do
yield x >> loop
Run Code Online (Sandbox Code Playgroud)
它确实有效,但我想知道这是否是最好的方法.
你可以replicateM_用来摆脱那些重复的await行.
v1 <- await
replicateM_ 11 await
case v1 of
...
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
109 次 |
| 最近记录: |