| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Control.Monad.Trans.Introspect
Synopsis
- newtype IntrospectT (t :: (* -> *) -> * -> *) (r :: (* -> *) -> *) (m :: * -> *) (a :: *) = IntrospectT {
- runIntrospectT :: r (t (IntrospectT t r m)) -> m a
- runIntrospect :: (Representational r, Coercible (t (IntrospectT t r m)) n) => r n -> IntrospectT t r m a -> m a
- mapIntrospectT :: (m a -> m b) -> IntrospectT t r m a -> IntrospectT t r m b
- liftCallCC :: CallCC m a b -> CallCC (IntrospectT t r m) a b
- liftCatch :: Catch e m a -> Catch e (IntrospectT t r m) a
Concrete interface
newtype IntrospectT (t :: (* -> *) -> * -> *) (r :: (* -> *) -> *) (m :: * -> *) (a :: *) Source #
extends the monad IntrospectT t r m am with access to an environment
r parameterized by m with additional effects t on top.
Constructors
| IntrospectT | |
Fields
| |
Instances
runIntrospect :: (Representational r, Coercible (t (IntrospectT t r m)) n) => r n -> IntrospectT t r m a -> m a Source #
Run an IntrospectT. If introspection is the outermost effect then you
will likely have t ~ and thus you
can pick IdentityTn ~ .IntrospectT t r m
Utility functions for proxying other effects
mapIntrospectT :: (m a -> m b) -> IntrospectT t r m a -> IntrospectT t r m b Source #
liftCallCC :: CallCC m a b -> CallCC (IntrospectT t r m) a b Source #