From 29f658db3dec8c14c15ade865bd0bb30339d6b4c Mon Sep 17 00:00:00 2001 From: Jens Nolte <git@queezle.net> Date: Wed, 7 Oct 2020 00:20:03 +0200 Subject: [PATCH] Add Observable instance for Observables wrapped in IO --- src/lib/Qd/Observable.hs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/lib/Qd/Observable.hs b/src/lib/Qd/Observable.hs index 947ea32..ccdc225 100644 --- a/src/lib/Qd/Observable.hs +++ b/src/lib/Qd/Observable.hs @@ -54,6 +54,14 @@ subscribe' observable callback = mfix $ \subscription -> subscribe observable (c type ObservableCallback v = ObservableMessage v -> IO () +instance Observable v o => Observable v (IO o) where + getValue :: IO o -> IO (ObservableState v) + getValue getObservable = getValue =<< getObservable + subscribe :: IO o -> (ObservableMessage v -> IO ()) -> IO SubscriptionHandle + subscribe getObservable callback = do + observable <- getObservable + subscribe observable callback + -- | Existential quantification wrapper for the Observable type class. data SomeObservable v = forall o. Observable v o => SomeObservable o -- GitLab