Refactor prelude.inc/Prelude to reduce imports
parent
ebf84a03e9
commit
3ac8cccb0f
|
@ -54,6 +54,7 @@ library {
|
||||||
Language.Haskell.Brittany
|
Language.Haskell.Brittany
|
||||||
Language.Haskell.Brittany.Internal
|
Language.Haskell.Brittany.Internal
|
||||||
Language.Haskell.Brittany.Internal.Prelude
|
Language.Haskell.Brittany.Internal.Prelude
|
||||||
|
Language.Haskell.Brittany.Internal.PreludeUtils
|
||||||
Language.Haskell.Brittany.Internal.Types
|
Language.Haskell.Brittany.Internal.Types
|
||||||
Language.Haskell.Brittany.Internal.Utils
|
Language.Haskell.Brittany.Internal.Utils
|
||||||
Language.Haskell.Brittany.Internal.Config
|
Language.Haskell.Brittany.Internal.Config
|
||||||
|
|
|
@ -1,68 +1,378 @@
|
||||||
module Language.Haskell.Brittany.Internal.Prelude
|
module Language.Haskell.Brittany.Internal.Prelude (module E)
|
||||||
where
|
where
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
import Prelude
|
import Data.Functor.Identity as E ( Identity(..) )
|
||||||
import qualified Data.Strict.Maybe as Strict
|
import Control.Concurrent.Chan as E ( Chan )
|
||||||
import Debug.Trace
|
import Control.Concurrent.MVar as E ( MVar )
|
||||||
import Control.Monad
|
import Data.Int as E ( Int )
|
||||||
import System.IO
|
import Data.Word as E ( Word )
|
||||||
|
import Prelude as E ( Integer
|
||||||
|
, Float
|
||||||
|
, Double
|
||||||
|
)
|
||||||
|
import Control.Monad.ST as E ( ST )
|
||||||
|
import Data.Bool as E ( Bool(..) )
|
||||||
|
import Data.Char as E ( Char )
|
||||||
|
import Data.Either as E ( Either(..) )
|
||||||
|
import Data.IORef as E ( IORef )
|
||||||
|
import Data.Maybe as E ( Maybe(..) )
|
||||||
|
import Data.Semigroup as E ( Option(..) )
|
||||||
|
import Data.Monoid as E ( Endo(..)
|
||||||
|
, All(..)
|
||||||
|
, Any(..)
|
||||||
|
, Sum(..)
|
||||||
|
, Product(..)
|
||||||
|
, Alt(..)
|
||||||
|
)
|
||||||
|
import Data.Ord as E ( Ordering(..)
|
||||||
|
, Down(..)
|
||||||
|
)
|
||||||
|
import Data.Ratio as E ( Ratio
|
||||||
|
, Rational
|
||||||
|
)
|
||||||
|
import Data.String as E ( String )
|
||||||
|
import Data.Void as E ( Void )
|
||||||
|
import System.IO as E ( IO )
|
||||||
|
import Data.Proxy as E ( Proxy(..) )
|
||||||
|
import Data.Sequence as E ( Seq )
|
||||||
|
|
||||||
import Control.DeepSeq ( NFData, force )
|
import Data.Map as E ( Map )
|
||||||
import Control.Exception.Base ( evaluate )
|
import Data.Set as E ( Set )
|
||||||
|
|
||||||
import Control.Applicative
|
import Data.Text as E ( Text )
|
||||||
|
|
||||||
|
import Prelude as E ( 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.Function as E ( fix
|
||||||
|
)
|
||||||
|
|
||||||
instance Applicative Strict.Maybe where
|
import Data.Foldable as E ( foldl'
|
||||||
pure = Strict.Just
|
, foldr'
|
||||||
Strict.Just f <*> Strict.Just x = Strict.Just (f x)
|
, fold
|
||||||
_ <*> _ = Strict.Nothing
|
, asum
|
||||||
|
)
|
||||||
|
|
||||||
instance Monad Strict.Maybe where
|
import Data.List as E ( partition
|
||||||
return = Strict.Just
|
, null
|
||||||
Strict.Nothing >>= _ = Strict.Nothing
|
, elem
|
||||||
Strict.Just x >>= f = f x
|
, 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
|
||||||
|
)
|
||||||
|
|
||||||
instance Alternative Strict.Maybe where
|
import Data.List.NonEmpty as E ( NonEmpty(..)
|
||||||
empty = Strict.Nothing
|
, nonEmpty
|
||||||
x <|> Strict.Nothing = x
|
)
|
||||||
_ <|> x = x
|
|
||||||
|
|
||||||
traceFunctionWith
|
import Data.Tuple as E ( swap
|
||||||
:: String -> (a -> String) -> (b -> String) -> (a -> b) -> (a -> b)
|
)
|
||||||
traceFunctionWith name s1 s2 f x =
|
|
||||||
trace traceStr y
|
|
||||||
where
|
|
||||||
y = f x
|
|
||||||
traceStr = name ++ "\nBEFORE:\n" ++ s1 x ++ "\nAFTER:\n" ++ s2 y
|
|
||||||
|
|
||||||
(<&!>) :: Monad m => m a -> (a -> b) -> m b
|
import Data.Char as E ( ord
|
||||||
(<&!>) = flip (<$!>)
|
, chr
|
||||||
|
)
|
||||||
|
|
||||||
putStrErrLn :: String -> IO ()
|
import Data.Maybe as E ( fromMaybe
|
||||||
putStrErrLn s = hPutStrLn stderr s
|
, maybe
|
||||||
|
, listToMaybe
|
||||||
|
, maybeToList
|
||||||
|
, catMaybes
|
||||||
|
)
|
||||||
|
|
||||||
printErr :: Show a => a -> IO ()
|
import Data.Word as E ( Word32
|
||||||
printErr = putStrErrLn . show
|
)
|
||||||
|
|
||||||
errorIf :: Bool -> a -> a
|
import Data.Ord as E ( comparing
|
||||||
errorIf False = id
|
, Down (..)
|
||||||
errorIf True = error "errorIf"
|
)
|
||||||
|
|
||||||
errorIfNote :: Maybe String -> a -> a
|
import Data.Either as E ( either
|
||||||
errorIfNote Nothing = id
|
)
|
||||||
errorIfNote (Just x) = error x
|
|
||||||
|
|
||||||
(<&>) :: Functor f => f a -> (a -> b) -> f b
|
import Data.Ratio as E ( Ratio
|
||||||
(<&>) = flip fmap
|
, (%)
|
||||||
infixl 4 <&>
|
, numerator
|
||||||
|
, denominator
|
||||||
|
)
|
||||||
|
|
||||||
(.>) :: (a -> b) -> (b -> c) -> (a -> c)
|
import Text.Read as E ( readMaybe
|
||||||
f .> g = g . f
|
)
|
||||||
infixl 9 .>
|
|
||||||
|
import Control.Monad as E ( 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 as E ( Applicative (..)
|
||||||
|
, Alternative (..)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Foreign.Storable as E ( Storable )
|
||||||
|
import GHC.Exts as E ( Constraint )
|
||||||
|
|
||||||
|
import Control.Concurrent as E ( threadDelay
|
||||||
|
, forkIO
|
||||||
|
, forkOS
|
||||||
|
)
|
||||||
|
|
||||||
|
import Control.Concurrent.MVar as E ( MVar
|
||||||
|
, newEmptyMVar
|
||||||
|
, newMVar
|
||||||
|
, putMVar
|
||||||
|
, readMVar
|
||||||
|
, takeMVar
|
||||||
|
, swapMVar
|
||||||
|
)
|
||||||
|
|
||||||
|
import Control.Exception as E ( evaluate
|
||||||
|
, bracket
|
||||||
|
, assert
|
||||||
|
)
|
||||||
|
|
||||||
|
import Debug.Trace as E ( trace
|
||||||
|
, traceId
|
||||||
|
, traceShowId
|
||||||
|
, traceShow
|
||||||
|
, traceStack
|
||||||
|
, traceShowId
|
||||||
|
, traceIO
|
||||||
|
, traceM
|
||||||
|
, traceShowM
|
||||||
|
)
|
||||||
|
|
||||||
|
import Foreign.ForeignPtr as E ( ForeignPtr
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Monoid as E ( (<>)
|
||||||
|
, mconcat
|
||||||
|
, Monoid (..)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Bifunctor as E ( bimap )
|
||||||
|
import Data.Functor as E ( (<$), ($>) )
|
||||||
|
import Data.Function as E ( (&) )
|
||||||
|
import System.IO as E ( hFlush
|
||||||
|
, stdout
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Typeable as E ( Typeable
|
||||||
|
)
|
||||||
|
|
||||||
|
import Control.Arrow as E ( first
|
||||||
|
, second
|
||||||
|
, (***)
|
||||||
|
, (&&&)
|
||||||
|
, (>>>)
|
||||||
|
, (<<<)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Functor.Identity as E ( Identity (..)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Proxy as E ( Proxy (..)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Version as E ( showVersion
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.List.Extra as E ( nubOrd
|
||||||
|
, stripSuffix
|
||||||
|
)
|
||||||
|
import Control.Monad.Extra as E ( whenM
|
||||||
|
, unlessM
|
||||||
|
, ifM
|
||||||
|
, notM
|
||||||
|
, orM
|
||||||
|
, andM
|
||||||
|
, anyM
|
||||||
|
, allM
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Tree as E ( Tree(..)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Control.Monad.Trans.MultiRWS as E ( -- 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 as E ( Text )
|
||||||
|
|
||||||
|
import Control.Monad.IO.Class as E ( MonadIO (..)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Control.Monad.Trans.Class as E ( lift
|
||||||
|
)
|
||||||
|
import Control.Monad.Trans.Maybe as E ( MaybeT (..)
|
||||||
|
)
|
||||||
|
|
||||||
|
import Data.Data as E ( toConstr
|
||||||
|
)
|
||||||
|
|
||||||
evaluateDeep :: NFData a => a -> IO a
|
|
||||||
evaluateDeep = evaluate . force
|
|
||||||
|
|
|
@ -0,0 +1,68 @@
|
||||||
|
module Language.Haskell.Brittany.Internal.PreludeUtils
|
||||||
|
where
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
import Prelude
|
||||||
|
import qualified Data.Strict.Maybe as Strict
|
||||||
|
import Debug.Trace
|
||||||
|
import Control.Monad
|
||||||
|
import System.IO
|
||||||
|
|
||||||
|
import Control.DeepSeq ( NFData, force )
|
||||||
|
import Control.Exception.Base ( evaluate )
|
||||||
|
|
||||||
|
import Control.Applicative
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
instance Applicative Strict.Maybe where
|
||||||
|
pure = Strict.Just
|
||||||
|
Strict.Just f <*> Strict.Just x = Strict.Just (f x)
|
||||||
|
_ <*> _ = Strict.Nothing
|
||||||
|
|
||||||
|
instance Monad Strict.Maybe where
|
||||||
|
return = Strict.Just
|
||||||
|
Strict.Nothing >>= _ = Strict.Nothing
|
||||||
|
Strict.Just x >>= f = f x
|
||||||
|
|
||||||
|
instance Alternative Strict.Maybe where
|
||||||
|
empty = Strict.Nothing
|
||||||
|
x <|> Strict.Nothing = x
|
||||||
|
_ <|> x = x
|
||||||
|
|
||||||
|
traceFunctionWith
|
||||||
|
:: String -> (a -> String) -> (b -> String) -> (a -> b) -> (a -> b)
|
||||||
|
traceFunctionWith name s1 s2 f x =
|
||||||
|
trace traceStr y
|
||||||
|
where
|
||||||
|
y = f x
|
||||||
|
traceStr = name ++ "\nBEFORE:\n" ++ s1 x ++ "\nAFTER:\n" ++ s2 y
|
||||||
|
|
||||||
|
(<&!>) :: Monad m => m a -> (a -> b) -> m b
|
||||||
|
(<&!>) = flip (<$!>)
|
||||||
|
|
||||||
|
putStrErrLn :: String -> IO ()
|
||||||
|
putStrErrLn s = hPutStrLn stderr s
|
||||||
|
|
||||||
|
printErr :: Show a => a -> IO ()
|
||||||
|
printErr = putStrErrLn . show
|
||||||
|
|
||||||
|
errorIf :: Bool -> a -> a
|
||||||
|
errorIf False = id
|
||||||
|
errorIf True = error "errorIf"
|
||||||
|
|
||||||
|
errorIfNote :: Maybe String -> a -> a
|
||||||
|
errorIfNote Nothing = id
|
||||||
|
errorIfNote (Just x) = error x
|
||||||
|
|
||||||
|
(<&>) :: Functor f => f a -> (a -> b) -> f b
|
||||||
|
(<&>) = flip fmap
|
||||||
|
infixl 4 <&>
|
||||||
|
|
||||||
|
(.>) :: (a -> b) -> (b -> c) -> (a -> c)
|
||||||
|
f .> g = g . f
|
||||||
|
infixl 9 .>
|
||||||
|
|
||||||
|
evaluateDeep :: NFData a => a -> IO a
|
||||||
|
evaluateDeep = evaluate . force
|
|
@ -433,364 +433,6 @@ import qualified Data.Strict.Maybe as Strict
|
||||||
|
|
||||||
import qualified Safe as Safe
|
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.Function ( fix
|
|
||||||
)
|
|
||||||
|
|
||||||
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.List.NonEmpty ( NonEmpty(..)
|
|
||||||
, nonEmpty
|
|
||||||
)
|
|
||||||
|
|
||||||
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.Internal.Prelude
|
import Language.Haskell.Brittany.Internal.Prelude
|
||||||
|
import Language.Haskell.Brittany.Internal.PreludeUtils
|
||||||
import Data.Data ( toConstr
|
|
||||||
)
|
|
||||||
|
|
Loading…
Reference in New Issue