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 s a | s -> a
- data Proxy# :: k -> (#)
- proxy# :: Proxy# k a
Documentation
MonadBase b m => MonadBase b (Proxied * x m) | |
MonadTrans (Proxied * x) | |
MonadTransControl (Proxied * x) | |
Alternative m => Alternative (Proxied * x m) | |
Monad m => Monad (Proxied * x m) | |
Functor m => Functor (Proxied * x m) | |
MonadPlus m => MonadPlus (Proxied * x m) | |
Applicative m => Applicative (Proxied * x m) | |
MonadIO m => MonadIO (Proxied * x m) | |
type StT (Proxied * x) a = a |
fromProxy# :: Proxy# a -> Proxy a Source
class Reifies s a | s -> a
data Proxy# :: k -> (#)
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.