diff --git a/src/Quasar/Observable.hs b/src/Quasar/Observable.hs index 4f50a66e58cbdabba4c5cbc9a6a9844d1360e9a0..2b35a6935e9c0f8cbb787876a7b5460df10ba312 100644 --- a/src/Quasar/Observable.hs +++ b/src/Quasar/Observable.hs @@ -211,19 +211,19 @@ instance Applicative Observable where -- -newtype ConstObservable v = ConstObservable v -instance IsRetrievable v (ConstObservable v) where +newtype ConstObservable r = ConstObservable r +instance IsRetrievable r (ConstObservable r) where retrieve (ConstObservable x) = pure x -instance IsObservable v (ConstObservable v) where +instance IsObservable r (ConstObservable r) where observe (ConstObservable x) callback = ensureQuasarSTM $ callback $ ObservableValue x pingObservable _ = pure () -data MappedObservable b = forall a o. IsObservable a o => MappedObservable (a -> b) o -instance IsRetrievable v (MappedObservable v) where +data MappedObservable r = forall r2 a. IsObservable r2 a => MappedObservable (r2 -> r) a +instance IsRetrievable r (MappedObservable r) where retrieve (MappedObservable f observable) = f <$> retrieve observable -instance IsObservable v (MappedObservable v) where +instance IsObservable r (MappedObservable r) where observe (MappedObservable fn observable) callback = observe observable (callback . fmap fn) mapObservable f1 (MappedObservable f2 upstream) = Observable $ MappedObservable (f1 . f2) upstream pingObservable (MappedObservable _ observable) = pingObservable observable