| Safe Haskell | Trustworthy |
|---|---|
| Language | Haskell2010 |
Control.Monad.Skeleton
- data MonadView t m x where
- hoistMV :: (forall x. s x -> t x) -> (m a -> n a) -> MonadView s m a -> MonadView t n a
- iterMV :: Monad m => (t a -> MonadView m t a) -> t a -> m a
- data Skeleton t a
- bone :: t a -> Skeleton t a
- debone :: Skeleton t a -> MonadView t (Skeleton t) a
- unbone :: Skeleton t a -> MonadView t (Skeleton t) a
- boned :: MonadView t (Skeleton t) a -> Skeleton t a
- hoistSkeleton :: (forall x. s x -> t x) -> Skeleton s a -> Skeleton t a
Documentation
is a monadic skeleton (operational monad) made out of Skeleton tt.
Skeletons can be fleshed out by getting transformed to other monads.
The implementation is based on
Reflection without Remorse
so it provides efficient (>>=) and debone, monadic reflection.
hoistSkeleton :: (forall x. s x -> t x) -> Skeleton s a -> Skeleton t a Source
Lift a transformation between bones into transformation between skeletons.