unpack-funcs-0.3.0: Monad transformers that mirror worker-wrapper transformations.

Control.Monad.Unpack

Synopsis

Documentation

class Unpackable arg whereSource

Associated Types

data UnpackedReaderT arg :: (* -> *) -> * -> *Source

Methods

runUnpackedReaderT :: UnpackedReaderT arg m a -> arg -> m aSource

unpackedReaderT :: (arg -> m a) -> UnpackedReaderT arg m aSource

Instances

Unpackable Bool 
Unpackable Char 
Unpackable Int 
Unpackable Int8 
Unpackable Int16 
Unpackable Int32 
Unpackable Int64 
Unpackable Word 
Unpackable Word8 
Unpackable Word16 
Unpackable Word32 
Unpackable Word64 
Unpackable () 
Unpackable ByteString 
Unpackable ByteArray 
Unpackable Addr 
Unpackable (Ptr a0) 
Unpackable (ForeignPtr a0) 
Unpackable (Maybe a0) 
Unpackable (MutableByteArray s0) 
Unpackable (Array a0) 
Unpackable (Vector a0) 
Unpackable (Vector a0) 
Unpackable (Vector a0) 
Unpackable (Either a0 b0) 
(Unpackable a0, Unpackable b0) => Unpackable (a0, b0) 
Unpackable (MutableArray s0 a0) 
Unpackable (MVector s0 a0) 
Unpackable (MVector s0 a0) 
Unpackable (MVector s0 a0) 
(Unpackable a0, Unpackable b0, Unpackable c0) => Unpackable (a0, b0, c0) 
(Unpackable a0, Unpackable b0, Unpackable c0, Unpackable d0) => Unpackable (a0, b0, c0, d0) 
(Unpackable a0, Unpackable b0, Unpackable c0, Unpackable d0, Unpackable e0) => Unpackable (a0, b0, c0, d0, e0) 
(Unpackable a0, Unpackable b0, Unpackable c0, Unpackable d0, Unpackable e0, Unpackable f0) => Unpackable (a0, b0, c0, d0, e0, f0) 
(Unpackable a0, Unpackable b0, Unpackable c0, Unpackable d0, Unpackable e0, Unpackable f0, Unpackable g0) => Unpackable (a0, b0, c0, d0, e0, f0, g0) 
(Unpackable a0, Unpackable b0, Unpackable c0, Unpackable d0, Unpackable e0, Unpackable f0, Unpackable g0, Unpackable h0) => Unpackable (a0, b0, c0, d0, e0, f0, g0, h0) 
(Unpackable a0, Unpackable b0, Unpackable c0, Unpackable d0, Unpackable e0, Unpackable f0, Unpackable g0, Unpackable h0, Unpackable i0) => Unpackable (a0, b0, c0, d0, e0, f0, g0, h0, i0) 
(Unpackable a0, Unpackable b0, Unpackable c0, Unpackable d0, Unpackable e0, Unpackable f0, Unpackable g0, Unpackable h0, Unpackable i0, Unpackable j0) => Unpackable (a0, b0, c0, d0, e0, f0, g0, h0, i0, j0) 

ask :: (Monad m, Unpackable arg) => UnpackedReaderT arg m argSource

local :: (Monad m, Unpackable arg) => (arg -> arg) -> UnpackedReaderT arg m a -> UnpackedReaderT arg m aSource

unpack :: Unpackable arg => (arg -> a) -> arg :~> aSource

($~) :: Unpackable arg => (arg :~> a) -> arg -> aSource

unpack1Instance :: Name -> Q [Dec]Source

Unpack wrappers around primitive types, like Int.

unpackInstance :: Name -> Q [Dec]Source

Unpack complicated but single-constructor types.

noUnpackInstance :: Name -> Q [Dec]Source

Do no unpacking at all.