我可以创建一个消耗所有生产者输出的管道并将其作为列表传递吗?

 日全食x_354 发布于 2023-02-06 12:16

我正在尝试使用Pipes库来建模工作流程.在那个工作流程中,我想积累生产者的所有输出,然后传递它.在这种情况下,我知道我的制作人产生了有限的输出量.

所以,如果我有:

prod :: Producer a m ()
accum :: Pipe a [a] m r
groupConsumer :: Consumer [a] m r

我如何建模accum以便我能做到:

runEffect $ prod >-> accum >-> groupConsumer

谢谢!

1 个回答
  • 您可以使用Pipes.Prelude.toListM收集Producer列表:

    Pipes.Prelude.toListM :: (Monad m) => Producer a m () -> m [a]
    
    Pipes.Prelude.toListM prod :: (Monad m) => m [a]
    

    然后你只需将该列表提供给您groupConsumer:

    runEffect $ (lift (Pipes.Prelude.toListM prod) >>= yield) >-> groupConsumer
    

    2023-02-06 12:18 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有