У меня есть функция, которая создает бесконечный список монадических действий (в моем случае HTTP-вызовы), что-то вроде этого:
getStream = foldMap makeHttpCall [1..]
where
makeHttpCall bookId = ...
Я бы хотел использовать эту функцию, какэто:
S.take 10 $ (asyncly getStream)
Две вещи, которые я пытаюсь достичь:
- Я не хочу передавать
10
в getStream
функцию - Я хочу, чтобы 10 HTTP-вызовов выполнялись одновременно
Приведенный выше код выполняет более 10 HTTP-вызовов, и все, что возвращается первым, передается в потоке.Я исследовал другие комбинаторы, такие как wAsyncly
и parallely
, но поведение остается прежним.
Есть ли способ добиться этого в Streamly ?
В приведенных выше примерах кода используется следующий импорт:
import Streamly
import qualified Streamly.Prelude as S