| 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
- newtype Skeleton t a = Skeleton {
- unSkeleton :: Spine t (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 s t a. (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.
Constructors
| Skeleton | |
Fields
| |
hoistSkeleton :: forall s t a. (forall x. s x -> t x) -> Skeleton s a -> Skeleton t a Source
Lift a transformation between bones into transformation between skeletons.