{-# LANGUAGE FlexibleContexts #-}
module Imm.Prelude (module Imm.Prelude, module X) where
import Control.Applicative as X
import Control.Exception.Safe as X hiding(handle)
import Control.Monad as X (MonadPlus (..), unless,
void, when)
import Control.Monad.Base as X
import Control.Monad.IO.Class as X
import Control.Monad.Trans as X (lift)
import Data.Bifunctor as X
import qualified Data.ByteString as B (ByteString)
import qualified Data.ByteString.Lazy as LB (ByteString)
import Data.Containers as X
import Data.Either as X
import Data.Foldable as X (forM_)
import Data.Maybe as X hiding (catMaybes)
import Data.Monoid.Textual as X (TextualMonoid, fromText)
import Data.MonoTraversable.Unprefixed as X hiding (forM_, mapM_)
import Data.Ord as X
import Data.Sequences as X
import Data.String as X (IsString (..))
import qualified Data.Text as T (Text)
import Data.Text.IO as X (getLine, putStr,
putStrLn)
import qualified Data.Text.Lazy as LT (Text)
import Data.Traversable as X (for, forM)
import qualified GHC.Show as Show
import Prelude as X hiding (all, and, any,
break, concat, concatMap,
drop, dropWhile, elem,
filter, foldMap, foldr,
getLine, length, lines,
log, lookup, notElem,
null, or, product,
putStr, putStrLn,
readFile, replicate,
reverse, sequence_, show,
span, splitAt, sum, take,
takeWhile, unlines,
unwords, words,
writeFile)
import System.IO as X (IOMode (..), stderr,
stdout)
type LByteString = LB.ByteString
type ByteString = B.ByteString
type LText = LT.Text
type Text = T.Text
io :: MonadIO m => IO a -> m a
io = liftIO
show :: (Show a, IsString b) => a -> b
show = fromString . Show.show