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