Safe Haskell | None |
---|---|
Language | Haskell2010 |
Proxied
monad.
is a monad transformer that has a global
configuration parameter of type Proxied
xx
associated with it.
It is used to implement things like ZoomT
/runZoom
and
CustromWriterT
/evalWriterWith
.
Most of the time you don't need to use this directly. It is exported for two purposes:
- you can use it to define new monad transformers
- you can define instances for
and transformers that are based on itProxied
x
- newtype Proxied x m a = Proxied (forall (q :: *). Reifies q x => Proxy# q -> m a)
- fromProxy# :: Proxy# a -> Proxy a
- toProxy# :: Proxy a -> Proxy# a
- reify :: a -> (forall (q :: *). Reifies q a => Proxy# q -> r) -> r
- reflect :: Reifies q a => Proxy# q -> a
- class Reifies k (s :: k) a | s -> a
- data Proxy# :: forall k0. k0 -> TYPE (TupleRep ([] RuntimeRep))
- proxy# :: Proxy# k0 a
Documentation
newtype Proxied x m a Source #
MonadBase b m => MonadBase b (Proxied * x m) Source # | |
MonadTrans (Proxied * x) Source # | |
MonadTransControl (Proxied * x) Source # | |
Monad m => Monad (Proxied * x m) Source # | |
Functor m => Functor (Proxied * x m) Source # | |
Applicative m => Applicative (Proxied * x m) Source # | |
MonadIO m => MonadIO (Proxied * x m) Source # | |
Alternative m => Alternative (Proxied * x m) Source # | |
MonadPlus m => MonadPlus (Proxied * x m) Source # | |
type StT (Proxied * x) a Source # | |
fromProxy# :: Proxy# a -> Proxy a Source #
class Reifies k (s :: k) a | s -> a #
KnownNat n => Reifies Nat n Integer | |
KnownSymbol n => Reifies Symbol n String | |
Reifies * Z Int | |
Reifies * n Int => Reifies * (D n) Int | |
Reifies * n Int => Reifies * (SD n) Int | |
Reifies * n Int => Reifies * (PD n) Int | |
(B * b0, B * b1, B * b2, B * b3, B * b4, B * b5, B * b6, B * b7, (~) * w0 (W b0 b1 b2 b3), (~) * w1 (W b4 b5 b6 b7)) => Reifies * (Stable w0 w1 a) a | |
data Proxy# :: forall k0. k0 -> TYPE (TupleRep ([] RuntimeRep)) #
The type constructor Proxy#
is used to bear witness to some
type variable. It's used when you want to pass around proxy values
for doing things like modelling type applications. A Proxy#
is not only unboxed, it also has a polymorphic kind, and has no
runtime representation, being totally free.