| Copyright | © 2017 All rights reserved. |
|---|---|
| License | GPL-3 |
| Maintainer | Evan Cofsky <evan@theunixman.com> |
| Stability | experimental |
| Portability | POSIX |
| Safe Haskell | None |
| Language | Haskell2010 |
STM.Base
Description
- module IO.Base
- module Control.Concurrent.STM.TVar
- module Control.Concurrent.STM.TMVar
- module Control.Concurrent.STM.TBChan
- data IO a :: * -> *
- data STM a :: * -> *
- atomically :: MonadBase IO m => STM α -> m α
- newTVarIO :: MonadBase IO m => a -> m (TVar a)
- newTMVarIO :: MonadBase IO m => a -> m (TMVar a)
- newEmptyTMVarIO :: MonadBase IO m => m (TMVar a)
- newTBChanIO :: (MonadBase IO m, Integral l) => l -> m (TBChan a)
- newTBChan :: Integral l => l -> STM (TBChan a)
Documentation
module IO.Base
module Control.Concurrent.STM.TVar
module Control.Concurrent.STM.TMVar
A value of type is a computation which, when performed,
does some I/O before returning a value of type IO aa.
There is really only one way to "perform" an I/O action: bind it to
Main.main in your program. When your program is run, the I/O will
be performed. It isn't possible to perform I/O from an arbitrary
function, unless that function is itself in the IO monad and called
at some point, directly or indirectly, from Main.main.
IO is a monad, so IO actions can be combined using either the do-notation
or the >> and >>= operations from the Monad class.
Instances
| Monad IO | |
| Functor IO | |
| MonadFix IO | |
| MonadFail IO | |
| Applicative IO | |
| Alternative IO | |
| MonadPlus IO | |
| MonadIO IO | |
| MonadThrow IO | |
| MonadCatch IO | |
| MonadMask IO | |
| PrimMonad IO | |
| PrimBase IO | |
| Apply IO | |
| Bind IO | |
| Quasi IO | |
| MonadBaseControl IO IO | |
| MonadBase IO IO | |
| MArray IOArray e IO | |
| Monoid a => Monoid (IO a) | |
| (~) * a () => PrintfType (IO a) | |
| (~) * a () => HPrintfType (IO a) | |
| type PrimState IO | |
| type StM IO a | |
A monad supporting atomic memory transactions.
Instances
atomically :: MonadBase IO m => STM α -> m α Source #
atomically lifted to MonadBase IO.
newTMVarIO :: MonadBase IO m => a -> m (TMVar a) Source #
newTMVarIO at the top level, lifted.
newEmptyTMVarIO :: MonadBase IO m => m (TMVar a) Source #
newTMVarIO at the top level, lifted.
newTBChanIO :: (MonadBase IO m, Integral l) => l -> m (TBChan a) Source #
newTBChanIO at the top level, lifted, only with a saturated length.