使用Streamly消耗无限的monadic流

时间:2018-05-27 12:15:59

标签: haskell streaming streamly

我有一个函数可以产生无限的monadic动作列表(在我的情况下是HTTP调用),类似这样:

getStream = foldMap makeHttpCall [1..]
  where
    makeHttpCall bookId = ...

我希望能够像这样使用这个功能:

S.take 10 $ (asyncly getStream)

我正在努力实现的两件事:

  • 我不想将10传递给getStream函数
  • 我希望同时进行10次HTTP调用

上面的代码进行了10次以上的HTTP调用,并且首先返回的内容在流中传递。我已经探索了其他组合器,如wAsynclyparallely,但行为保持不变。

有没有办法在Streamly中实现这一目标?

上面的代码示例使用以下导入:

import Streamly
import qualified Streamly.Prelude as S

1 个答案:

答案 0 :(得分:0)

您的代码应在预期从streamly-0.4.0开始运行。也就是说,它将最多生成10个并发请求。