| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Monad.Classes.Proxied
Description
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 itProxiedx
- 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 a | s -> a
- data Proxy# :: forall k. k -> TYPE VoidRep
- proxy# :: Proxy# k a
Documentation
newtype Proxied x m a Source #
Instances
| 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 a | s -> a #
Minimal complete definition
Instances
| 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 k. k -> TYPE VoidRep #
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.