From 81710d78aedafd22ebcb83996e4376c9d117cbe0 Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Sun, 13 Mar 2022 00:55:22 +0100 Subject: [PATCH] Implement parallel retrieve for liftA2 on Observable Co-authored-by: Jan Beinke <git@janbeinke.com> --- src/Quasar/Observable.hs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Quasar/Observable.hs b/src/Quasar/Observable.hs index c127fef..f7fa45e 100644 --- a/src/Quasar/Observable.hs +++ b/src/Quasar/Observable.hs @@ -229,8 +229,11 @@ instance IsObservable v (MappedObservable v) where data LiftA2Observable r = forall r0 r1. LiftA2Observable (r0 -> r1 -> r) (Observable r0) (Observable r1) instance IsRetrievable r (LiftA2Observable r) where - retrieve (LiftA2Observable fn fx fy) = - liftA2 fn (retrieve fx) (retrieve fy) + retrieve (LiftA2Observable fn fx fy) = do + -- LATER: keep backpressure for parallel network requests + x <- async $ retrieve fx + y <- async $ retrieve fy + liftIO $ liftA2 fn (await x) (await y) instance IsObservable r (LiftA2Observable r) where observe (LiftA2Observable fn fx fy) callback = do -- GitLab