Mutable variable with primitive value.
Modulepvar-1.0.0.0Haskell2010
Data.Primitive.PVar
- 4 types
- 4 classes
- 44 values
- Packagepvar-1.0.0.0
- Exports52
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceInternal.hs
PVar has significantly better performance characteristics over IORef, STRef and MutVar. This is because value is mutated directly in memory instead of following an extra pointer. Besides better performance there is another consequence of direct mutation, namely the value is always evaluated to normal form when being written into a PVar
Synonym for RealWorld
Creation
2 declarationsCreate a mutable variable in unpinned memory (i.e. GC can move it) with an initial value. This is a prefered way to create a mutable variable, since it will not contribute to memory fragmentation. For pinned memory versions see newPinnedPVar and newAlignedPinnedPVar
withPVarST Run an ST action on a mutable variable.
Mutable Operations
15 declarationsRead a value from a mutable variable
Write a value into a mutable variable
Apply a pure function to the contents of a mutable variable. Returns the artifact of computation.
Apply a pure function to the contents of a mutable variable.
Apply a pure function to the contents of a mutable variable. Returns the old value.
Apply a pure function to the contents of a mutable variable. Returns the new value.
Apply a monadic action to the contents of a mutable variable. Returns the artifact of computation.
Apply a monadic action to the contents of a mutable variable.
Apply a monadic action to the contents of a mutable variable. Returns the old value.
Apply a monadic action to the contents of a mutable variable. Returns the new value.
Swap contents of two mutable variables.
Swap contents of two mutable variables. Returns their old values.
copyPVar Copy contents of one mutable variable PVar into another
Size in bytes of a value stored inside the mutable variable. PVar itself is neither accessed nor evaluated.
Alignment in bytes of the value stored inside of the mutable variable. PVar itself is neither accessed nor evaluated.
Pinned memory
10 declarationsIn theory it is unsafe to mix Storable and Prim operations on the same chunk of memory, because some instances can have different memory layouts for the same type. This is highly uncommon in practice and if you are intermixing the two concepts together you probably already know what you are doing.
Create a mutable variable in pinned memory with an initial value.
Create a mutable variable in pinned memory with an initial value and aligned according to its alignment
Apply an action to the Ptr that references the mutable variable, but only if it is backed by pinned memory, cause otherwise it would be unsafe.
withStorablePVar Apply an action to the newly allocated PVar and to the Ptr that references
it. Memory allocated with number of bytes specified by sizeOf a is allocated and
pinned, therefore it is safe to operate directly with the pointer as well as over
FFI. Returning the pointer from the supplied action would be very unsafe, therefore
return the PVar if you still need it afterwards, garbage collector will cleanup the
memory when it is no longer needed.
Same withStorablePVar, except memory is aligned according to alignment.
Convert PVar into a ForeignPtr, but only if it is backed by pinned memory.
Check if PVar is backed by pinned memory or not
Use Storable reading functionality inside the PrimMonad.
Use Storable wrting functionality inside the PrimMonad.
Atomic operations
14 declarationsApply a function to an integer element of a PVar atomically. Implies a full memory barrier.
Apply a function to an integer element of a PVar atomically. Returns the old value. Implies a full memory barrier.
Apply a function to an integer element of a PVar atomically. Implies a full memory barrier. Returns the new value.
Apply a function to an integer element of a PVar atomically. Implies a full memory barrier. Returns the new value.
Read a value from PVar atomically. Implies a full memory barrier.
Write a value into an PVar atomically. Implies a full memory barrier.
casIntPVar Compare and swap. This is also a function that is used to implement atomicModifyIntPVar. Implies a full memory barrier.
Add two numbers, corresponds to (+) done atomically. Returns the previous value of
the mutable variable. Implies a full memory barrier.
Subtract two numbers, corresponds to (-) done atomically. Returns the
previous value of the mutable variable. Implies a full memory barrier.
Binary conjuction (AND), corresponds to (.&.) done atomically. Returns the previous
value of the mutable variable. Implies a full memory barrier.
Binary negation of conjuction (NAND), corresponds to \x y -> complement (x
.&. y) done atomically. Returns the previous value of the mutable variable. Implies
a full memory barrier.
Binary disjunction (OR), corresponds to (.|.) done atomically. Returns the previous
value of the mutable variable. Implies a full memory barrier.
Binary exclusive disjunction (XOR), corresponds to xor done atomically. Returns the
previous value of the mutable variable. Implies a full memory barrier.
Binary negation (NOT), corresponds to ones' complement done atomically. Returns the
previous value of the mutable variable. Implies a full memory barrier.
Re-exports
9 declarationsClass 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.
Instances77Prim, …
Prim CBoolDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CCharDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CClockDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CDoubleDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CFloatDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CIntDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CIntMaxDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CIntPtrDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CLLongDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CLongDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CPtrdiffDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CSCharDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CSUSecondsDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CShortDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CSigAtomicDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CSizeDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CTimeDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CUCharDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CUIntDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CUIntMaxDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CUIntPtrDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CULLongDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CULongDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CUSecondsDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CUShortDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CWcharDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim IntPtrDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim WordPtrDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Int16Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Int32Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Int64Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Int8Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CBlkCntDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CBlkSizeDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CCcDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CClockIdDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CDevDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CFsBlkCntDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CFsFilCntDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CGidDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CIdDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CInoDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CKeyDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CModeDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CNlinkDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim COffDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CPidDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CRLimDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CSpeedDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CSsizeDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CTcflagDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CTimerDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CUidDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim FdDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim CharDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim DoubleDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim FloatDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim IntDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim WordDefined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Word16Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Word32Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Word64Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim Word8Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim (FunPtr a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim (Ptr a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim (StablePtr a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Complex a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (First a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Last a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Max a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Min a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Identity a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Down a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Dual a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Product a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Sum a)Defined in primitive-0.9.1.0 · Data.Primitive.TypesPrim a => Prim (Const a b)Defined in primitive-0.9.1.0 · Data.Primitive.Types
Class of monads which can perform primitive state-transformer actions.
Instances18PrimMonad, …
PrimMonad IODefined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad (ST s)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad (ST s)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (MaybeT m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (ExceptT e m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (IdentityT m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (ReaderT r m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (SelectT r m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (StateT s m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (StateT s m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive(Monoid w, PrimMonad m) => PrimMonad (AccumT w m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive(Monoid w, PrimMonad m) => PrimMonad (WriterT w m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive(Monoid w, PrimMonad m) => PrimMonad (WriterT w m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive(Monoid w, PrimMonad m) => PrimMonad (WriterT w m)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad m => PrimMonad (ContT r m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive(Monoid w, PrimMonad m) => PrimMonad (RWST r w s m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive(Monoid w, PrimMonad m) => PrimMonad (RWST r w s m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive(Monoid w, PrimMonad m) => PrimMonad (RWST r w s m)Defined in primitive-0.9.1.0 · Control.Monad.Primitive
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#.
The size of values of type a in bytes. The argument is not used.
It is recommended to use sizeOfType instead.
This function has existed since 0.1, but was moved from Data.Primitive
to Data.Primitive.Types in version 0.6.3.0.
The alignment of values of type a in bytes. The argument is not used.
It is recommended to use alignmentOfType instead.
This function has existed since 0.1, but was moved from Data.Primitive
to Data.Primitive.Types in version 0.6.3.0.
The strict ST monad.
The ST monad allows for destructive updates, but is escapable (unlike IO).
A computation of type ST s a returns a value of type a, and
execute in "thread" s. The s parameter is either
an uninstantiated type variable (inside invocations of runST), or
It serves to keep the internal states of different invocations of runST separate from each other and from invocations of stToIO.
The >>= and >> operations are strict in the state (though not in values stored in the state). For example,
runST (writeSTRef _|_ v >>= f) = _|_Instances10Monad, Functor, MonadFix, Applicative, PrimBase, PrimMonad, …
Monad (ST s)Defined in ghc-internal-9.1401.0 · GHC.Internal.STFunctor (ST s)Defined in ghc-internal-9.1401.0 · GHC.Internal.STMonadFix (ST s)Defined in ghc-internal-9.1401.0 · GHC.Internal.Control.Monad.FixApplicative (ST s)Defined in ghc-internal-9.1401.0 · GHC.Internal.STPrimBase (ST s)Defined in primitive-0.9.1.0 · Control.Monad.PrimitivePrimMonad (ST s)Defined in primitive-0.9.1.0 · Control.Monad.PrimitiveShow (ST s a)Defined in ghc-internal-9.1401.0 · GHC.Internal.STSemigroup a => Semigroup (ST s a)Defined in ghc-internal-9.1401.0 · GHC.Internal.STMonoid a => Monoid (ST s a)Defined in ghc-internal-9.1401.0 · GHC.Internal.STtype PrimState (ST s) = sDefined in primitive-0.9.1.0 · Control.Monad.Primitive
Return the value computed by a state thread.
The forall ensures that the internal state used by the ST
computation is inaccessible to the rest of the program.
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.
Methods
peek :: Ptr a -> IO aRead a value from the given memory location.
Note that the peek and poke functions might require properly aligned addresses to function correctly. This is architecture dependent; thus, portable code should ensure that when peeking or poking values of some type
a, the alignment constraint fora, as given by the function alignment is fulfilled.poke :: Ptr a -> a -> IO ()Write the given value to the given memory location. Alignment restrictions might apply; see peek.
Instances84Storable, …
Storable EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.EPollStorable EventDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.PollStorable PollFdDefined in ghc-internal-9.1401.0 · GHC.Internal.Event.PollStorable FingerprintDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable CBoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CClockDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CDoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CFloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CLLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CPtrdiffDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CSCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CSUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CSigAtomicDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CTimeDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CUCharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CUIntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CUIntMaxDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CUIntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CULLongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CULongDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CUSecondsDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CUShortDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable CWcharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.C.TypesStorable IntPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.PtrStorable WordPtrDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.PtrStorable HalfWordDefined in ghc-internal-9.1401.0 · GHC.Internal.Heap.InfoTable.TypesStorable FLockDefined in ghc-internal-9.1401.0 · GHC.Internal.IO.Handle.Lock.LinuxOFDStorable Int16Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable Int32Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable Int64Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable Int8Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable CBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CBlkSizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CCcDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CClockIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CDevDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CFsBlkCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CFsFilCntDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CGidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CIdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CInoDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CKeyDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CModeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CNfdsDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CNlinkDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable COffDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CPidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CRLimDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CSocklenDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CSpeedDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CSsizeDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CTcflagDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CTimerDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable CUidDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable FdDefined in ghc-internal-9.1401.0 · GHC.Internal.System.Posix.TypesStorable BoolDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable CharDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable DoubleDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable FloatDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable IntDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable WordDefined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable Word16Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable Word32Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable Word64Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable Word8Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable ()Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable (ConstPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable (FunPtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable (Ptr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable (StablePtr a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorableStorable a => Storable (Complex a)Defined in base-4.22.0.0 · Data.ComplexStorable a => Storable (Identity a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.IdentityStorable a => Storable (Down a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.OrdPrim a => Storable (PrimStorable a)Defined in primitive-0.9.1.0 · Data.Primitive.Types(Storable a, Integral a) => Storable (Ratio a)Defined in ghc-internal-9.1401.0 · GHC.Internal.Foreign.StorablePrim a => Storable (PVar a RealWorld)Defined in pvar-1.0.0.0 · Data.Primitive.PVar.InternalStorable a => Storable (Const a b)Defined in ghc-internal-9.1401.0 · GHC.Internal.Data.Functor.Const