{-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Control.Moffy.Samples.Run.TChan where import Control.Monad.Trans import Control.Moffy import Control.Moffy.Run (Handle, HandleSt, St) import Control.Concurrent.STM import qualified Control.Moffy.Run as M interpret :: (Monad m, MonadIO m, Adjustable es es') => Handle m es' -> TChan a -> Sig s es a r -> m r interpret :: forall (m :: * -> *) (es :: Set (*)) (es' :: Set (*)) a s r. (Monad m, MonadIO m, Adjustable es es') => Handle m es' -> TChan a -> Sig s es a r -> m r interpret Handle m es' h TChan a c = forall (m :: * -> *) (es :: Set (*)) (es' :: Set (*)) a s r. (Monad m, Adjustable es es') => Handle m es' -> (a -> m ()) -> Sig s es a r -> m r M.interpret Handle m es' h (forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. STM a -> IO a atomically forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. TChan a -> a -> STM () writeTChan TChan a c) interpretSt :: (Monad m, MonadIO m, Adjustable es es') => HandleSt st m es' -> TChan a -> Sig s es a r -> St st m r interpretSt :: forall (m :: * -> *) (es :: Set (*)) (es' :: Set (*)) st a s r. (Monad m, MonadIO m, Adjustable es es') => HandleSt st m es' -> TChan a -> Sig s es a r -> St st m r interpretSt HandleSt st m es' h TChan a c = forall (m :: * -> *) (es :: Set (*)) (es' :: Set (*)) st a s r. (Monad m, Adjustable es es') => HandleSt st m es' -> (a -> m ()) -> Sig s es a r -> St st m r M.interpretSt HandleSt st m es' h (forall (m :: * -> *) a. MonadIO m => IO a -> m a liftIO forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. STM a -> IO a atomically forall b c a. (b -> c) -> (a -> b) -> a -> c . forall a. TChan a -> a -> STM () writeTChan TChan a c)