module Hans.Channel where
#ifdef BOUNDED_CHANNELS
import Control.Concurrent.BoundedChan as C
type Channel a = BoundedChan a
newChannel :: IO (Channel a)
newChannel = newBoundedChan 20
receive :: Channel a -> IO a
receive c = readChan c
send :: Channel a -> a -> IO ()
send c a = writeChan c $! a
#else
import Control.Concurrent.Chan as C
type Channel a = Chan a
newChannel :: IO (Channel a)
newChannel = newChan
receive :: Channel a -> IO a
receive = readChan
send :: Channel a -> a -> IO ()
send c a = writeChan c $! a
#endif