mutable-containers-0.3.4.1: Abstactions and concrete implementations of mutable containers
Safe HaskellSafe-Inferred
LanguageHaskell2010

Data.Mutable

Description

Classes and concrete implementations for mutable data structures.

For more information on the design of this library, see the README file, also available at http://www.stackage.org/package/mutable-containers.

Synopsis

Data types

Single-cell mutable references

data PRef s a Source #

A primitive ByteArray reference, supporting any monad.

Since 0.2.0

Instances

Instances details
MutableContainer (PRef s a) Source # 
Instance details

Defined in Data.Mutable.PRef

Associated Types

type MCState (PRef s a) Source #

Prim a => MutableRef (PRef s a) Source # 
Instance details

Defined in Data.Mutable.PRef

Associated Types

type RefElement (PRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => RefElement (PRef s a) -> m (PRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> m (RefElement (PRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> RefElement (PRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> (RefElement (PRef s a) -> RefElement (PRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> (RefElement (PRef s a) -> RefElement (PRef s a)) -> m () Source #

type MCState (PRef s a) Source # 
Instance details

Defined in Data.Mutable.PRef

type MCState (PRef s a) = s
type RefElement (PRef s a) Source # 
Instance details

Defined in Data.Mutable.PRef

type RefElement (PRef s a) = a

type IOPRef = PRef (PrimState IO) Source #

A primitive ByteArray IO reference.

asPRef :: PRef s a -> PRef s a Source #

Since 0.2.0

data URef s a Source #

An unboxed vector reference, supporting any monad.

Since 0.2.0

Instances

Instances details
MutableContainer (URef s a) Source # 
Instance details

Defined in Data.Mutable.URef

Associated Types

type MCState (URef s a) Source #

Unbox a => MutableRef (URef s a) Source # 
Instance details

Defined in Data.Mutable.URef

Associated Types

type RefElement (URef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => RefElement (URef s a) -> m (URef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> m (RefElement (URef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> RefElement (URef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> (RefElement (URef s a) -> RefElement (URef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> (RefElement (URef s a) -> RefElement (URef s a)) -> m () Source #

type MCState (URef s a) Source # 
Instance details

Defined in Data.Mutable.URef

type MCState (URef s a) = s
type RefElement (URef s a) Source # 
Instance details

Defined in Data.Mutable.URef

type RefElement (URef s a) = a

type IOURef = URef (PrimState IO) Source #

An unboxed IO vector reference.

asURef :: URef s a -> URef s a Source #

Since 0.2.0

data SRef s a Source #

A storable vector reference, supporting any monad.

Since 0.2.0

Instances

Instances details
MutableContainer (SRef s a) Source # 
Instance details

Defined in Data.Mutable.SRef

Associated Types

type MCState (SRef s a) Source #

Storable a => MutableRef (SRef s a) Source # 
Instance details

Defined in Data.Mutable.SRef

Associated Types

type RefElement (SRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => RefElement (SRef s a) -> m (SRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> m (RefElement (SRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> RefElement (SRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> (RefElement (SRef s a) -> RefElement (SRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> (RefElement (SRef s a) -> RefElement (SRef s a)) -> m () Source #

type MCState (SRef s a) Source # 
Instance details

Defined in Data.Mutable.SRef

type MCState (SRef s a) = s
type RefElement (SRef s a) Source # 
Instance details

Defined in Data.Mutable.SRef

type RefElement (SRef s a) = a

type IOSRef = SRef (PrimState IO) Source #

A storable IO vector reference.

asSRef :: SRef s a -> SRef s a Source #

Since 0.2.0

data BRef s a Source #

A boxed vector reference, supporting any monad.

Since 0.2.0

Instances

Instances details
Monoid w => MutableCollection (BRef s w) Source # 
Instance details

Defined in Data.Mutable.BRef

Associated Types

type CollElement (BRef s w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (BRef s w)) => m (BRef s w) Source #

MutableContainer (BRef s a) Source # 
Instance details

Defined in Data.Mutable.BRef

Associated Types

type MCState (BRef s a) Source #

IsSequence seq => MutablePopBack (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> m (Maybe (CollElement (BRef s seq))) Source #

IsSequence seq => MutablePopFront (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> m (Maybe (CollElement (BRef s seq))) Source #

IsSequence seq => MutablePushBack (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> CollElement (BRef s seq) -> m () Source #

IsSequence seq => MutablePushFront (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> CollElement (BRef s seq) -> m () Source #

MutableRef (BRef s a) Source # 
Instance details

Defined in Data.Mutable.BRef

Associated Types

type RefElement (BRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => RefElement (BRef s a) -> m (BRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> m (RefElement (BRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> RefElement (BRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> (RefElement (BRef s a) -> RefElement (BRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> (RefElement (BRef s a) -> RefElement (BRef s a)) -> m () Source #

type CollElement (BRef s w) Source # 
Instance details

Defined in Data.Mutable.BRef

type CollElement (BRef s w) = Element w
type MCState (BRef s a) Source # 
Instance details

Defined in Data.Mutable.BRef

type MCState (BRef s a) = s
type RefElement (BRef s a) Source # 
Instance details

Defined in Data.Mutable.BRef

type RefElement (BRef s a) = a

type IOBRef = BRef (PrimState IO) Source #

A boxed IO vector reference.

asBRef :: BRef s a -> BRef s a Source #

Since 0.2.0

Standard re-exports

data IORef a #

A mutable variable in the IO monad

Instances

Instances details
Eq (IORef a)

Pointer equality.

Since: base-4.0.0.0

Instance details

Defined in GHC.IORef

Methods

(==) :: IORef a -> IORef a -> Bool #

(/=) :: IORef a -> IORef a -> Bool #

MutableAtomicRef (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

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

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

Monoid w => MutableCollection (IORef w) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type CollElement (IORef w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (IORef w)) => m (IORef w) Source #

MutableContainer (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type MCState (IORef a) Source #

IsSequence a => MutablePopBack (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

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

IsSequence a => MutablePopFront (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

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

IsSequence a => MutablePushBack (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> CollElement (IORef a) -> m () Source #

IsSequence a => MutablePushFront (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> CollElement (IORef a) -> m () Source #

MutableRef (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type RefElement (IORef a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => RefElement (IORef a) -> m (IORef a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> m (RefElement (IORef a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> RefElement (IORef a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> (RefElement (IORef a) -> RefElement (IORef a)) -> m () Source #

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

type CollElement (IORef w) Source # 
Instance details

Defined in Data.Mutable.Class

type MCState (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

type RefElement (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

type RefElement (IORef a) = a

asIORef :: IORef a -> IORef a Source #

Since 0.2.0

data STRef s a #

a value of type STRef s a is a mutable variable in state thread s, containing a value of type a

>>> :{
runST (do
    ref <- newSTRef "hello"
    x <- readSTRef ref
    writeSTRef ref (x ++ "world")
    readSTRef ref )
:}
"helloworld"

Instances

Instances details
Eq (STRef s a)

Pointer equality.

Since: base-2.1

Instance details

Defined in GHC.STRef

Methods

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

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

Monoid w => MutableCollection (STRef s w) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type CollElement (STRef s w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (STRef s w)) => m (STRef s w) Source #

MutableContainer (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type MCState (STRef s a) Source #

IsSequence a => MutablePopBack (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> m (Maybe (CollElement (STRef s a))) Source #

IsSequence a => MutablePopFront (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> m (Maybe (CollElement (STRef s a))) Source #

IsSequence a => MutablePushBack (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> CollElement (STRef s a) -> m () Source #

IsSequence a => MutablePushFront (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> CollElement (STRef s a) -> m () Source #

MutableRef (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type RefElement (STRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => RefElement (STRef s a) -> m (STRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> m (RefElement (STRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> RefElement (STRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> (RefElement (STRef s a) -> RefElement (STRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> (RefElement (STRef s a) -> RefElement (STRef s a)) -> m () Source #

type CollElement (STRef s w) Source # 
Instance details

Defined in Data.Mutable.Class

type CollElement (STRef s w) = Element w
type MCState (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

type MCState (STRef s a) = s
type RefElement (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

type RefElement (STRef s a) = a

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

Since 0.2.0

data MutVar s a #

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

Instances

Instances details
Eq (MutVar s a) 
Instance details

Defined in Data.Primitive.MutVar

Methods

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

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

MutableAtomicRef (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

atomicModifyRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> (RefElement (MutVar s a), a0)) -> m a0 Source #

atomicModifyRef' :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> (RefElement (MutVar s a), a0)) -> m a0 Source #

Monoid w => MutableCollection (MutVar s w) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type CollElement (MutVar s w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (MutVar s w)) => m (MutVar s w) Source #

MutableContainer (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type MCState (MutVar s a) Source #

IsSequence a => MutablePopBack (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> m (Maybe (CollElement (MutVar s a))) Source #

IsSequence a => MutablePopFront (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> m (Maybe (CollElement (MutVar s a))) Source #

IsSequence a => MutablePushBack (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> CollElement (MutVar s a) -> m () Source #

IsSequence a => MutablePushFront (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> CollElement (MutVar s a) -> m () Source #

MutableRef (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type RefElement (MutVar s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => RefElement (MutVar s a) -> m (MutVar s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> m (RefElement (MutVar s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> RefElement (MutVar s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> RefElement (MutVar s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> RefElement (MutVar s a)) -> m () Source #

type CollElement (MutVar s w) Source # 
Instance details

Defined in Data.Mutable.Class

type CollElement (MutVar s w) = Element w
type MCState (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

type MCState (MutVar s a) = s
type RefElement (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

type RefElement (MutVar s a) = a

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

Since 0.2.0

Collections/queues

data Deque v s a Source #

A double-ended queue supporting any underlying vector type and any monad.

This implements a circular double-ended queue with exponential growth.

Since 0.2.0

Instances

Instances details
MVector v a => MutableCollection (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Associated Types

type CollElement (Deque v s a) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => m (Deque v s a) Source #

MutableContainer (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Associated Types

type MCState (Deque v s a) Source #

MVector v a => MutablePopBack (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> m (Maybe (CollElement (Deque v s a))) Source #

MVector v a => MutablePopFront (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> m (Maybe (CollElement (Deque v s a))) Source #

MVector v a => MutablePushBack (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> CollElement (Deque v s a) -> m () Source #

MVector v a => MutablePushFront (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> CollElement (Deque v s a) -> m () Source #

type CollElement (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

type CollElement (Deque v s a) = a
type MCState (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

type MCState (Deque v s a) = s

type UDeque = Deque MVector Source #

A Deque specialized to unboxed vectors.

Since 0.2.0

asUDeque :: UDeque s a -> UDeque s a Source #

Since 0.2.0

type SDeque = Deque MVector Source #

A Deque specialized to storable vectors.

Since 0.2.0

asSDeque :: SDeque s a -> SDeque s a Source #

Since 0.2.0

type BDeque = Deque MVector Source #

A Deque specialized to boxed vectors.

Since 0.2.0

asBDeque :: BDeque s a -> BDeque s a Source #

Since 0.2.0

data DLList s a Source #

A doubly-linked list.

Since 0.3.0

Instances

Instances details
MutableCollection (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Associated Types

type CollElement (DLList s a) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => m (DLList s a) Source #

MutableContainer (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Associated Types

type MCState (DLList s a) Source #

MutablePopBack (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> m (Maybe (CollElement (DLList s a))) Source #

MutablePopFront (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> m (Maybe (CollElement (DLList s a))) Source #

MutablePushBack (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> CollElement (DLList s a) -> m () Source #

MutablePushFront (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> CollElement (DLList s a) -> m () Source #

type CollElement (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

type CollElement (DLList s a) = a
type MCState (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

type MCState (DLList s a) = s

asDLList :: DLList s a -> DLList s a Source #

Since 0.2.0

Type classes

class MutableContainer c Source #

The parent typeclass for all mutable containers.

Since 0.2.0

Associated Types

type MCState c Source #

Associated type giving the primitive state token for the given container, much like PrimState from primitive.

Since 0.2.0

Instances

Instances details
MutableContainer (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type MCState (IORef a) Source #

MutableContainer (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type MCState (STRef s a) Source #

MutableContainer (BRef s a) Source # 
Instance details

Defined in Data.Mutable.BRef

Associated Types

type MCState (BRef s a) Source #

MutableContainer (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Associated Types

type MCState (DLList s a) Source #

MutableContainer (PRef s a) Source # 
Instance details

Defined in Data.Mutable.PRef

Associated Types

type MCState (PRef s a) Source #

MutableContainer (SRef s a) Source # 
Instance details

Defined in Data.Mutable.SRef

Associated Types

type MCState (SRef s a) Source #

MutableContainer (URef s a) Source # 
Instance details

Defined in Data.Mutable.URef

Associated Types

type MCState (URef s a) Source #

MutableContainer (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type MCState (MutVar s a) Source #

MutableContainer (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Associated Types

type MCState (Deque v s a) Source #

class MutableContainer c => MutableRef c where Source #

Typeclass for single-cell mutable references.

Since 0.2.0

Associated Types

type RefElement c Source #

Associated type giving the type of the value inside the mutable reference.

Since 0.2.0

Methods

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

Create a new mutable reference with the given value.

Since 0.2.0

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

Read the current value in the mutable reference.

Since 0.2.0

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

Write a new value to the mutable reference.

Since 0.2.0

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

Modify the value in the mutable reference, without necessarily forcing the result.

Note: some implementations will force the result, in particular PRef, SRef, and URef.

Since 0.2.0

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

Modify the value in the mutable reference, forcing the result.

Since 0.2.0

Instances

Instances details
MutableRef (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type RefElement (IORef a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => RefElement (IORef a) -> m (IORef a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> m (RefElement (IORef a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> RefElement (IORef a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> (RefElement (IORef a) -> RefElement (IORef a)) -> m () Source #

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

MutableRef (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type RefElement (STRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => RefElement (STRef s a) -> m (STRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> m (RefElement (STRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> RefElement (STRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> (RefElement (STRef s a) -> RefElement (STRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> (RefElement (STRef s a) -> RefElement (STRef s a)) -> m () Source #

MutableRef (BRef s a) Source # 
Instance details

Defined in Data.Mutable.BRef

Associated Types

type RefElement (BRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => RefElement (BRef s a) -> m (BRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> m (RefElement (BRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> RefElement (BRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> (RefElement (BRef s a) -> RefElement (BRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (BRef s a)) => BRef s a -> (RefElement (BRef s a) -> RefElement (BRef s a)) -> m () Source #

Prim a => MutableRef (PRef s a) Source # 
Instance details

Defined in Data.Mutable.PRef

Associated Types

type RefElement (PRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => RefElement (PRef s a) -> m (PRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> m (RefElement (PRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> RefElement (PRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> (RefElement (PRef s a) -> RefElement (PRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (PRef s a)) => PRef s a -> (RefElement (PRef s a) -> RefElement (PRef s a)) -> m () Source #

Storable a => MutableRef (SRef s a) Source # 
Instance details

Defined in Data.Mutable.SRef

Associated Types

type RefElement (SRef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => RefElement (SRef s a) -> m (SRef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> m (RefElement (SRef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> RefElement (SRef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> (RefElement (SRef s a) -> RefElement (SRef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (SRef s a)) => SRef s a -> (RefElement (SRef s a) -> RefElement (SRef s a)) -> m () Source #

Unbox a => MutableRef (URef s a) Source # 
Instance details

Defined in Data.Mutable.URef

Associated Types

type RefElement (URef s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => RefElement (URef s a) -> m (URef s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> m (RefElement (URef s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> RefElement (URef s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> (RefElement (URef s a) -> RefElement (URef s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (URef s a)) => URef s a -> (RefElement (URef s a) -> RefElement (URef s a)) -> m () Source #

MutableRef (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type RefElement (MutVar s a) Source #

Methods

newRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => RefElement (MutVar s a) -> m (MutVar s a) Source #

readRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> m (RefElement (MutVar s a)) Source #

writeRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> RefElement (MutVar s a) -> m () Source #

modifyRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> RefElement (MutVar s a)) -> m () Source #

modifyRef' :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> RefElement (MutVar s a)) -> m () Source #

class MutableRef c => MutableAtomicRef c where Source #

MutableRefs that provide for atomic modifications of their contents.

Since 0.2.0

Methods

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

Modify the value without necessarily forcing the result.

Since 0.2.0

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

Modify the value, forcing the result.

Since 0.2.0

Instances

Instances details
MutableAtomicRef (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

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

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

MutableAtomicRef (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

atomicModifyRef :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> (RefElement (MutVar s a), a0)) -> m a0 Source #

atomicModifyRef' :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> (RefElement (MutVar s a) -> (RefElement (MutVar s a), a0)) -> m a0 Source #

class MutableContainer c => MutableCollection c where Source #

Containers which contain 0 or more values.

Since 0.2.0

Associated Types

type CollElement c Source #

The type of each value in the collection.

Since 0.2.0

Methods

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

Create a new, empty collection.

Since 0.2.0

Instances

Instances details
Monoid w => MutableCollection (IORef w) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type CollElement (IORef w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (IORef w)) => m (IORef w) Source #

Monoid w => MutableCollection (STRef s w) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type CollElement (STRef s w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (STRef s w)) => m (STRef s w) Source #

Monoid w => MutableCollection (BRef s w) Source # 
Instance details

Defined in Data.Mutable.BRef

Associated Types

type CollElement (BRef s w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (BRef s w)) => m (BRef s w) Source #

MutableCollection (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Associated Types

type CollElement (DLList s a) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => m (DLList s a) Source #

Monoid w => MutableCollection (MutVar s w) Source # 
Instance details

Defined in Data.Mutable.Class

Associated Types

type CollElement (MutVar s w) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (MutVar s w)) => m (MutVar s w) Source #

MVector v a => MutableCollection (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Associated Types

type CollElement (Deque v s a) Source #

Methods

newColl :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => m (Deque v s a) Source #

class MutableCollection c => MutablePushFront c where Source #

Place a value at the front of the collection.

Since 0.2.0

Methods

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

Place a value at the front of the collection.

Since 0.2.0

Instances

Instances details
IsSequence a => MutablePushFront (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> CollElement (IORef a) -> m () Source #

IsSequence a => MutablePushFront (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> CollElement (STRef s a) -> m () Source #

IsSequence seq => MutablePushFront (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> CollElement (BRef s seq) -> m () Source #

MutablePushFront (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> CollElement (DLList s a) -> m () Source #

IsSequence a => MutablePushFront (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> CollElement (MutVar s a) -> m () Source #

MVector v a => MutablePushFront (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

pushFront :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> CollElement (Deque v s a) -> m () Source #

class MutableCollection c => MutablePushBack c where Source #

Place a value at the back of the collection.

Since 0.2.0

Methods

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

Place a value at the back of the collection.

Since 0.2.0

Instances

Instances details
IsSequence a => MutablePushBack (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (IORef a)) => IORef a -> CollElement (IORef a) -> m () Source #

IsSequence a => MutablePushBack (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> CollElement (STRef s a) -> m () Source #

IsSequence seq => MutablePushBack (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> CollElement (BRef s seq) -> m () Source #

MutablePushBack (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> CollElement (DLList s a) -> m () Source #

IsSequence a => MutablePushBack (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> CollElement (MutVar s a) -> m () Source #

MVector v a => MutablePushBack (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

pushBack :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> CollElement (Deque v s a) -> m () Source #

class MutableCollection c => MutablePopFront c where Source #

Take a value from the front of the collection, if available.

Since 0.2.0

Methods

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

Take a value from the front of the collection, if available.

Since 0.2.0

Instances

Instances details
IsSequence a => MutablePopFront (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

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

IsSequence a => MutablePopFront (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> m (Maybe (CollElement (STRef s a))) Source #

IsSequence seq => MutablePopFront (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> m (Maybe (CollElement (BRef s seq))) Source #

MutablePopFront (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> m (Maybe (CollElement (DLList s a))) Source #

IsSequence a => MutablePopFront (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> m (Maybe (CollElement (MutVar s a))) Source #

MVector v a => MutablePopFront (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

popFront :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> m (Maybe (CollElement (Deque v s a))) Source #

class MutableCollection c => MutablePopBack c where Source #

Take a value from the back of the collection, if available.

Since 0.2.0

Methods

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

Take a value from the back of the collection, if available.

Since 0.2.0

Instances

Instances details
IsSequence a => MutablePopBack (IORef a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

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

IsSequence a => MutablePopBack (STRef s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (STRef s a)) => STRef s a -> m (Maybe (CollElement (STRef s a))) Source #

IsSequence seq => MutablePopBack (BRef s seq) Source # 
Instance details

Defined in Data.Mutable.BRef

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (BRef s seq)) => BRef s seq -> m (Maybe (CollElement (BRef s seq))) Source #

MutablePopBack (DLList s a) Source # 
Instance details

Defined in Data.Mutable.DLList

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (DLList s a)) => DLList s a -> m (Maybe (CollElement (DLList s a))) Source #

IsSequence a => MutablePopBack (MutVar s a) Source # 
Instance details

Defined in Data.Mutable.Class

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (MutVar s a)) => MutVar s a -> m (Maybe (CollElement (MutVar s a))) Source #

MVector v a => MutablePopBack (Deque v s a) Source # 
Instance details

Defined in Data.Mutable.Deque

Methods

popBack :: (PrimMonad m, PrimState m ~ MCState (Deque v s a)) => Deque v s a -> m (Maybe (CollElement (Deque v s a))) Source #

Constraint kinds

type MutableQueue c = (MutablePopFront c, MutablePushBack c) Source #

Collections which allow pushing and popping at the front (aka FIFOs).

Since 0.2.0

type MutableStack c = (MutablePopFront c, MutablePushFront c) Source #

Collections which allow pushing at the back and popping at the front (aka FILOs).

Since 0.2.0

type MutableDeque c = (MutableQueue c, MutablePushFront c, MutablePopBack c) Source #

Collections which allow pushing and popping at the front and back.

Since 0.2.0

Convenience re-exports

class Monad m => PrimMonad (m :: Type -> Type) #

Class of monads which can perform primitive state-transformer actions.

Minimal complete definition

primitive

Instances

Instances details
PrimMonad IO 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState IO #

Methods

primitive :: (State# (PrimState IO) -> (# State# (PrimState IO), a #)) -> IO a #

PrimMonad (ST s) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ST s) #

Methods

primitive :: (State# (PrimState (ST s)) -> (# State# (PrimState (ST s)), a #)) -> ST s a #

PrimMonad (ST s) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ST s) #

Methods

primitive :: (State# (PrimState (ST s)) -> (# State# (PrimState (ST s)), a #)) -> ST s a #

PrimMonad m => PrimMonad (ListT m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ListT m) #

Methods

primitive :: (State# (PrimState (ListT m)) -> (# State# (PrimState (ListT m)), a #)) -> ListT m a #

PrimMonad m => PrimMonad (MaybeT m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (MaybeT m) #

Methods

primitive :: (State# (PrimState (MaybeT m)) -> (# State# (PrimState (MaybeT m)), a #)) -> MaybeT m a #

(Monoid w, PrimMonad m) => PrimMonad (AccumT w m)

Since: primitive-0.6.3.0

Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (AccumT w m) #

Methods

primitive :: (State# (PrimState (AccumT w m)) -> (# State# (PrimState (AccumT w m)), a #)) -> AccumT w m a #

(Error e, PrimMonad m) => PrimMonad (ErrorT e m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ErrorT e m) #

Methods

primitive :: (State# (PrimState (ErrorT e m)) -> (# State# (PrimState (ErrorT e m)), a #)) -> ErrorT e m a #

PrimMonad m => PrimMonad (ExceptT e m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ExceptT e m) #

Methods

primitive :: (State# (PrimState (ExceptT e m)) -> (# State# (PrimState (ExceptT e m)), a #)) -> ExceptT e m a #

PrimMonad m => PrimMonad (IdentityT m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (IdentityT m) #

Methods

primitive :: (State# (PrimState (IdentityT m)) -> (# State# (PrimState (IdentityT m)), a #)) -> IdentityT m a #

PrimMonad m => PrimMonad (ReaderT r m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ReaderT r m) #

Methods

primitive :: (State# (PrimState (ReaderT r m)) -> (# State# (PrimState (ReaderT r m)), a #)) -> ReaderT r m a #

PrimMonad m => PrimMonad (SelectT r m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (SelectT r m) #

Methods

primitive :: (State# (PrimState (SelectT r m)) -> (# State# (PrimState (SelectT r m)), a #)) -> SelectT r m a #

PrimMonad m => PrimMonad (StateT s m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (StateT s m) #

Methods

primitive :: (State# (PrimState (StateT s m)) -> (# State# (PrimState (StateT s m)), a #)) -> StateT s m a #

PrimMonad m => PrimMonad (StateT s m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (StateT s m) #

Methods

primitive :: (State# (PrimState (StateT s m)) -> (# State# (PrimState (StateT s m)), a #)) -> StateT s m a #

(Monoid w, PrimMonad m) => PrimMonad (WriterT w m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (WriterT w m) #

Methods

primitive :: (State# (PrimState (WriterT w m)) -> (# State# (PrimState (WriterT w m)), a #)) -> WriterT w m a #

(Monoid w, PrimMonad m) => PrimMonad (WriterT w m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (WriterT w m) #

Methods

primitive :: (State# (PrimState (WriterT w m)) -> (# State# (PrimState (WriterT w m)), a #)) -> WriterT w m a #

(Monoid w, PrimMonad m) => PrimMonad (WriterT w m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (WriterT w m) #

Methods

primitive :: (State# (PrimState (WriterT w m)) -> (# State# (PrimState (WriterT w m)), a #)) -> WriterT w m a #

PrimMonad m => PrimMonad (ContT r m)

Since: primitive-0.6.3.0

Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (ContT r m) #

Methods

primitive :: (State# (PrimState (ContT r m)) -> (# State# (PrimState (ContT r m)), a #)) -> ContT r m a #

(Monoid w, PrimMonad m) => PrimMonad (RWST r w s m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (RWST r w s m) #

Methods

primitive :: (State# (PrimState (RWST r w s m)) -> (# State# (PrimState (RWST r w s m)), a #)) -> RWST r w s m a #

(Monoid w, PrimMonad m) => PrimMonad (RWST r w s m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (RWST r w s m) #

Methods

primitive :: (State# (PrimState (RWST r w s m)) -> (# State# (PrimState (RWST r w s m)), a #)) -> RWST r w s m a #

(Monoid w, PrimMonad m) => PrimMonad (RWST r w s m) 
Instance details

Defined in Control.Monad.Primitive

Associated Types

type PrimState (RWST r w s m) #

Methods

primitive :: (State# (PrimState (RWST r w s m)) -> (# State# (PrimState (RWST r w s m)), a #)) -> RWST r w s m a #

type family PrimState (m :: Type -> Type) #

State token type.

Instances

Instances details
type PrimState IO 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ST s) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ST s) = s
type PrimState (ST s) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ST s) = s
type PrimState (ListT m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (MaybeT m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (AccumT w m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (AccumT w m) = PrimState m
type PrimState (ErrorT e m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ErrorT e m) = PrimState m
type PrimState (ExceptT e m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ExceptT e m) = PrimState m
type PrimState (IdentityT m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ReaderT r m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ReaderT r m) = PrimState m
type PrimState (SelectT r m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (SelectT r m) = PrimState m
type PrimState (StateT s m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (StateT s m) = PrimState m
type PrimState (StateT s m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (StateT s m) = PrimState m
type PrimState (WriterT w m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (WriterT w m) = PrimState m
type PrimState (WriterT w m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (WriterT w m) = PrimState m
type PrimState (WriterT w m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (WriterT w m) = PrimState m
type PrimState (ContT r m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (ContT r m) = PrimState m
type PrimState (RWST r w s m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (RWST r w s m) = PrimState m
type PrimState (RWST r w s m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (RWST r w s m) = PrimState m
type PrimState (RWST r w s m) 
Instance details

Defined in Control.Monad.Primitive

type PrimState (RWST r w s m) = PrimState m

data RealWorld #

RealWorld is deeply magical. It is primitive, but it is not unlifted (hence ptrArg). We never manipulate values of type RealWorld; it's only used in the type system, to parameterise State#.

class Prim a #

Class of types supporting primitive array operations. This includes interfacing with GC-managed memory (functions suffixed with ByteArray#) and interfacing with unmanaged memory (functions suffixed with Addr#). Endianness is platform-dependent.

Instances

Instances details
Prim CBool 
Instance details

Defined in Data.Primitive.Types

Prim CChar 
Instance details

Defined in Data.Primitive.Types

Prim CClock 
Instance details

Defined in Data.Primitive.Types

Prim CDouble 
Instance details

Defined in Data.Primitive.Types

Prim CFloat 
Instance details

Defined in Data.Primitive.Types

Prim CInt 
Instance details

Defined in Data.Primitive.Types

Prim CIntMax 
Instance details

Defined in Data.Primitive.Types

Prim CIntPtr 
Instance details

Defined in Data.Primitive.Types

Prim CLLong 
Instance details

Defined in Data.Primitive.Types

Prim CLong 
Instance details

Defined in Data.Primitive.Types

Prim CPtrdiff 
Instance details

Defined in Data.Primitive.Types

Prim CSChar 
Instance details

Defined in Data.Primitive.Types

Prim CSUSeconds 
Instance details

Defined in Data.Primitive.Types

Prim CShort 
Instance details

Defined in Data.Primitive.Types

Prim CSigAtomic 
Instance details

Defined in Data.Primitive.Types

Prim CSize 
Instance details

Defined in Data.Primitive.Types

Prim CTime 
Instance details

Defined in Data.Primitive.Types

Prim CUChar 
Instance details

Defined in Data.Primitive.Types

Prim CUInt 
Instance details

Defined in Data.Primitive.Types

Prim CUIntMax 
Instance details

Defined in Data.Primitive.Types

Prim CUIntPtr 
Instance details

Defined in Data.Primitive.Types

Prim CULLong 
Instance details

Defined in Data.Primitive.Types

Prim CULong 
Instance details

Defined in Data.Primitive.Types

Prim CUSeconds 
Instance details

Defined in Data.Primitive.Types

Prim CUShort 
Instance details

Defined in Data.Primitive.Types

Prim CWchar 
Instance details

Defined in Data.Primitive.Types

Prim IntPtr

Since: primitive-0.7.1.0

Instance details

Defined in Data.Primitive.Types

Prim WordPtr

Since: primitive-0.7.1.0

Instance details

Defined in Data.Primitive.Types

Prim Int16 
Instance details

Defined in Data.Primitive.Types

Prim Int32 
Instance details

Defined in Data.Primitive.Types

Prim Int64 
Instance details

Defined in Data.Primitive.Types

Prim Int8 
Instance details

Defined in Data.Primitive.Types

Prim Word16 
Instance details

Defined in Data.Primitive.Types

Prim Word32 
Instance details

Defined in Data.Primitive.Types

Prim Word64 
Instance details

Defined in Data.Primitive.Types

Prim Word8 
Instance details

Defined in Data.Primitive.Types

Prim CBlkCnt 
Instance details

Defined in Data.Primitive.Types

Prim CBlkSize 
Instance details

Defined in Data.Primitive.Types

Prim CCc 
Instance details

Defined in Data.Primitive.Types

Prim CClockId 
Instance details

Defined in Data.Primitive.Types

Prim CDev 
Instance details

Defined in Data.Primitive.Types

Prim CFsBlkCnt 
Instance details

Defined in Data.Primitive.Types

Prim CFsFilCnt 
Instance details

Defined in Data.Primitive.Types

Prim CGid 
Instance details

Defined in Data.Primitive.Types

Prim CId 
Instance details

Defined in Data.Primitive.Types

Prim CIno 
Instance details

Defined in Data.Primitive.Types

Prim CKey 
Instance details

Defined in Data.Primitive.Types

Prim CMode 
Instance details

Defined in Data.Primitive.Types

Prim CNlink 
Instance details

Defined in Data.Primitive.Types

Prim COff 
Instance details

Defined in Data.Primitive.Types

Prim CPid 
Instance details

Defined in Data.Primitive.Types

Prim CRLim 
Instance details

Defined in Data.Primitive.Types

Prim CSpeed 
Instance details

Defined in Data.Primitive.Types

Prim CSsize 
Instance details

Defined in Data.Primitive.Types

Prim CTcflag 
Instance details

Defined in Data.Primitive.Types

Prim CTimer 
Instance details

Defined in Data.Primitive.Types

Prim CUid 
Instance details

Defined in Data.Primitive.Types

Prim Fd 
Instance details

Defined in Data.Primitive.Types

Prim Char 
Instance details

Defined in Data.Primitive.Types

Prim Double 
Instance details

Defined in Data.Primitive.Types

Prim Float 
Instance details

Defined in Data.Primitive.Types

Prim Int 
Instance details

Defined in Data.Primitive.Types

Prim Word 
Instance details

Defined in Data.Primitive.Types

Prim a => Prim (Identity a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Prim a => Prim (Down a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Prim a => Prim (First a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Prim a => Prim (Last a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Prim a => Prim (Max a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Methods

sizeOf# :: Max a -> Int# #

alignment# :: Max a -> Int# #

indexByteArray# :: ByteArray# -> Int# -> Max a #

readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Max a #) #

writeByteArray# :: MutableByteArray# s -> Int# -> Max a -> State# s -> State# s #

setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Max a -> State# s -> State# s #

indexOffAddr# :: Addr# -> Int# -> Max a #

readOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Max a #) #

writeOffAddr# :: Addr# -> Int# -> Max a -> State# s -> State# s #

setOffAddr# :: Addr# -> Int# -> Int# -> Max a -> State# s -> State# s #

Prim a => Prim (Min a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Methods

sizeOf# :: Min a -> Int# #

alignment# :: Min a -> Int# #

indexByteArray# :: ByteArray# -> Int# -> Min a #

readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Min a #) #

writeByteArray# :: MutableByteArray# s -> Int# -> Min a -> State# s -> State# s #

setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Min a -> State# s -> State# s #

indexOffAddr# :: Addr# -> Int# -> Min a #

readOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Min a #) #

writeOffAddr# :: Addr# -> Int# -> Min a -> State# s -> State# s #

setOffAddr# :: Addr# -> Int# -> Int# -> Min a -> State# s -> State# s #

Prim a => Prim (Dual a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Prim a => Prim (Product a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Prim a => Prim (Sum a)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Methods

sizeOf# :: Sum a -> Int# #

alignment# :: Sum a -> Int# #

indexByteArray# :: ByteArray# -> Int# -> Sum a #

readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Sum a #) #

writeByteArray# :: MutableByteArray# s -> Int# -> Sum a -> State# s -> State# s #

setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Sum a -> State# s -> State# s #

indexOffAddr# :: Addr# -> Int# -> Sum a #

readOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Sum a #) #

writeOffAddr# :: Addr# -> Int# -> Sum a -> State# s -> State# s #

setOffAddr# :: Addr# -> Int# -> Int# -> Sum a -> State# s -> State# s #

Prim (FunPtr a) 
Instance details

Defined in Data.Primitive.Types

Prim (Ptr a) 
Instance details

Defined in Data.Primitive.Types

Methods

sizeOf# :: Ptr a -> Int# #

alignment# :: Ptr a -> Int# #

indexByteArray# :: ByteArray# -> Int# -> Ptr a #

readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Ptr a #) #

writeByteArray# :: MutableByteArray# s -> Int# -> Ptr a -> State# s -> State# s #

setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Ptr a -> State# s -> State# s #

indexOffAddr# :: Addr# -> Int# -> Ptr a #

readOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Ptr a #) #

writeOffAddr# :: Addr# -> Int# -> Ptr a -> State# s -> State# s #

setOffAddr# :: Addr# -> Int# -> Int# -> Ptr a -> State# s -> State# s #

Prim (StablePtr a) 
Instance details

Defined in Data.Primitive.Types

Prim a => Prim (Const a b)

Since: primitive-0.6.5.0

Instance details

Defined in Data.Primitive.Types

Methods

sizeOf# :: Const a b -> Int# #

alignment# :: Const a b -> Int# #

indexByteArray# :: ByteArray# -> Int# -> Const a b #

readByteArray# :: MutableByteArray# s -> Int# -> State# s -> (# State# s, Const a b #) #

writeByteArray# :: MutableByteArray# s -> Int# -> Const a b -> State# s -> State# s #

setByteArray# :: MutableByteArray# s -> Int# -> Int# -> Const a b -> State# s -> State# s #

indexOffAddr# :: Addr# -> Int# -> Const a b #

readOffAddr# :: Addr# -> Int# -> State# s -> (# State# s, Const a b #) #

writeOffAddr# :: Addr# -> Int# -> Const a b -> State# s -> State# s #

setOffAddr# :: Addr# -> Int# -> Int# -> Const a b -> State# s -> State# s #

class (Vector Vector a, MVector MVector a) => Unbox a #

Instances

Instances details
Unbox All 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Any 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Int16 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Int32 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Int64 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Int8 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Word16 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Word32 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Word64 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Word8 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox () 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Bool 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Char 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Double 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Float 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Int 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox Word 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Complex a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Identity a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Down a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (First a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Last a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Max a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Min a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (WrappedMonoid a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Dual a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Product a) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Sum a) 
Instance details

Defined in Data.Vector.Unboxed.Base

(Unbox a, Unbox b) => Unbox (Arg a b) 
Instance details

Defined in Data.Vector.Unboxed.Base

(Unbox a, Unbox b) => Unbox (a, b) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox a => Unbox (Const a b) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox (f a) => Unbox (Alt f a) 
Instance details

Defined in Data.Vector.Unboxed.Base

(Unbox a, Unbox b, Unbox c) => Unbox (a, b, c) 
Instance details

Defined in Data.Vector.Unboxed.Base

(Unbox a, Unbox b, Unbox c, Unbox d) => Unbox (a, b, c, d) 
Instance details

Defined in Data.Vector.Unboxed.Base

Unbox (f (g a)) => Unbox (Compose f g a) 
Instance details

Defined in Data.Vector.Unboxed.Base

(Unbox a, Unbox b, Unbox c, Unbox d, Unbox e) => Unbox (a, b, c, d, e) 
Instance details

Defined in Data.Vector.Unboxed.Base

(Unbox a, Unbox b, Unbox c, Unbox d, Unbox e, Unbox f) => Unbox (a, b, c, d, e, f) 
Instance details

Defined in Data.Vector.Unboxed.Base

class Storable a #

The member functions of this class facilitate writing values of primitive types to raw memory (which may have been allocated with the above mentioned routines) and reading values from blocks of raw memory. The class, furthermore, includes support for computing the storage requirements and alignment restrictions of storable types.

Memory addresses are represented as values of type Ptr a, for some a which is an instance of class Storable. The type argument to Ptr helps provide some valuable type safety in FFI code (you can't mix pointers of different types without an explicit cast), while helping the Haskell type system figure out which marshalling method is needed for a given pointer.

All marshalling between Haskell and a foreign language ultimately boils down to translating Haskell data structures into the binary representation of a corresponding data structure of the foreign language and vice versa. To code this marshalling in Haskell, it is necessary to manipulate primitive data types stored in unstructured memory blocks. The class Storable facilitates this manipulation on all types for which it is instantiated, which are the standard basic types of Haskell, the fixed size Int types (Int8, Int16, Int32, Int64), the fixed size Word types (Word8, Word16, Word32, Word64), StablePtr, all types from Foreign.C.Types, as well as Ptr.

Minimal complete definition

sizeOf, alignment, (peek | peekElemOff | peekByteOff), (poke | pokeElemOff | pokeByteOff)

Instances

Instances details
Storable Fingerprint

Since: base-4.4.0.0

Instance details

Defined in Foreign.Storable

Storable Int16

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Int16 -> Int #

alignment :: Int16 -> Int #

peekElemOff :: Ptr Int16 -> Int -> IO Int16 #

pokeElemOff :: Ptr Int16 -> Int -> Int16 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Int16 #

pokeByteOff :: Ptr b -> Int -> Int16 -> IO () #

peek :: Ptr Int16 -> IO Int16 #

poke :: Ptr Int16 -> Int16 -> IO () #

Storable Int32

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Int32 -> Int #

alignment :: Int32 -> Int #

peekElemOff :: Ptr Int32 -> Int -> IO Int32 #

pokeElemOff :: Ptr Int32 -> Int -> Int32 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Int32 #

pokeByteOff :: Ptr b -> Int -> Int32 -> IO () #

peek :: Ptr Int32 -> IO Int32 #

poke :: Ptr Int32 -> Int32 -> IO () #

Storable Int64

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Int64 -> Int #

alignment :: Int64 -> Int #

peekElemOff :: Ptr Int64 -> Int -> IO Int64 #

pokeElemOff :: Ptr Int64 -> Int -> Int64 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Int64 #

pokeByteOff :: Ptr b -> Int -> Int64 -> IO () #

peek :: Ptr Int64 -> IO Int64 #

poke :: Ptr Int64 -> Int64 -> IO () #

Storable Int8

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Int8 -> Int #

alignment :: Int8 -> Int #

peekElemOff :: Ptr Int8 -> Int -> IO Int8 #

pokeElemOff :: Ptr Int8 -> Int -> Int8 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Int8 #

pokeByteOff :: Ptr b -> Int -> Int8 -> IO () #

peek :: Ptr Int8 -> IO Int8 #

poke :: Ptr Int8 -> Int8 -> IO () #

Storable Word16

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word32

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word64

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Word8

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Word8 -> Int #

alignment :: Word8 -> Int #

peekElemOff :: Ptr Word8 -> Int -> IO Word8 #

pokeElemOff :: Ptr Word8 -> Int -> Word8 -> IO () #

peekByteOff :: Ptr b -> Int -> IO Word8 #

pokeByteOff :: Ptr b -> Int -> Word8 -> IO () #

peek :: Ptr Word8 -> IO Word8 #

poke :: Ptr Word8 -> Word8 -> IO () #

Storable ()

Since: base-4.9.0.0

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: () -> Int #

alignment :: () -> Int #

peekElemOff :: Ptr () -> Int -> IO () #

pokeElemOff :: Ptr () -> Int -> () -> IO () #

peekByteOff :: Ptr b -> Int -> IO () #

pokeByteOff :: Ptr b -> Int -> () -> IO () #

peek :: Ptr () -> IO () #

poke :: Ptr () -> () -> IO () #

Storable Bool

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Bool -> Int #

alignment :: Bool -> Int #

peekElemOff :: Ptr Bool -> Int -> IO Bool #

pokeElemOff :: Ptr Bool -> Int -> Bool -> IO () #

peekByteOff :: Ptr b -> Int -> IO Bool #

pokeByteOff :: Ptr b -> Int -> Bool -> IO () #

peek :: Ptr Bool -> IO Bool #

poke :: Ptr Bool -> Bool -> IO () #

Storable Char

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Char -> Int #

alignment :: Char -> Int #

peekElemOff :: Ptr Char -> Int -> IO Char #

pokeElemOff :: Ptr Char -> Int -> Char -> IO () #

peekByteOff :: Ptr b -> Int -> IO Char #

pokeByteOff :: Ptr b -> Int -> Char -> IO () #

peek :: Ptr Char -> IO Char #

poke :: Ptr Char -> Char -> IO () #

Storable Double

Since: base-2.1

Instance details

Defined in Foreign.Storable

Storable Float

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Float -> Int #

alignment :: Float -> Int #

peekElemOff :: Ptr Float -> Int -> IO Float #

pokeElemOff :: Ptr Float -> Int -> Float -> IO () #

peekByteOff :: Ptr b -> Int -> IO Float #

pokeByteOff :: Ptr b -> Int -> Float -> IO () #

peek :: Ptr Float -> IO Float #

poke :: Ptr Float -> Float -> IO () #

Storable Int

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Int -> Int #

alignment :: Int -> Int #

peekElemOff :: Ptr Int -> Int -> IO Int #

pokeElemOff :: Ptr Int -> Int -> Int -> IO () #

peekByteOff :: Ptr b -> Int -> IO Int #

pokeByteOff :: Ptr b -> Int -> Int -> IO () #

peek :: Ptr Int -> IO Int #

poke :: Ptr Int -> Int -> IO () #

Storable Word

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Word -> Int #

alignment :: Word -> Int #

peekElemOff :: Ptr Word -> Int -> IO Word #

pokeElemOff :: Ptr Word -> Int -> Word -> IO () #

peekByteOff :: Ptr b -> Int -> IO Word #

pokeByteOff :: Ptr b -> Int -> Word -> IO () #

peek :: Ptr Word -> IO Word #

poke :: Ptr Word -> Word -> IO () #

Storable a => Storable (Identity a)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Identity

Methods

sizeOf :: Identity a -> Int #

alignment :: Identity a -> Int #

peekElemOff :: Ptr (Identity a) -> Int -> IO (Identity a) #

pokeElemOff :: Ptr (Identity a) -> Int -> Identity a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Identity a) #

pokeByteOff :: Ptr b -> Int -> Identity a -> IO () #

peek :: Ptr (Identity a) -> IO (Identity a) #

poke :: Ptr (Identity a) -> Identity a -> IO () #

Storable (FunPtr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: FunPtr a -> Int #

alignment :: FunPtr a -> Int #

peekElemOff :: Ptr (FunPtr a) -> Int -> IO (FunPtr a) #

pokeElemOff :: Ptr (FunPtr a) -> Int -> FunPtr a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (FunPtr a) #

pokeByteOff :: Ptr b -> Int -> FunPtr a -> IO () #

peek :: Ptr (FunPtr a) -> IO (FunPtr a) #

poke :: Ptr (FunPtr a) -> FunPtr a -> IO () #

Storable (Ptr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Ptr a -> Int #

alignment :: Ptr a -> Int #

peekElemOff :: Ptr (Ptr a) -> Int -> IO (Ptr a) #

pokeElemOff :: Ptr (Ptr a) -> Int -> Ptr a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Ptr a) #

pokeByteOff :: Ptr b -> Int -> Ptr a -> IO () #

peek :: Ptr (Ptr a) -> IO (Ptr a) #

poke :: Ptr (Ptr a) -> Ptr a -> IO () #

(Storable a, Integral a) => Storable (Ratio a)

Since: base-4.8.0.0

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: Ratio a -> Int #

alignment :: Ratio a -> Int #

peekElemOff :: Ptr (Ratio a) -> Int -> IO (Ratio a) #

pokeElemOff :: Ptr (Ratio a) -> Int -> Ratio a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (Ratio a) #

pokeByteOff :: Ptr b -> Int -> Ratio a -> IO () #

peek :: Ptr (Ratio a) -> IO (Ratio a) #

poke :: Ptr (Ratio a) -> Ratio a -> IO () #

Storable (StablePtr a)

Since: base-2.1

Instance details

Defined in Foreign.Storable

Methods

sizeOf :: StablePtr a -> Int #

alignment :: StablePtr a -> Int #

peekElemOff :: Ptr (StablePtr a) -> Int -> IO (StablePtr a) #

pokeElemOff :: Ptr (StablePtr a) -> Int -> StablePtr a -> IO () #

peekByteOff :: Ptr b -> Int -> IO (StablePtr a) #

pokeByteOff :: Ptr b -> Int -> StablePtr a -> IO () #

peek :: Ptr (StablePtr a) -> IO (StablePtr a) #

poke :: Ptr (StablePtr a) -> StablePtr a -> IO () #

Prim a => Storable (PrimStorable a) 
Instance details

Defined in Data.Primitive.Types

Storable a => Storable (Const a b)

Since: base-4.9.0.0

Instance details

Defined in Data.Functor.Const

Methods

sizeOf :: Const a b -> Int #

alignment :: Const a b -> Int #

peekElemOff :: Ptr (Const a b) -> Int -> IO (Const a b) #

pokeElemOff :: Ptr (Const a b) -> Int -> Const a b -> IO () #

peekByteOff :: Ptr b0 -> Int -> IO (Const a b) #

pokeByteOff :: Ptr b0 -> Int -> Const a b -> IO () #

peek :: Ptr (Const a b) -> IO (Const a b) #

poke :: Ptr (Const a b) -> Const a b -> IO () #