-- | -- This module provides functions for changing the underlying -- monad of a 'SeqT', just like "Control.Monad.Morph".'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@. module Control.Monad.Logic.Sequence.Morph ( hoistPreUnexposed , hoistPost , hoistPostUnexposed , hoistPre ) where import Control.Monad.Logic.Sequence.Internal