unpack-funcs-0.1.2: 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 a[a6vC]) 
Unpackable (ForeignPtr a[a6B0]) 
Unpackable (Maybe a[a35H]) 
Unpackable (MutableByteArray s[a6u3]) 
Unpackable (Array a[a6r9]) 
Unpackable (Vector a[a61N]) 
Unpackable (Vector a[a6GL]) 
Unpackable (Vector a[a61J]) 
Unpackable (Either a[a6PA] b[a6Pz]) 
(Unpackable a[a6Ws], Unpackable b[a6Wt]) => Unpackable (a[a6Ws], b[a6Wt]) 
Unpackable (MutableArray s[a6s8] a[a6s7]) 
Unpackable (MVector s[a6In] a[a6Im]) 
Unpackable (MVector s[a6LP] a[a6LO]) 
Unpackable (MVector s[a6K6] a[a6K5]) 
(Unpackable a[a6WA], Unpackable b[a6WB], Unpackable c[a6WC]) => Unpackable (a[a6WA], b[a6WB], c[a6WC]) 
(Unpackable a[a6WK], Unpackable b[a6WL], Unpackable c[a6WM], Unpackable d[a6WN]) => Unpackable (a[a6WK], b[a6WL], c[a6WM], d[a6WN]) 
(Unpackable a[a6WW], Unpackable b[a6WX], Unpackable c[a6WY], Unpackable d[a6WZ], Unpackable e[a6X0]) => Unpackable (a[a6WW], b[a6WX], c[a6WY], d[a6WZ], e[a6X0]) 
(Unpackable a[a6Xa], Unpackable b[a6Xb], Unpackable c[a6Xc], Unpackable d[a6Xd], Unpackable e[a6Xe], Unpackable f[a6Xf]) => Unpackable (a[a6Xa], b[a6Xb], c[a6Xc], d[a6Xd], e[a6Xe], f[a6Xf]) 
(Unpackable a[a6Xq], Unpackable b[a6Xr], Unpackable c[a6Xs], Unpackable d[a6Xt], Unpackable e[a6Xu], Unpackable f[a6Xv], Unpackable g[a6Xw]) => Unpackable (a[a6Xq], b[a6Xr], c[a6Xs], d[a6Xt], e[a6Xu], f[a6Xv], g[a6Xw]) 
(Unpackable a[a6XI], Unpackable b[a6XJ], Unpackable c[a6XK], Unpackable d[a6XL], Unpackable e[a6XM], Unpackable f[a6XN], Unpackable g[a6XO], Unpackable h[a6XP]) => Unpackable (a[a6XI], b[a6XJ], c[a6XK], d[a6XL], e[a6XM], f[a6XN], g[a6XO], h[a6XP]) 
(Unpackable a[a6Y2], Unpackable b[a6Y3], Unpackable c[a6Y4], Unpackable d[a6Y5], Unpackable e[a6Y6], Unpackable f[a6Y7], Unpackable g[a6Y8], Unpackable h[a6Y9], Unpackable i[a6Ya]) => Unpackable (a[a6Y2], b[a6Y3], c[a6Y4], d[a6Y5], e[a6Y6], f[a6Y7], g[a6Y8], h[a6Y9], i[a6Ya]) 
(Unpackable a[a6Yo], Unpackable b[a6Yp], Unpackable c[a6Yq], Unpackable d[a6Yr], Unpackable e[a6Ys], Unpackable f[a6Yt], Unpackable g[a6Yu], Unpackable h[a6Yv], Unpackable i[a6Yw], Unpackable j[a6Yx]) => Unpackable (a[a6Yo], b[a6Yp], c[a6Yq], d[a6Yr], e[a6Ys], f[a6Yt], g[a6Yu], h[a6Yv], i[a6Yw], j[a6Yx]) 

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.