-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | permutation Applicative and Monad with many mtl instances
--
-- Based on "Parsing Permutation Phrases", by Arthur Baars, Andres Loeh
-- and S. Doaitse Swierstra, Haskell Workshop 2001. The
-- implementation given here does not include explicit optional actions,
-- and instead implements Alternative and MonadPlus. m
-- <|> pure a should be used where
-- addOpt a m would be used.
@package perm
@version 0.1.0.1
module Control.Monad.Perm
-- | The permutation monad
type PermT = PermT' Monad
-- | Unwrap a PermT, combining actions using the MonadPlus
-- for f.
runPermT :: MonadPlus m => PermT m a -> m a
-- | The permutation action, available as either an Applicative or a
-- Monad, determined by the combinators used.
data PermT' c m a
-- | A version of lift without the Monad m
-- constraint
liftPerm :: m a -> PermT' c m a
-- | Lift a natural transformation from m to n into a
-- natural transformation from PermT' c m to
-- PermT' c n.
hoistPerm :: (forall a. m a -> n a) -> PermT' c m b -> PermT' c n b
module Control.Applicative.Perm
-- | The permutation applicative
type Perm = PermT' Applicative
-- | Unwrap a Perm, combining actions using the Alternative
-- for f.
runPerm :: Alternative m => Perm m a -> m a
-- | The permutation action, available as either an Applicative or a
-- Monad, determined by the combinators used.
data PermT' c m a
-- | A version of lift without the Monad m
-- constraint
liftPerm :: m a -> PermT' c m a
-- | Lift a natural transformation from m to n into a
-- natural transformation from PermT' c m to
-- PermT' c n.
hoistPerm :: (forall a. m a -> n a) -> PermT' c m b -> PermT' c n b