85 lines
1.2 KiB
Haskell
85 lines
1.2 KiB
Haskell
{-# LANGUAGE CPP #-}
|
|
{-# LANGUAGE Unsafe #-}
|
|
{-# LANGUAGE BangPatterns #-}
|
|
{-# LANGUAGE ExplicitNamespaces #-}
|
|
{-# LANGUAGE NoImplicitPrelude #-}
|
|
|
|
module Base (
|
|
module X,
|
|
($!),
|
|
) where
|
|
|
|
-- Glorious Glashgow Haskell Compiler
|
|
#if defined(__GLASGOW_HASKELL__) && ( __GLASGOW_HASKELL__ >= 600 )
|
|
|
|
-- Base GHC types
|
|
import GHC.Num as X
|
|
import GHC.Enum as X
|
|
import GHC.Real as X
|
|
import GHC.Float as X
|
|
import GHC.Show as X (
|
|
Show(..)
|
|
)
|
|
import GHC.Exts as X (
|
|
Constraint
|
|
, Ptr
|
|
, FunPtr
|
|
)
|
|
import GHC.Base as X (
|
|
(++)
|
|
, seq
|
|
, asTypeOf
|
|
, ord
|
|
, maxInt
|
|
, minInt
|
|
)
|
|
import System.IO as X (
|
|
print
|
|
, putStr
|
|
, putStrLn
|
|
)
|
|
|
|
import GHC.Types as X (
|
|
Bool
|
|
, Char
|
|
, Int
|
|
, Word
|
|
, Ordering
|
|
, IO
|
|
#if ( __GLASGOW_HASKELL__ >= 710 )
|
|
, Coercible
|
|
#endif
|
|
)
|
|
|
|
#if ( __GLASGOW_HASKELL__ >= 800 )
|
|
import GHC.OverloadedLabels as X (
|
|
IsLabel(..)
|
|
)
|
|
|
|
import GHC.Records as X (
|
|
HasField(..)
|
|
)
|
|
|
|
import Data.Kind as X (
|
|
type (*)
|
|
, type Type
|
|
)
|
|
#endif
|
|
|
|
infixr 0 $!
|
|
|
|
($!) :: (a -> b) -> a -> b
|
|
f $! x = let !vx = x in f vx
|
|
|
|
#endif
|
|
|
|
|
|
-- Simple Haskell Compiler
|
|
#if defined(__SHC_HASKELL__)
|
|
|
|
import SHC.Prim as X
|
|
import SHC.Types as X
|
|
import SHC.Classes as X
|
|
|
|
#endif
|