Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
This module provides functions for changing the underlying
monad of a SeqT
, just like Control.Monad.Morph.hoist
.
The functions with the word "Pre" in their names lean on the
Monad
instance of the original monad. The ones with the word
"Post" in their names lean on the Monad
instance of the
target monad. The ones with the word "Unexposed" in their names
are reasonably well-behaved when the passed function is not
a monad morphism (as described in the Control.Monad.Morph documentation).
The others are typically a little more efficient, but may behave
strangely when passed non-monad-morphisms. In particular, if f
is
not a monad morphism, and s1 == s2
, we do not even guarantee that
.hoistPre
f s1 == hoistPre
f s2
Synopsis
- hoistPreUnexposed :: forall m n a. Monad m => (forall x. m x -> n x) -> SeqT m a -> SeqT n a
- hoistPost :: Monad n => (forall x. m x -> n x) -> SeqT m a -> SeqT n a
- hoistPostUnexposed :: forall m n a. (Monad m, Monad n) => (forall x. m x -> n x) -> SeqT m a -> SeqT n a
- hoistPre :: Monad m => (forall x. m x -> n x) -> SeqT m a -> SeqT n a
Documentation
hoistPreUnexposed :: forall m n a. Monad m => (forall x. m x -> n x) -> SeqT m a -> SeqT n a Source #
A version of hoist
that works for arbitrary functions, rather
than just monad morphisms.