churros-0.1.2.0: src/Control/Churro/Transport/Unagi.hs
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE BlockArguments #-}
-- | Chan Transport Instance.
module Control.Churro.Transport.Unagi where
import Control.Churro.Types
import Control.Churro.Prelude
import Control.Concurrent.Chan.Unagi
import Data.Void
data Unagi a
instance Transport Unagi where
data In Unagi a = ChanIn (InChan a)
data Out Unagi a = ChanOut (OutChan a)
yank (ChanOut c) = readChan c
yeet (ChanIn c) = writeChan c
flex = do
(i, o) <- newChan
return (ChanIn i, ChanOut o)
type ChurroUnagi = Churro Unagi
-- | Convenience function for running a Churro with an Unagi Transport.
--
runWaitUnagi :: ChurroUnagi Void Void -> IO ()
runWaitUnagi = runWait
-- | Convenience function for running a Churro into a List with an Unagi Transport.
--
runWaitListUnagi :: ChurroUnagi Void o -> IO [o]
runWaitListUnagi = runWaitList