module BinaryParser.Prelude ( module Exports, mapLeft, joinMap, ) where -- base-prelude ------------------------- import BasePrelude as Exports hiding (fail) -- transformers ------------------------- import Control.Monad.IO.Class as Exports import Control.Monad.Trans.Class as Exports import Control.Monad.Trans.Cont as Exports hiding (shift, callCC) import Control.Monad.Trans.Except as Exports (ExceptT(ExceptT), Except, except, runExcept, runExceptT, mapExcept, mapExceptT, withExcept, withExceptT, throwE, catchE) import Control.Monad.Trans.Maybe as Exports import Control.Monad.Trans.Reader as Exports (Reader, runReader, mapReader, withReader, ReaderT(ReaderT), runReaderT, mapReaderT, withReaderT) import Control.Monad.Trans.State.Strict as Exports (State, runState, evalState, execState, mapState, withState, StateT(StateT), runStateT, evalStateT, execStateT, mapStateT, withStateT) import Control.Monad.Trans.Writer.Strict as Exports (Writer, runWriter, execWriter, mapWriter, WriterT(..), execWriterT, mapWriterT) -- mtl ------------------------- import Control.Monad.Cont.Class as Exports import Control.Monad.Error.Class as Exports hiding (Error(..)) import Control.Monad.Reader.Class as Exports import Control.Monad.State.Class as Exports import Control.Monad.Writer.Class as Exports -- bytestring ------------------------- import Data.ByteString as Exports (ByteString) -- text ------------------------- import Data.Text as Exports (Text) {-# INLINE mapLeft #-} mapLeft :: (a -> b) -> Either a x -> Either b x mapLeft f = either (Left . f) Right joinMap :: Monad m => (a -> m b) -> m a -> m b joinMap f = join . liftM f