primitive-0.5.4.0: Primitive memory-related operations

Copyright(c) Justin Bonnar 2011, Roman Leshchinskiy 2011-2012
LicenseBSD-style
MaintainerRoman Leshchinskiy <rl@cse.unsw.edu.au>
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Data.Primitive.MutVar

Description

Primitive boxed mutable variables

Synopsis

Documentation

data MutVar s a Source

A MutVar behaves like a single-element mutable array associated with a primitive state token.

Constructors

MutVar (MutVar# s a) 

Instances

Eq (MutVar s a) 
Typeable (* -> * -> *) MutVar 

newMutVar :: PrimMonad m => a -> m (MutVar (PrimState m) a) Source

Create a new MutVar with the specified initial value

readMutVar :: PrimMonad m => MutVar (PrimState m) a -> m a Source

Read the value of a MutVar

writeMutVar :: PrimMonad m => MutVar (PrimState m) a -> a -> m () Source

Write a new value into a MutVar

atomicModifyMutVar :: PrimMonad m => MutVar (PrimState m) a -> (a -> (a, b)) -> m b Source

Atomically mutate the contents of a MutVar

atomicModifyMutVar' :: PrimMonad m => MutVar (PrimState m) a -> (a -> (a, b)) -> m b Source

Strict version of atomicModifyMutVar. This forces both the value stored in the MutVar as well as the value returned.

modifyMutVar :: PrimMonad m => MutVar (PrimState m) a -> (a -> a) -> m () Source

Mutate the contents of a MutVar

modifyMutVar' :: PrimMonad m => MutVar (PrimState m) a -> (a -> a) -> m () Source

Strict version of modifyMutVar