mutable-containers-0.1.0.0: Abstactions and concrete implementations of mutable containers

Safe HaskellNone
LanguageHaskell2010

Data.Mutable.Class

Description

Various typeclasses for mutable containers.

Documentation

class MutableContainer c => MutableRef c where Source

Associated Types

type RefElement c Source

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState c) => RefElement c -> m c Source

readRef :: (PrimMonad m, PrimState m ~ MCState c) => c -> m (RefElement c) Source

writeRef :: (PrimMonad m, PrimState m ~ MCState c) => c -> RefElement c -> m () Source

modifyRef :: (PrimMonad m, PrimState m ~ MCState c) => c -> (RefElement c -> RefElement c) -> m () Source

modifyRef' :: (PrimMonad m, PrimState m ~ MCState c) => c -> (RefElement c -> RefElement c) -> m () Source

Instances

MutableRef (IORef a) 
MutableRef (STRef s a) 
MutableRef (MutVar s a) 
Unbox a => MutableRef (URef s a) 
Storable a => MutableRef (SRef s a) 

class MutableRef c => MutableAtomicRef c where Source

Methods

atomicModifyRef :: (PrimMonad m, PrimState m ~ MCState c) => c -> (RefElement c -> (RefElement c, a)) -> m a Source

atomicModifyRef' :: (PrimMonad m, PrimState m ~ MCState c) => c -> (RefElement c -> (RefElement c, a)) -> m a Source

Instances

class MutableContainer c => MutableCollection c where Source

Associated Types

type CollElement c Source

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState c) => m c Source

Instances

Monoid w => MutableCollection (IORef w) 
Monoid w => MutableCollection (STRef s w) 
Monoid w => MutableCollection (MutVar s w) 
MutableCollection (DList s a) 
MVector v a => MutableCollection (Deque v s a) 

class MutableCollection c => MutablePopFront c where Source

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState c) => c -> m (Maybe (CollElement c)) Source

Instances

IsSequence a => MutablePopFront (IORef a) 
IsSequence a => MutablePopFront (STRef s a) 
IsSequence a => MutablePopFront (MutVar s a) 
MutablePopFront (DList s a) 
MVector v a => MutablePopFront (Deque v s a) 

popFrontRef :: (PrimMonad m, PrimState m ~ MCState c, MutableRef c, CollElement c ~ Element (RefElement c), IsSequence (RefElement c)) => c -> m (Maybe (CollElement c)) Source

class MutableCollection c => MutablePushFront c where Source

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState c) => c -> CollElement c -> m () Source

Instances

IsSequence a => MutablePushFront (IORef a) 
IsSequence a => MutablePushFront (STRef s a) 
IsSequence a => MutablePushFront (MutVar s a) 
MutablePushFront (DList s a) 
MVector v a => MutablePushFront (Deque v s a) 

pushFrontRef :: (PrimMonad m, PrimState m ~ MCState c, MutableRef c, CollElement c ~ Element (RefElement c), IsSequence (RefElement c)) => c -> CollElement c -> m () Source

class MutableCollection c => MutablePopBack c where Source

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState c) => c -> m (Maybe (CollElement c)) Source

Instances

IsSequence a => MutablePopBack (IORef a) 
IsSequence a => MutablePopBack (STRef s a) 
IsSequence a => MutablePopBack (MutVar s a) 
MutablePopBack (DList s a) 
MVector v a => MutablePopBack (Deque v s a) 

popBackRef :: (PrimMonad m, PrimState m ~ MCState c, MutableRef c, CollElement c ~ Element (RefElement c), IsSequence (RefElement c)) => c -> m (Maybe (CollElement c)) Source

class MutableCollection c => MutablePushBack c where Source

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState c) => c -> CollElement c -> m () Source

Instances

IsSequence a => MutablePushBack (IORef a) 
IsSequence a => MutablePushBack (STRef s a) 
IsSequence a => MutablePushBack (MutVar s a) 
MutablePushBack (DList s a) 
MVector v a => MutablePushBack (Deque v s a) 

pushBackRef :: (PrimMonad m, PrimState m ~ MCState c, MutableRef c, CollElement c ~ Element (RefElement c), IsSequence (RefElement c)) => c -> CollElement c -> m () Source

asSTRef :: STRef s a -> STRef s a Source

asMutVar :: MutVar s a -> MutVar s a Source