brittany/srcinc/prelude.inc

787 lines
33 KiB
C++

import qualified Data.ByteString
import qualified Data.ByteString.Builder
import qualified Data.ByteString.Builder.Extra
import qualified Data.ByteString.Builder.Prim
import qualified Data.ByteString.Char8
import qualified Data.ByteString.Lazy.Builder
import qualified Data.ByteString.Lazy.Builder.ASCII
import qualified Data.ByteString.Lazy.Builder.Extras
import qualified Data.ByteString.Lazy.Char8
import qualified Data.ByteString.Lazy
import qualified Data.ByteString.Short
import qualified Data.ByteString.Unsafe
import qualified Data.Graph
import qualified Data.IntMap
import qualified Data.IntMap.Lazy
import qualified Data.IntMap.Strict
import qualified Data.IntSet
import qualified Data.Map
import qualified Data.Map.Lazy
import qualified Data.Map.Strict
import qualified Data.Sequence
import qualified Data.Set
import qualified Data.Tree
import qualified System.Directory
import qualified Control.Concurrent.Extra
import qualified Control.Exception.Extra
import qualified Control.Monad.Extra
import qualified Data.Either.Extra
import qualified Data.IORef.Extra
import qualified Data.List.Extra
import qualified Data.Tuple.Extra
import qualified Data.Version.Extra
import qualified Numeric.Extra
import qualified System.Directory.Extra
import qualified System.Environment.Extra
import qualified System.IO.Extra
import qualified System.Info.Extra
import qualified System.Process.Extra
import qualified System.Time.Extra
-- import qualified Control.Exception.Lens
import qualified Control.Lens
-- import qualified Control.Lens.At
-- import qualified Control.Lens.Combinators
-- import qualified Control.Lens.Cons
-- import qualified Control.Lens.Each
-- import qualified Control.Lens.Empty
-- import qualified Control.Lens.Equality
-- import qualified Control.Lens.Extras
-- import qualified Control.Lens.Fold
-- import qualified Control.Lens.Getter
-- import qualified Control.Lens.Indexed
-- import qualified Control.Lens.Internal
-- import qualified Control.Lens.Internal.Bazaar
-- import qualified Control.Lens.Internal.ByteString
-- import qualified Control.Lens.Internal.Coerce
-- import qualified Control.Lens.Internal.Context
-- import qualified Control.Lens.Internal.Deque
-- import qualified Control.Lens.Internal.Exception
-- import qualified Control.Lens.Internal.FieldTH
-- import qualified Control.Lens.Internal.Fold
-- import qualified Control.Lens.Internal.Getter
-- import qualified Control.Lens.Internal.Indexed
-- import qualified Control.Lens.Internal.Instances
-- import qualified Control.Lens.Internal.Iso
-- import qualified Control.Lens.Internal.Level
-- import qualified Control.Lens.Internal.List
-- import qualified Control.Lens.Internal.Magma
-- import qualified Control.Lens.Internal.Prism
-- import qualified Control.Lens.Internal.PrismTH
-- import qualified Control.Lens.Internal.Review
-- import qualified Control.Lens.Internal.Setter
-- import qualified Control.Lens.Internal.TH
-- import qualified Control.Lens.Internal.Zoom
-- import qualified Control.Lens.Iso
-- import qualified Control.Lens.Lens
-- import qualified Control.Lens.Level
-- import qualified Control.Lens.Operators
-- import qualified Control.Lens.Plated
-- import qualified Control.Lens.Prism
-- import qualified Control.Lens.Reified
-- import qualified Control.Lens.Review
-- import qualified Control.Lens.Setter
-- import qualified Control.Lens.TH
-- import qualified Control.Lens.Traversal
-- import qualified Control.Lens.Tuple
-- import qualified Control.Lens.Type
-- import qualified Control.Lens.Wrapped
-- import qualified Control.Lens.Zoom
-- import qualified Control.Monad.Error.Lens
-- import qualified Control.Parallel.Strategies.Lens
-- import qualified Control.Seq.Lens
-- import qualified Data.Array.Lens
-- import qualified Data.Bits.Lens
-- import qualified Data.ByteString.Lazy.Lens
-- import qualified Data.ByteString.Lens
-- import qualified Data.ByteString.Strict.Lens
-- import qualified Data.Complex.Lens
-- import qualified Data.Data.Lens
-- import qualified Data.Dynamic.Lens
-- import qualified Data.HashSet.Lens
-- import qualified Data.IntSet.Lens
-- import qualified Data.List.Lens
-- import qualified Data.Map.Lens
-- import qualified Data.Sequence.Lens
-- import qualified Data.Set.Lens
-- import qualified Data.Text.Lazy.Lens
-- import qualified Data.Text.Lens
-- import qualified Data.Text.Strict.Lens
-- import qualified Data.Tree.Lens
-- import qualified Data.Typeable.Lens
-- import qualified Data.Vector.Generic.Lens
-- import qualified Data.Vector.Lens
-- import qualified GHC.Generics.Lens
-- import qualified Generics.Deriving.Lens
-- import qualified Language.Haskell.TH.Lens
-- import qualified Numeric.Lens
-- import qualified System.Exit.Lens
-- import qualified System.FilePath.Lens
-- import qualified System.IO.Error.Lens
-- import qualified Control.Monad.Cont
-- import qualified Control.Monad.Cont.Class
-- import qualified Control.Monad.Error.Class
-- import qualified Control.Monad.Except
-- import qualified Control.Monad.Identity
-- import qualified Control.Monad.List
-- import qualified Control.Monad.RWS
-- import qualified Control.Monad.RWS.Class
-- import qualified Control.Monad.RWS.Lazy
-- import qualified Control.Monad.RWS.Strict
-- import qualified Control.Monad.Reader
-- import qualified Control.Monad.Reader.Class
-- import qualified Control.Monad.State
-- import qualified Control.Monad.State.Class
-- import qualified Control.Monad.State.Lazy
-- import qualified Control.Monad.State.Strict
-- import qualified Control.Monad.Trans
-- import qualified Control.Monad.Writer
-- import qualified Control.Monad.Writer.Class
-- import qualified Control.Monad.Writer.Lazy
-- import qualified Control.Monad.Writer.Strict
-- import qualified Control.Monad.Trans.MultiRWS
import qualified Control.Monad.Trans.MultiRWS.Lazy
import qualified Control.Monad.Trans.MultiRWS.Strict
import qualified Control.Monad.Trans.MultiReader
import qualified Control.Monad.Trans.MultiReader.Class
import qualified Control.Monad.Trans.MultiReader.Lazy
import qualified Control.Monad.Trans.MultiReader.Strict
import qualified Control.Monad.Trans.MultiState
import qualified Control.Monad.Trans.MultiState.Class
import qualified Control.Monad.Trans.MultiState.Lazy
import qualified Control.Monad.Trans.MultiState.Strict
import qualified Control.Monad.Trans.MultiWriter
import qualified Control.Monad.Trans.MultiWriter.Class
import qualified Control.Monad.Trans.MultiWriter.Lazy
import qualified Control.Monad.Trans.MultiWriter.Strict
import qualified Control.Monad.Trans.MultiRWS.Strict as MultiRWSS
import qualified Control.Monad.Trans.MultiRWS.Lazy as MultiRWSL
import qualified Text.PrettyPrint
import qualified Text.PrettyPrint.Annotated
import qualified Text.PrettyPrint.Annotated.HughesPJ
import qualified Text.PrettyPrint.Annotated.HughesPJClass
import qualified Text.PrettyPrint.HughesPJ
import qualified Text.PrettyPrint.HughesPJClass
-- import qualified Data.Generics
-- import qualified Data.Generics.Aliases
-- import qualified Data.Generics.Basics
-- import qualified Data.Generics.Builders
-- import qualified Data.Generics.Instances
-- import qualified Data.Generics.Schemes
-- import qualified Data.Generics.Text
-- import qualified Data.Generics.Twins
-- import qualified Generics.SYB
-- import qualified Generics.SYB.Aliases
-- import qualified Generics.SYB.Basics
-- import qualified Generics.SYB.Builders
-- import qualified Generics.SYB.Instances
-- import qualified Generics.SYB.Schemes
-- import qualified Generics.SYB.Text
-- import qualified Generics.SYB.Twins
import qualified Data.Text
import qualified Data.Text.Array
import qualified Data.Text.Encoding
import qualified Data.Text.Encoding.Error
import qualified Data.Text.Foreign
import qualified Data.Text.IO
-- import qualified Data.Text.Internal
-- import qualified Data.Text.Internal.Builder
-- import qualified Data.Text.Internal.Builder.Functions
-- import qualified Data.Text.Internal.Builder.Int.Digits
-- import qualified Data.Text.Internal.Builder.RealFloat.Functions
-- import qualified Data.Text.Internal.Encoding.Fusion
-- import qualified Data.Text.Internal.Encoding.Fusion.Common
-- import qualified Data.Text.Internal.Encoding.Utf16
-- import qualified Data.Text.Internal.Encoding.Utf32
-- import qualified Data.Text.Internal.Encoding.Utf8
-- import qualified Data.Text.Internal.Functions
-- import qualified Data.Text.Internal.Fusion
-- import qualified Data.Text.Internal.Fusion.CaseMapping
-- import qualified Data.Text.Internal.Fusion.Common
-- import qualified Data.Text.Internal.Fusion.Size
-- import qualified Data.Text.Internal.Fusion.Types
-- import qualified Data.Text.Internal.IO
-- import qualified Data.Text.Internal.Lazy
-- import qualified Data.Text.Internal.Lazy.Encoding.Fusion
-- import qualified Data.Text.Internal.Lazy.Fusion
-- import qualified Data.Text.Internal.Lazy.Search
-- import qualified Data.Text.Internal.Private
-- import qualified Data.Text.Internal.Read
-- import qualified Data.Text.Internal.Search
-- import qualified Data.Text.Internal.Unsafe
-- import qualified Data.Text.Internal.Unsafe.Char
-- import qualified Data.Text.Internal.Unsafe.Shift
import qualified Data.Text.Lazy
import qualified Data.Text.Lazy.Builder
-- import qualified Data.Text.Lazy.Builder.Int
-- import qualified Data.Text.Lazy.Builder.RealFloat
-- import qualified Data.Text.Lazy.Encoding
-- import qualified Data.Text.Lazy.IO
-- import qualified Data.Text.Lazy.Read
-- import qualified Data.Text.Read
-- import qualified Data.Text.Unsafe
-- import qualified Control.Applicative.Backwards
-- import qualified Control.Applicative.Lift
-- import qualified Control.Monad.IO.Class
-- import qualified Control.Monad.Signatures
-- import qualified Control.Monad.Trans.Class
-- import qualified Control.Monad.Trans.Cont
-- import qualified Control.Monad.Trans.Except
-- import qualified Control.Monad.Trans.Identity
-- import qualified Control.Monad.Trans.List
-- import qualified Control.Monad.Trans.Maybe
-- import qualified Control.Monad.Trans.RWS
-- import qualified Control.Monad.Trans.RWS.Lazy
-- import qualified Control.Monad.Trans.RWS.Strict
-- import qualified Control.Monad.Trans.Reader
-- import qualified Control.Monad.Trans.State
-- import qualified Control.Monad.Trans.State.Lazy
-- import qualified Control.Monad.Trans.State.Strict
-- import qualified Control.Monad.Trans.Writer
-- import qualified Control.Monad.Trans.Writer.Lazy
-- import qualified Control.Monad.Trans.Writer.Strict
-- import qualified Data.Functor.Classes
-- import qualified Data.Functor.Compose
-- import qualified Data.Functor.Constant
-- import qualified Data.Functor.Product
-- import qualified Data.Functor.Reverse
-- import qualified Data.Functor.Sum
-- import qualified Prelude
-- import qualified Control.Applicative
-- import qualified Control.Arrow
-- import qualified Control.Category
-- import qualified Control.Concurrent
-- import qualified Control.Concurrent.Chan
-- import qualified Control.Concurrent.MVar
-- import qualified Control.Concurrent.QSem
-- import qualified Control.Concurrent.QSemN
-- import qualified Control.Exception
-- import qualified Control.Exception.Base
-- import qualified Control.Monad
-- import qualified Control.Monad.Fix
-- import qualified Control.Monad.ST
-- import qualified Control.Monad.ST.Lazy
-- import qualified Control.Monad.ST.Lazy.Unsafe
-- import qualified Control.Monad.ST.Strict
-- import qualified Control.Monad.ST.Unsafe
-- import qualified Control.Monad.Zip
import qualified Data.Bifunctor
import qualified Data.Bits
import qualified Data.Bool
import qualified Data.Char
import qualified Data.Coerce
import qualified Data.Complex
import qualified Data.Data
import qualified Data.Dynamic
import qualified Data.Either
import qualified Data.Eq
import qualified Data.Fixed
import qualified Data.Foldable
import qualified Data.Function
import qualified Data.Functor
import qualified Data.Functor.Identity
import qualified Data.IORef
import qualified Data.Int
import qualified Data.Ix
import qualified Data.List
import qualified Data.Maybe
import qualified Data.Monoid
import qualified Data.Ord
import qualified Data.Proxy
-- import qualified Data.Ratio
-- import qualified Data.STRef
-- import qualified Data.STRef.Lazy
-- import qualified Data.STRef.Strict
-- import qualified Data.String
-- import qualified Data.Traversable
-- import qualified Data.Tuple
-- import qualified Data.Type.Bool
-- import qualified Data.Type.Coercion
-- import qualified Data.Type.Equality
-- import qualified Data.Typeable
-- import qualified Data.Typeable.Internal
-- import qualified Data.Unique
-- import qualified Data.Version
-- import qualified Data.Void
-- import qualified Data.Word
import qualified Debug.Trace
-- import qualified Foreign.C
-- import qualified Foreign.C.Error
-- import qualified Foreign.C.String
-- import qualified Foreign.C.Types
-- import qualified Foreign.Concurrent
-- import qualified Foreign.ForeignPtr
-- import qualified Foreign.ForeignPtr.Unsafe
-- import qualified Foreign.Marshal
-- import qualified Foreign.Marshal.Alloc
-- import qualified Foreign.Marshal.Array
-- import qualified Foreign.Marshal.Error
-- import qualified Foreign.Marshal.Pool
-- import qualified Foreign.Marshal.Unsafe
-- import qualified Foreign.Marshal.Utils
-- import qualified Foreign.Ptr
-- import qualified Foreign.StablePtr
-- import qualified Foreign.Storable
import qualified Numeric
import qualified Numeric.Natural
-- import qualified System.CPUTime
-- import qualified System.Console.GetOpt
-- import qualified System.Environment
-- import qualified System.Exit
import qualified System.IO
-- import qualified System.IO.Error
-- import qualified System.IO.Unsafe
-- import qualified System.Info
-- import qualified System.Mem
-- import qualified System.Mem.StableName
-- import qualified System.Mem.Weak
-- import qualified System.Posix.Types
-- import qualified System.Timeout
-- import qualified Text.ParserCombinators.ReadP
-- import qualified Text.ParserCombinators.ReadPrec
-- import qualified Text.Printf
-- import qualified Text.Read
-- import qualified Text.Read.Lex
-- import qualified Text.Show
-- import qualified Text.Show.Functions
import qualified Unsafe.Coerce
-- import qualified Control.Arrow as Arrow
-- import qualified Control.Category as Category
-- import qualified Control.Concurrent as Concurrent
-- import qualified Control.Concurrent.Chan as Chan
-- import qualified Control.Concurrent.MVar as MVar
-- import qualified Control.Exception as Exception
-- import qualified Control.Exception.Base as Exception.Base
-- import qualified Control.Monad as Monad
-- import qualified Data.Bits as Bits
import qualified Data.Bool as Bool
-- import qualified Data.Char as Char
-- import qualified Data.Complex as Complex
-- import qualified Data.Either as Either
-- import qualified Data.Eq as Eq
import qualified Data.Foldable as Foldable
-- import qualified Data.Fixed as Fixed
-- import qualified Data.Functor.Identity as Identity
-- import qualified Data.IORef as IORef
-- import qualified Data.Int as Int
-- import qualified Data.Ix as Ix
-- import qualified Data.Maybe as Maybe
-- import qualified Data.Monoid as Monoid
-- import qualified Data.Ord as Ord
-- import qualified Data.Proxy as Proxy
-- import qualified Data.Traversable as Traversable
-- import qualified Data.Void as Void
import qualified GHC.OldList as List
-- import qualified Text.Printf as Printf
import qualified Data.Semigroup as Semigroup
import qualified Data.ByteString as ByteString
import qualified Data.ByteString.Lazy as ByteStringL
-- import qualified Data.IntMap as IntMap
import qualified Data.IntMap.Lazy as IntMapL
import qualified Data.IntMap.Strict as IntMapS
-- import qualified Data.IntSet as IntSet
import qualified Data.Map as Map
-- import qualified Data.Map.Lazy as MapL
-- import qualified Data.Map.Strict as MapS
import qualified Data.Sequence as Seq
import qualified Data.Set as Set
import qualified Control.Monad.RWS.Class as RWS.Class
import qualified Control.Monad.Reader.Class as Reader.Class
import qualified Control.Monad.State.Class as State.Class
import qualified Control.Monad.Writer.Class as Writer.Class
import qualified Data.Text as Text
import qualified Data.Text.Encoding as Text.Encoding
import qualified Data.Text.IO as Text.IO
import qualified Data.Text.Lazy as TextL
import qualified Data.Text.Lazy.Encoding as TextL.Encoding
import qualified Data.Text.Lazy.IO as TextL.IO
-- import qualified Control.Monad.Trans.Class as Trans.Class
-- import qualified Control.Monad.Trans.Maybe as Trans.Maybe
-- import qualified Control.Monad.Trans.RWS as RWS
-- import qualified Control.Monad.Trans.RWS.Lazy as RWSL
-- import qualified Control.Monad.Trans.RWS.Strict as RWSS
-- import qualified Control.Monad.Trans.Reader as Reader
import qualified Control.Monad.Trans.State as State
import qualified Control.Monad.Trans.State.Lazy as StateL
import qualified Control.Monad.Trans.State.Strict as StateS
-- import qualified Control.Monad.Trans.Writer as Writer
-- import qualified Control.Monad.Trans.Writer.Lazy as WriterL
-- import qualified Control.Monad.Trans.Writer.Strict as Writer
import qualified Control.Monad.Trans.Either as EitherT
import qualified Data.Strict.Maybe as Strict
import qualified Safe as Safe
import Data.Functor.Identity ( Identity(..) )
import Control.Concurrent.Chan ( Chan )
import Control.Concurrent.MVar ( MVar )
import Data.Int ( Int )
import Data.Word ( Word )
import Prelude ( Integer, Float, Double )
import Control.Monad.ST ( ST )
import Data.Bool ( Bool(..) )
import Data.Char ( Char )
import Data.Either ( Either(..) )
import Data.IORef ( IORef )
import Data.Maybe ( Maybe(..) )
import Data.Semigroup ( Option(..) )
import Data.Monoid ( Endo(..), All(..), Any(..), Sum(..), Product(..), Alt(..), )
import Data.Ord ( Ordering(..), Down(..) )
import Data.Ratio ( Ratio, Rational )
import Data.String ( String )
import Data.Void ( Void )
import System.IO ( IO )
import Data.Proxy ( Proxy(..) )
import Data.Sequence ( Seq )
import Data.Map ( Map )
import Data.Set ( Set )
import Data.Text ( Text )
import Prelude ( Char
, String
, Int
, Integer
, Float
, Double
, Bool (..)
, undefined
, Eq (..)
, Ord (..)
, Enum (..)
, Bounded (..)
, Maybe (..)
, Either (..)
, IO
, (<$>)
, (.)
, ($)
, ($!)
, Num (..)
, Integral (..)
, Fractional (..)
, Floating (..)
, RealFrac (..)
, RealFloat (..)
, fromIntegral
, error
, foldr
, foldl
, foldr1
, id
, map
, subtract
, putStrLn
, putStr
, Show (..)
, print
, fst
, snd
, (++)
, not
, (&&)
, (||)
, curry
, uncurry
, Ordering (..)
, flip
, const
, seq
, reverse
, otherwise
, traverse
, realToFrac
, or
, and
, head
, any
, (^)
, Foldable
, Traversable
)
import Data.Foldable ( foldl'
, foldr'
, fold
, asum
)
import Data.List ( partition
, null
, elem
, notElem
, minimum
, maximum
, length
, all
, take
, drop
, find
, sum
, zip
, zip3
, zipWith
, repeat
, replicate
, iterate
, nub
, filter
, intersperse
, intercalate
, isSuffixOf
, isPrefixOf
, dropWhile
, takeWhile
, unzip
, break
, transpose
, sortBy
, mapAccumL
, mapAccumR
, uncons
)
import Data.Tuple ( swap
)
import Data.Char ( ord
, chr
)
import Data.Maybe ( fromMaybe
, maybe
, listToMaybe
, maybeToList
, catMaybes
)
import Data.Word ( Word32
)
import Data.Ord ( comparing
, Down (..)
)
import Data.Either ( either
)
import Data.Ratio ( Ratio
, (%)
, numerator
, denominator
)
import Text.Read ( readMaybe
)
import Control.Monad ( Functor (..)
, Monad (..)
, MonadPlus (..)
, mapM
, mapM_
, forM
, forM_
, sequence
, sequence_
, (=<<)
, (>=>)
, (<=<)
, forever
, void
, join
, replicateM
, replicateM_
, guard
, when
, unless
, liftM
, liftM2
, liftM3
, liftM4
, liftM5
, filterM
, (<$!>)
)
import Control.Applicative ( Applicative (..)
, Alternative (..)
)
import Foreign.Storable ( Storable )
import GHC.Exts ( Constraint )
import Control.Concurrent ( threadDelay
, forkIO
, forkOS
)
import Control.Concurrent.MVar ( MVar
, newEmptyMVar
, newMVar
, putMVar
, readMVar
, takeMVar
, swapMVar
)
import Control.Exception ( evaluate
, bracket
, assert
)
import Debug.Trace ( trace
, traceId
, traceShowId
, traceShow
, traceStack
, traceShowId
, traceIO
, traceM
, traceShowM
)
import Foreign.ForeignPtr ( ForeignPtr
)
import Data.Monoid ( (<>)
, mconcat
, Monoid (..)
)
import Data.Bifunctor ( bimap )
import Data.Functor ( (<$), ($>) )
import Data.Function ( (&) )
import System.IO ( hFlush
, stdout
)
import Data.Typeable ( Typeable
)
import Control.Arrow ( first
, second
, (***)
, (&&&)
, (>>>)
, (<<<)
)
import Data.Functor.Identity ( Identity (..)
)
import Data.Proxy ( Proxy (..)
)
import Data.Version ( showVersion
)
import Data.List.Extra ( nubOrd
, stripSuffix
)
import Control.Monad.Extra ( whenM
, unlessM
, ifM
, notM
, orM
, andM
, anyM
, allM
)
import Data.Tree ( Tree(..)
)
import Control.Monad.Trans.MultiRWS ( -- MultiRWST (..)
-- , MultiRWSTNull
-- , MultiRWS
-- ,
MonadMultiReader(..)
, MonadMultiWriter(..)
, MonadMultiState(..)
-- , runMultiRWST
-- , runMultiRWSTASW
-- , runMultiRWSTW
-- , runMultiRWSTAW
-- , runMultiRWSTSW
-- , runMultiRWSTNil
-- , runMultiRWSTNil_
-- , withMultiReader
-- , withMultiReader_
-- , withMultiReaders
-- , withMultiReaders_
-- , withMultiWriter
-- , withMultiWriterAW
-- , withMultiWriterWA
-- , withMultiWriterW
-- , withMultiWriters
-- , withMultiWritersAW
-- , withMultiWritersWA
-- , withMultiWritersW
-- , withMultiState
-- , withMultiStateAS
-- , withMultiStateSA
-- , withMultiStateA
-- , withMultiStateS
-- , withMultiState_
-- , withMultiStates
-- , withMultiStatesAS
-- , withMultiStatesSA
-- , withMultiStatesA
-- , withMultiStatesS
-- , withMultiStates_
-- , inflateReader
-- , inflateMultiReader
-- , inflateWriter
-- , inflateMultiWriter
-- , inflateState
-- , inflateMultiState
-- , mapMultiRWST
-- , mGetRawR
-- , mGetRawW
-- , mGetRawS
-- , mPutRawR
-- , mPutRawW
-- , mPutRawS
)
import Control.Monad.Trans.MultiReader ( runMultiReaderTNil
, runMultiReaderTNil_
, MultiReaderT (..)
, MultiReader
, MultiReaderTNull
)
import Data.Text ( Text )
import Control.Monad.IO.Class ( MonadIO (..)
)
import Control.Monad.Trans.Class ( lift
)
import Control.Monad.Trans.Maybe ( MaybeT (..)
)
import Language.Haskell.Brittany.Prelude