primitive-0.6.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) Source # 

Methods

(==) :: MutVar s a -> MutVar s a -> Bool #

(/=) :: MutVar s a -> MutVar s a -> Bool #

PrimUnlifted (MutVar s a) Source # 

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