Учитывая функцию A => IO[B]
(она же Kleisli[IO, A, B]
), которая должна вызываться несколько раз и имеет побочные эффекты, такие как обновление БД, как делегировать такие множественные вызовы в поток (я полагаю * 1003)*) (fs2, моникс наблюдаемый / итерант)?Причина этого в том, чтобы иметь возможность накапливать состояние, групповые вызовы вместе в течение определенного промежутка времени и т. Д.
Более конкретно, серверу http4s требуется Request => IO[Response]
, поэтому я ищу, как работать с потоками (для вышеупомянутоговыгоды), но в конечном итоге предоставляют такую функцию для http4s.
Я подозреваю, что для этого понадобится некоторый идентификатор корреляции за кулисами, и я согласен с этим, меня больше интересует, как сделать это безопасно и правильно изПерспектива FP.
В конечном счете, ожидаемая подпись, вероятно, выглядит примерно так:
Pipe[IO, A, B] => (A => IO[B])
, такая, что вызовы Клейсли передаются по каналу.
В качестве запоздалой мыслиБудет ли вообще возможно противодавление?