|
Packit |
1d883e |
{-# LANGUAGE CPP #-}
|
|
Packit |
1d883e |
{-# LANGUAGE NoImplicitPrelude #-}
|
|
Packit |
1d883e |
{-# LANGUAGE FlexibleContexts #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
#if __GLASGOW_HASKELL__ >= 702
|
|
Packit |
1d883e |
{-# LANGUAGE Safe #-}
|
|
Packit |
1d883e |
#endif
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
{- |
|
|
Packit |
1d883e |
Module : Control.Concurrent.Chan.Lifted
|
|
Packit |
1d883e |
Copyright : Liyang HU, Bas van Dijk
|
|
Packit |
1d883e |
License : BSD-style
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
Maintainer : Bas van Dijk <v.dijk.bas@gmail.com>
|
|
Packit |
1d883e |
Stability : experimental
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
This is a wrapped version of "Control.Concurrent.Chan" with types
|
|
Packit |
1d883e |
generalised from 'IO' to all monads in 'MonadBase'.
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
'Chan.unGetChan' and 'Chan.isEmptyChan' are deprecated in @base@, therefore
|
|
Packit |
1d883e |
they are not included here. Use 'Control.Concurrent.STM.TVar' instead.
|
|
Packit |
1d883e |
-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
module Control.Concurrent.Chan.Lifted
|
|
Packit |
1d883e |
( Chan
|
|
Packit |
1d883e |
, newChan
|
|
Packit |
1d883e |
, writeChan
|
|
Packit |
1d883e |
, readChan
|
|
Packit |
1d883e |
, dupChan
|
|
Packit |
1d883e |
, getChanContents
|
|
Packit |
1d883e |
, writeList2Chan
|
|
Packit |
1d883e |
) where
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
--------------------------------------------------------------------------------
|
|
Packit |
1d883e |
-- Imports
|
|
Packit |
1d883e |
--------------------------------------------------------------------------------
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- from base:
|
|
Packit |
1d883e |
import Control.Concurrent.Chan ( Chan )
|
|
Packit |
1d883e |
import qualified Control.Concurrent.Chan as Chan
|
|
Packit |
1d883e |
import System.IO ( IO )
|
|
Packit |
1d883e |
import Prelude ( (.) )
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- from transformers-base:
|
|
Packit |
1d883e |
import Control.Monad.Base ( MonadBase, liftBase )
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
#include "inlinable.h"
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
--------------------------------------------------------------------------------
|
|
Packit |
1d883e |
-- * Chans
|
|
Packit |
1d883e |
--------------------------------------------------------------------------------
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'Chan.newChan'.
|
|
Packit |
1d883e |
newChan :: MonadBase IO m => m (Chan a)
|
|
Packit |
1d883e |
newChan = liftBase Chan.newChan
|
|
Packit |
1d883e |
{-# INLINABLE newChan #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'Chan.writeChan'.
|
|
Packit |
1d883e |
writeChan :: MonadBase IO m => Chan a -> a -> m ()
|
|
Packit |
1d883e |
writeChan chan = liftBase . Chan.writeChan chan
|
|
Packit |
1d883e |
{-# INLINABLE writeChan #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'Chan.readChan'.
|
|
Packit |
1d883e |
readChan :: MonadBase IO m => Chan a -> m a
|
|
Packit |
1d883e |
readChan = liftBase . Chan.readChan
|
|
Packit |
1d883e |
{-# INLINABLE readChan #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'Chan.dupChan'.
|
|
Packit |
1d883e |
dupChan :: MonadBase IO m => Chan a -> m (Chan a)
|
|
Packit |
1d883e |
dupChan = liftBase . Chan.dupChan
|
|
Packit |
1d883e |
{-# INLINABLE dupChan #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'Chan.getChanContents'.
|
|
Packit |
1d883e |
getChanContents :: MonadBase IO m => Chan a -> m [a]
|
|
Packit |
1d883e |
getChanContents = liftBase . Chan.getChanContents
|
|
Packit |
1d883e |
{-# INLINABLE getChanContents #-}
|
|
Packit |
1d883e |
|
|
Packit |
1d883e |
-- | Generalized version of 'Chan.writeList2Chan'.
|
|
Packit |
1d883e |
writeList2Chan :: MonadBase IO m => Chan a -> [a] -> m ()
|
|
Packit |
1d883e |
writeList2Chan chan = liftBase . Chan.writeList2Chan chan
|
|
Packit |
1d883e |
{-# INLINABLE writeList2Chan #-}
|