module Prelude (
    
    
    Bool(False, True),
    (&&), (||), not, otherwise,
    Maybe(Nothing, Just),
    maybe,
    Either(Left, Right),
    either,
    Ordering(LT, EQ, GT),
    Char, String,
    
    fst, snd, curry, uncurry,
    
    Eq((==), (/=)),
    Ord(compare, (<), (<=), (>=), (>), max, min),
    Enum(succ, pred, toEnum, fromEnum, enumFrom, enumFromThen,
         enumFromTo, enumFromThenTo),
    Bounded(minBound, maxBound),
    
    
    Int, Integer, Float, Double,
    Rational, Word,
    
    Num((+), (), (*), negate, abs, signum, fromInteger),
    Real(toRational),
    Integral(quot, rem, div, mod, quotRem, divMod, toInteger),
    Fractional((/), recip, fromRational),
    Floating(pi, exp, log, sqrt, (**), logBase, sin, cos, tan,
             asin, acos, atan, sinh, cosh, tanh, asinh, acosh, atanh),
    RealFrac(properFraction, truncate, round, ceiling, floor),
    RealFloat(floatRadix, floatDigits, floatRange, decodeFloat,
              encodeFloat, exponent, significand, scaleFloat, isNaN,
              isInfinite, isDenormalized, isIEEE, isNegativeZero, atan2),
    
    subtract, even, odd, gcd, lcm, (^), (^^),
    fromIntegral, realToFrac,
    
    Semigroup((<>)),
    Monoid(mempty, mappend, mconcat),
    
    Functor(fmap, (<$)), (<$>),
    Applicative(pure, (<*>), (*>), (<*)),
    Monad((>>=), (>>), return, fail),
    mapM_, sequence_, (=<<),
    
    Foldable(elem,      
             
             foldMap,   
             foldr,     
             
             foldl,     
             
             foldr1,    
             foldl1,    
             maximum,   
             minimum,   
             product,   
             sum),      
             
    Traversable(traverse, sequenceA, mapM, sequence),
    
    id, const, (.), flip, ($), until,
    asTypeOf, error, errorWithoutStackTrace, undefined,
    seq, ($!),
    
    map, (++), filter,
    head, last, tail, init, null, length, (!!),
    reverse,
    
    and, or, any, all,
    concat, concatMap,
    
    
    scanl, scanl1, scanr, scanr1,
    
    iterate, repeat, replicate, cycle,
    
    take, drop, splitAt, takeWhile, dropWhile, span, break,
    
    notElem, lookup,
    
    zip, zip3, zipWith, zipWith3, unzip, unzip3,
    
    lines, words, unlines, unwords,
    
    
    ShowS,
    Show(showsPrec, showList, show),
    shows,
    showChar, showString, showParen,
    
    ReadS,
    Read(readsPrec, readList),
    reads, readParen, read, lex,
    
    IO,
    
    
    
    
    
    
    
    putChar,
    putStr, putStrLn, print,
    
    getChar,
    getLine, getContents, interact,
    
    FilePath,
    readFile, writeFile, appendFile, readIO, readLn,
    
    IOError, ioError, userError,
  ) where
import Control.Monad
import System.IO
import System.IO.Error
import Data.List
import Data.Either
import Data.Foldable    ( Foldable(..) )
import Data.Functor     ( (<$>) )
import Data.Maybe
import Data.Traversable ( Traversable(..) )
import Data.Tuple
import GHC.Base hiding ( foldr, mapM, sequence )
import Text.Read
import GHC.Enum
import GHC.Num
import GHC.Real
import GHC.Float
import GHC.Show