Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Documentation
class Has (t :: (* -> *) -> * -> *) m where Source #
The transformer stack m
contains the transformer t
.
Explicitly, m = t1 (t2 (t3 ... (tN m)...))
,
and t
is one of these t1, t2, ...
s.
liftH :: (forall n. Monad n => t n a) -> m a Source #
Insert an action of this transformer into an arbitrary position in the stack.
This will apply lift
as many times as necessary to insert the action.
The higher-rank type involving forall n
basically says:
"The action to lift must only use the structure of the transformer,
not of a specific monad,
and is thus definable for any monad n
".