module Base
( module GHC.Base
, module GHC.Enum
, module GHC.Err
, module GHC.Exts
, module GHC.Float
, module GHC.Num
, module GHC.Real
, module GHC.Show
, module GHC.TypeLits
, module GHC.Types
#if ( __GLASGOW_HASKELL__ >= 800 )
, module GHC.OverloadedLabels
, module GHC.ExecutionStack
, module GHC.Stack
#endif
, ($!)
) where
import GHC.Base (String, asTypeOf, maxInt, minInt, ord, seq, (++))
import GHC.Enum (Bounded (..), Enum (..), boundedEnumFrom,
boundedEnumFromThen)
import GHC.Err (error, undefined)
import GHC.Exts (Constraint, FunPtr, Ptr)
import GHC.Float (Double (..), Float (..), Floating (..), showFloat,
showSignedFloat)
import GHC.Num (Integer, Num (..), subtract)
import GHC.Real hiding ((%))
import GHC.Show (Show (..))
import GHC.TypeLits (CmpNat, KnownNat, KnownSymbol, Nat, SomeNat (..),
SomeSymbol (..), Symbol, natVal, someNatVal,
someSymbolVal, symbolVal)
import GHC.Types (Bool, Char, Coercible, IO, Int, Ordering, Word)
#if ( __GLASGOW_HASKELL__ >= 800 )
import GHC.ExecutionStack (getStackTrace, showStackTrace)
import GHC.OverloadedLabels (IsLabel (..))
import GHC.Stack (CallStack, HasCallStack, callStack,
currentCallStack, getCallStack, prettyCallStack,
prettySrcLoc, withFrozenCallStack)
#endif
($!) :: (a -> b) -> a -> b
f $! x = let !vx = x in f vx
infixr 0 $!