module Data.CBMVar.Reactive where
import Data.CBMVar (CBMVar, installCallbackCBMVar, readCBMVar,
writeCBMVar)
import Data.ReactiveValue (ReactiveFieldRead(..), ReactiveFieldReadWrite(..))
cbmvarReactiveRO :: CBMVar a -> ReactiveFieldRead IO a
cbmvarReactiveRO :: CBMVar a -> ReactiveFieldRead IO a
cbmvarReactiveRO CBMVar a
mvar = FieldGetter IO a -> FieldNotifier IO a -> ReactiveFieldRead IO a
forall (m :: * -> *) a.
FieldGetter m a -> FieldNotifier m a -> ReactiveFieldRead m a
ReactiveFieldRead FieldGetter IO a
getter FieldNotifier IO a
notifier
where
getter :: FieldGetter IO a
getter = CBMVar a -> FieldGetter IO a
forall a. CBMVar a -> IO a
readCBMVar CBMVar a
mvar
notifier :: FieldNotifier IO a
notifier IO ()
n = CBMVar a -> FieldNotifier IO a
forall a. CBMVar a -> FieldNotifier IO a
installCallbackCBMVar CBMVar a
mvar IO ()
n
cbmvarReactiveRW :: CBMVar a -> ReactiveFieldReadWrite IO a
cbmvarReactiveRW :: CBMVar a -> ReactiveFieldReadWrite IO a
cbmvarReactiveRW CBMVar a
mvar = FieldSetter IO a
-> FieldGetter IO a
-> FieldNotifier IO a
-> ReactiveFieldReadWrite IO a
forall (m :: * -> *) a.
FieldSetter m a
-> FieldGetter m a
-> FieldNotifier m a
-> ReactiveFieldReadWrite m a
ReactiveFieldReadWrite FieldSetter IO a
setter FieldGetter IO a
getter FieldNotifier IO a
notifier
where
setter :: FieldSetter IO a
setter = CBMVar a -> FieldSetter IO a
forall a. CBMVar a -> a -> IO ()
writeCBMVar CBMVar a
mvar
getter :: FieldGetter IO a
getter = CBMVar a -> FieldGetter IO a
forall a. CBMVar a -> IO a
readCBMVar CBMVar a
mvar
notifier :: FieldNotifier IO a
notifier IO ()
n = CBMVar a -> FieldNotifier IO a
forall a. CBMVar a -> FieldNotifier IO a
installCallbackCBMVar CBMVar a
mvar IO ()
n