Safe Haskell | Trustworthy |
---|---|
Language | Haskell2010 |
- 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.
Skeleton | |
|
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.