-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | TMVars, TVars and TChans with distinguished input and output side -- @package stm-split @version 0.0.0.1 module Control.Concurrent.STM.Split.Class data In data Out class C chan newIO :: C chan => IO (chan In a, chan Out a) new :: C chan => STM (chan In a, chan Out a) read :: C chan => chan Out a -> STM a write :: C chan => chan In a -> a -> STM () module Control.Concurrent.STM.Split.MVar data T dir a type In = T In type Out = T Out newEmptyIO :: IO (In a, Out a) newEmpty :: STM (In a, Out a) newIO :: a -> IO (In a, Out a) new :: a -> STM (In a, Out a) take :: Out a -> STM a put :: In a -> a -> STM () instance C T module Control.Concurrent.STM.Split.Chan data T dir a type In = T In type Out = T Out newIO :: IO (In a, Out a) new :: STM (In a, Out a) read :: Out a -> STM a write :: In a -> a -> STM () writeIO :: In a -> a -> IO () instance C T