{- | Copyright: Andy Sonnenburg (c) 2012 License: BSD-style (see the file LICENSE) Maintainer: Andy Sonnenburg Stability: experimental Portability: non-portable -} module Control.Applicative.Perm ( Perm , runPerm , liftPerm , liftPlus , hoistPerm ) where import Control.Applicative import Control.Monad.Perm.Internal (Perm, sum1, liftPerm, liftPlus, hoistPerm) -- | Unwrap a 'Perm', combining actions using the 'Alternative' for @f@. runPerm :: Alternative m => Perm m a -> m a runPerm = sum1