Моделирование нескольких вызовов функций с помощью потока (безопасным способом FP) - PullRequest
0 голосов
/ 25 февраля 2019

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

Более конкретно, серверу http4s требуется Request => IO[Response], поэтому я ищу, как работать с потоками (для вышеупомянутоговыгоды), но в конечном итоге предоставляют такую ​​функцию для http4s.

Я подозреваю, что для этого понадобится некоторый идентификатор корреляции за кулисами, и я согласен с этим, меня больше интересует, как сделать это безопасно и правильно изПерспектива FP.

В конечном счете, ожидаемая подпись, вероятно, выглядит примерно так:

Pipe[IO, A, B] => (A => IO[B]), такая, что вызовы Клейсли передаются по каналу.

В качестве запоздалой мыслиБудет ли вообще возможно противодавление?

...