{-# LANGUAGE CPP #-}
#ifdef MIN_VERSION_GLASGOW_HASKELL
#if MIN_VERSION_GLASGOW_HASKELL(8,6,1,0)
{-# LANGUAGE NoStarIsType #-}
#endif
#endif
module Prologue (module Prologue, module X) where
import Prologue.OrphanInstances()
import Prelude as X ( until, asTypeOf, error, errorWithoutStackTrace, undefined
, seq, ($!)
, map, filter, null, length, (!!), reverse
, scanl, scanl1, scanr, scanr1
, iterate, repeat, cycle
, take, drop, takeWhile, dropWhile, span, break, splitAt
, notElem, lookup
, zip, zip3, zipWith, zipWith3, unzip, unzip3
, lines, words, unwords
, ReadS, Read (readsPrec, readList), reads, readParen, lex
)
import Prologue.Control.DeepSeq as X
import Prologue.Data.Basic as X
import Prologue.Data.Default as X
import Prologue.Data.Default1 as X
import Prologue.Data.Either as X
import Prologue.Data.Maybe as X
import Prologue.Data.Num as X
import Prologue.Data.Show as X
import Prologue.Data.Tuple as X
import Data.Function as X (id, const, flip, ($), (&), on)
import Data.Text as X (Text)
import Data.Data as X (Data)
import Data.List.NonEmpty as X (NonEmpty ((:|)))
import GHC.Generics as X (Generic)
import GHC.Enum as X ( Enum (succ, pred, toEnum, fromEnum, enumFrom, enumFromThen, enumFromTo, enumFromThenTo)
, Bounded (minBound, maxBound)
)
import Text.Read as X (readPrec)
import Prologue.Text.Show as X
import Prologue.Text.Show.Styled as X
import Text.Show.Functions as X ()
import Data.Void as X (Void, absurd)
import Prologue.Control.Monad as X
import Prologue.Control.Monad.IO as X
import Prologue.Control.Monad.Primitive as X
import Control.Applicative as X ( Applicative, pure, (<*>), (*>), (<*), (<$>), (<$), (<**>), liftA, liftA2, liftA3, optional
, Alternative, empty, (<|>), some, many
, ZipList
)
import Control.Monad.Fix as X (MonadFix, mfix, fix)
import Prologue.Control.Monad.Trans as X
import Control.Monad.Identity as X (Identity, runIdentity)
import Control.Monad.Trans.Identity as X (IdentityT, runIdentityT)
import Control.Comonad as X (Comonad, extract, duplicate, extend, (=>=), (=<=), (<<=), (=>>))
import Control.Comonad as X (ComonadApply, (<@>), (<@), (@>), (<@@>), liftW2, liftW3)
import Prologue.Data.Foldable as X
import Prologue.Data.Traversable as X
import Prologue.Data.Bifunctor as X
import Prologue.Data.Ix as X
import Data.Functor as X (Functor, fmap, (<$), ($>), (<$>))
import Data.Functor.Utils as X
import Data.Functor.Classes as X (Eq1, eq1, Ord1, compare1, Read1, readsPrec1, Show1, showsPrec1)
import Data.Functor.Foldable as X (Fix(Fix))
import Data.Functor.Identity as X (Identity(Identity), runIdentity)
import Data.String.Class as X (IsString (fromString), ToString (toString))
import Data.Monoids as X
import Prologue.Data.Pointed as X
import GHC.OverloadedLabels as X (IsLabel, fromLabel)
import Text.Show.Deriving as X (deriveShow1, deriveShow2)
import Text.Read.Deriving as X (deriveRead1, deriveRead2)
import Data.Eq.Deriving as X (deriveEq1, deriveEq2)
import Data.Ord.Deriving as X (deriveOrd1, deriveOrd2)
import Control.Exception.Base as X (assert)
import Control.Monad.Fail as X (MonadFail, fail)
import Control.Exception as X (Exception, SomeException, toException, fromException, displayException)
import Control.Monad.Catch as X ( MonadThrow, throwM
, MonadCatch, catch, catchAll, catchIOError, catchJust, catchIf
, MonadMask, mask, uninterruptibleMask, mask_, uninterruptibleMask_
)
import Data.Impossible as X
import Prologue.Control.Error as X
import Data.Coerce as X (Coercible, coerce)
import Data.Convert as X
import Data.Item as X
import Data.List.Class as X
import GHC.Exts as X (lazy, inline, oneShot)
import Data.Constraints as X (Constraints)
import Data.Type.Equality as X ((:~:), type(==), TestEquality, testEquality)
import Prologue.Type.Reflection as X
import Debug.Trace as X (trace, traceShow)
import GHC.Exts as X (breakpoint, breakpointCond)
import GHC.Stack as X ( CallStack, HasCallStack, callStack, emptyCallStack, freezeCallStack, getCallStack, popCallStack
, prettyCallStack, pushCallStack, withFrozenCallStack, currentCallStack)
import Type.Error as X (TypeError, ErrorMessage(ShowType, (:<>:), (:$$:)), ErrMsg, TypeErrorIf, TypeAssert)
import Prologue.Debug.Placeholders as X
import Prologue.Data.String.QQ as X (qqStr, qqRawStr, qqTxt)
import GHC.TypeLits as X (Nat, Symbol, type (-), type (+), type (*), type (^), CmpNat, CmpSymbol)
import Type.Known as X (KnownType, KnownTypeVal, fromType, fromType', KnownNat, KnownSymbol)
import Type.Show as X
import Data.Kind as X (Type, Constraint)
import Unsafe.Coerce as X (unsafeCoerce)
import Control.Lens as X (Lens, Lens', Iso, Iso', Traversal, Traversal', At, Ixed, Index, IxValue, ix, iso, at, from, lens, over, both, _1, _2, _3, _4, _5, _6, _7, _8, _9)
import Control.Lens as X (view, set)
import Control.Lens as X (_1, _2, _3)
import Control.Lens as X ((^.), (.~), (%~), (^?), (<&>))
import Control.Lens.Utils.Wrapped as X (wrap, unwrap, wrapped, wrapped')
import Control.Lens.Utils.TH as X (makeLenses, makeClassy)
import Control.Lens.At as X ()
import Control.Lens.Cons as X ()
import Control.Lens.Each as X ()
import Control.Lens.Empty as X ()
import Control.Lens.Equality as X ()
import Control.Lens.Fold as X ()
import Control.Lens.Getter as X ()
import Control.Lens.Indexed as X ()
import Control.Lens.Iso as X ()
import Control.Lens.Lens as X ()
import Control.Lens.Level as X ()
import Control.Lens.Prism as X ()
import Control.Lens.Reified as X ()
import Control.Lens.Review as X ()
import Control.Lens.Setter as X ()
import Control.Lens.TH as X ()
import Control.Lens.Traversal as X ()
import Control.Lens.Tuple as X ()
import Control.Lens.Type as X ()
import Control.Lens.Wrapped as X (Wrapped, Unwrapped, _Wrapped, _Unwrapped, _Wrapping, _Unwrapping, _Wrapped', _Unwrapped', _Wrapping', _Unwrapping', Rewrapped, ala, alaf)
import Control.Lens.Zoom as X ()
import Control.Concurrent as X (ThreadId, myThreadId, forkIO, forkFinally, killThread)