!T+o      !" # $ % &' ( ) *+,-./0123456789:; < = >?@A B CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~               !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                               ! " # $ % & ' ( )*+,-./012345678 9:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!!!"""+ Safe%reludeShorter alias for pure ().pass :: Maybe ()Just ();(');(')Unsafe+reludeStricter version of #$R operator. Default Prelude defines this at the toplevel module, so we do as well.const 3 $ Prelude.undefined3const 3 $! Prelude.undefined *** Exception: Prelude.undefinedCallStack (from HasCallStack):B error, called at libraries/base/GHC/Err.hs:79:14 in base:GHC.Err... *^]+ _`ba,-<;:9876543210/.-,. WV/UTSRQP2  356\[ZYX78>?@DE_FaGHIJKLMOhijPdQRSTUVWYZ[\]^klmnopqrstuvwxyz{|}~"$#&%+*)('=>?@HIJKLMNOc@DcGHIJKSTUVW=>?M,3Ohij"$#Rk+*)(' ]YZ&%8*^]+ _`ba-<;:9876543210/.-,E_Fa>2  L. WV/UTSRQP56\[ZYXPdQlmnopqrstuvwxyz{|}~HIJKLMNO7?[\@^0Safe1 C`eA C`eANone2C ! !None;<=FT9rrelude;Type class for types that can be created from one element.  singletonI is lone name for this function. Constructions of different type differ: :[]I for lists, two arguments for Maps. Also some data types are monomorphic.one True :: [Bool][True]one 'a' :: Text"a"&one (3, "hello") :: HashMap Int StringfromList [(3,"hello")]reludeCreate a list, map, Text, etc from a single element.%None9 ! Safe:V<=<=Safe<  reludeRenamed version of &'. BCD BCD Safe<1EFG1EFGSafe?  relude Alias for  fmap . fmap%. Convenient to work with two nested 1s.negate <<$>> Just [1,2,3]Just [-1,-2,-3]   4(Safe?y1EFG SafeF  relude Lifted to  version of . relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .relude Lifted to  version of .    SafeKreludeLifted version of )*.reludeLifted version of )+.reludeLifted version of ),.reludeLifted version of )-. \ is available since base-4.8, but it's more convenient to redefine it instead of using CPP.SafeMreludeLifted version of ./.reludeLifted version of .0.reludeLifted version of .1.reludeLifted version of .2. reludeLifted version of 34.   SafeQ!reludeLifted version of ."reludeLifted version of .#reludeLifted version of .$reludeLifted version of .%reludeLifted version of .&reludeLifted version of .'reludeLifted version of .(reludeLifted version of . !"#$%&'( &'($%!"#5SafeRt%   !"#$%&'( TrustworthySb/     defgijklmnopqrstu/     defgijklmnopqrstuSafeUS&09NbcXfg !z{|}~S&09Nbcz{|}~Xfg !Safef)relude Similar to ~ but with flipped arguments.readMaybe "True" ?: FalseTruereadMaybe "Tru" ?: FalseFalse*reludeSpecialized version of for_ for NC. It's used for code readability. Also helps to avoid space leaks:  Ohttp://www.snoyman.com/blog/2017/01/foldable-mapm-maybe-and-recursive-functionsFoldable.mapM_ space leak.&whenJust Nothing $ \b -> print (not b)*whenJust (Just True) $ \b -> print (not b)False+reludeMonadic version of *.,reludePerforms default ; action if b) is given. Otherwise returns content of c pured to ;.!whenNothing Nothing [True, False] [True,False]%whenNothing (Just True) [True, False][True]-reludePerforms default ; action if b is given. Do nothing for c. Convenient for discarding c content.+whenNothing_ Nothing $ putTextLn "Nothing!"Nothing!/whenNothing_ (Just True) $ putTextLn "Nothing!".reludeMonadic version of ,./reludeMonadic version of /.)*+,-./)*+,-./)0Safer0relude$Shorter and more readable alias for flip runReaderT.1relude$Shorter and more readable alias for flip runReader.2relude$Shorter and more readable alias for flip runStateT.3relude$Shorter and more readable alias for  flip runState.4relude Alias for flip evalStateTF. It's not shorter but sometimes more readable. Done by analogy with using* functions family.5relude Alias for flip evalStateF. It's not shorter but sometimes more readable. Done by analogy with using* functions family.6relude Alias for flip execStateTF. It's not shorter but sometimes more readable. Done by analogy with using* functions family.7relude Alias for flip execStateF. It's not shorter but sometimes more readable. Done by analogy with using* functions family.0123456710547632 Safeu}8relude Extracts B value from N returning # if Nothing.+maybeToMonoid (Just [1,2,3] :: Maybe [Int])[1,2,3]&maybeToMonoid (Nothing :: Maybe [Int])[]-A"B#$%8-B#$%A"8Safe}9reludeLike &6 but runs in  O(n * log n) time and requires 3.ordNub [3, 3, 3, 2, 2, -1, 1] [3,2,-1,1]:reludeLike &6 but runs in O(n * log_16(n)) time and requires .hashNub [3, 3, 3, 2, 2, -1, 1] [3,2,-1,1];reludeLike 9 but also sorts a list.sortNub [3, 3, 3, 2, 2, -1, 1] [-1,1,2,3]<reludeLike :< but has better performance and also doesn't save the order."unstableNub [3, 3, 3, 2, 2, -1, 1] [1,2,3,-1]9:;<:9;< Trustworthy;<=V=relude%Polymorfic over string and lifted to  printing functions.@reludeLifted version of .AreludeSpecialized to  version of > or forcing type inference.BreludeSpecialized to  version of ? or forcing type inference.CreludeSpecialized to  version of > or forcing type inference.DreludeSpecialized to  version of ? or forcing type inference.=>?@ABCD=>?@ABCD Trustworthy ,-16FQV Jrelude Similar to S but data type.Lrelude#Generalized over string version of 78 that leaves warnings.Mrelude that takes  as an argument.Nrelude Version of 79 that leaves warning.Orelude Version of 79 that leaves warning.Prelude Version of 7: that leaves warning.Qrelude Version of 7; that leaves warning and takes .Rrelude Version of 7< that leaves warning and takes .Srelude, that leaves warning in code on every usage. JKLMNOPQRS JKMLQRNOPSSafek4::4Safe;=>?AV \relude'Type class for lazy-strict conversions._relude+Type class for converting other strings to .arelude+Type class for converting other strings to .crelude+Type class for converting other strings to .erelude9Type class for conversion to utf8 representation of text.freludeEncode as utf8 string (usually ).$encodeUtf8 @Text @ByteString "?0B0:"*"\208\191\208\176\209\130\208\176\208\186"greludeDecode from utf8 string.GdecodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186""\1087\1072\1090\1072\1082"RputStrLn $ decodeUtf8 @Text @ByteString "\208\191\208\176\209\130\208\176\208\186"?0B0:hreludeLDecode as utf8 string but returning execption if byte sequence is malformed.CdecodeUtf8 @Text @ByteString "\208\208\176\209\130\208\176\208\186""\65533\1072\1090\1072\1082"IdecodeUtf8Strict @Text @ByteString "\208\208\176\209\130\208\176\208\186"\Left Cannot decode byte '\xd0': Data.Text.Internal.Encoding.decodeUtf8: Invalid UTF-8 streamireludeType synonym for =>.jreludeType synonym for ?@.kreludePolymorhpic version of .readEither @Text @Int "123" Right 123readEither @Text @Int "aa"Left "Prelude.read: no parse"lreludeGeneralized version of &A.\^]_`abcdegfhijklmnjiegfh_`abcd\^]mnklBSafe%4:\^]_`abcdegfhijklmnSafeLreludeExtracts value from f or return given default value.fromLeft 0 (Left 3)3fromLeft 0 (Right 5)0reludeExtracts value from g or return given default value.fromRight 0 (Left 3)0fromRight 0 (Right 5)5reludeMaps left part of X to N.leftToMaybe (Left True) Just TrueleftToMaybe (Right "aba")NothingreludeMaps right part of X to N.rightToMaybe (Left True)NothingrightToMaybe (Right "aba") Just "aba"reludeMaps N to X wrapping default value into f.maybeToRight True (Just "aba") Right "aba"maybeToRight True Nothing Left TruereludeMaps N to X wrapping default value into g.maybeToLeft True (Just "aba") Left "aba"maybeToLeft True Nothing Right TruereludeApplies given action to X content if f. is given and returns the result. In case of g$ the default value will be returned.reludeApplies given action to X content if f is given.reludeMonadic version of .reludeMonadic version of .reludeApplies given action to X content if g. is given and returns the result. In case of f$ the default value will be returned.reludeApplies given action to X content if g is given.reludeMonadic version of .reludeMonadic version of .CSafep&09NbcXfg !z{|}~)*+,-./01234567Saferelude.For safe work with lists using functinons for .viaNonEmpty head [1]Just 1viaNonEmpty head []NothingreludeNDestructuring list into its head and tail if possible. This function is total. uncons []Nothing uncons [1..5]Just (1,[2,3,4,5])7uncons (5 : [1..5]) >>= \(f, l) -> pure $ f == length l Just TruereludePerforms given action over ! list if given list is non empty.+whenNotNull [] $ \(b :| _) -> print (not b)5whenNotNull [False,True] $ \(b :| _) -> print (not b)TruereludeMonadic version of .DSafef3     defgijklmnopqrstuSafe%>?eΗreludeType that represents exceptions used in cases when a particular codepath is not meant to be ever executed, but happens to be executed anyway.reludeaPattern synonym to easy pattern matching on exceptions. So intead of writing something like this: isNonCriticalExc e | Just (_ :: NodeAttackedError) <- fromException e = True | Just DialogUnexpected{} <- fromException e = True | otherwise = False  you can use  pattern synonym: eisNonCriticalExc = case Exc (_ :: NodeAttackedError) -> True -- matching all exceptions of type NodeAttackedError3 Exc DialogUnexpected{} -> True _ -> False +This pattern is bidirectional. You can use Exc e instead of  toException e.reludeHGenerate a pure value which, when forced, will throw the given exceptionrelude_Generate a pure value which, when forced, will synchronously throw the exception wrapped into  data type.  NonereludeLifted alias for  with clearer name.reludeLike  evaluateWNHF but discards value.relude Alias for evaluateWHNF . force with clearer name.relude Alias for evaluateWHNF . rnf . Similar to  but discards resulting value.  Safe#reludeMonadic version of .+whenM (pure False) $ putTextLn "No text :(",whenM (pure True) $ putTextLn "Yes text :)" Yes text :)whenM (Just True) (pure ())Just ()whenM (Just False) (pure ())Just ()whenM Nothing (pure ())NothingreludeMonadic version of .-unlessM (pure False) $ putTextLn "No text :(" No text :(-unlessM (pure True) $ putTextLn "Yes text :)"reludeMonadic version of  if-then-else.@ifM (pure True) (putTextLn "True text") (putTextLn "False text") True textreludeMonadic version of @. Occasionally useful. Here some complex but real-life example: findSomePath :: IO (Maybe FilePath) somePath :: MaybeT IO FilePath somePath = do path <- MaybeT findSomePath guardM $ liftIO $ doesDirectoryExist path return path ESafe߁C`eANone ,-FSTV relude Similar to 1 but takes a function with its arguments flipped."flipfoldl' (/) 5 [2,3] :: Rational15 % 2reludeStricter version of . sum [1..10]55reludeStricter version of .product [1..10]3628800reludeLike  but doesn't work on  and  for performance reasons.elem 'x' ("abc" :: String)False!elem False (one True :: Set Bool) ...D " Do not use 'elem' and 'notElem' methods from 'Foldable' on Set Suggestions: Instead of< elem :: (Foldable t, Eq a) => a -> t a -> Bool use# member :: ??? -- TODO... Instead of? notElem :: (Foldable t, Eq a) => a -> t a -> Bool use& notMember :: ??? -- TODO...reludeLike  but doesn't work on  and  for performance reasons.notElem 'x' ("abc" :: String)True$notElem False (one True :: Set Bool) ...D " Do not use 'elem' and 'notElem' methods from 'Foldable' on Set Suggestions: Instead of< elem :: (Foldable t, Eq a) => a -> t a -> Bool use# member :: ??? -- TODO... Instead of? notElem :: (Foldable t, Eq a) => a -> t a -> Bool use& notMember :: ??? -- TODO...reludeMonadic version of .andM [Just True, Just False] Just FalseandM [Just True] Just True%andM [Just True, Just False, Nothing] Just FalseandM [Just True, Nothing]NothingZandM [putTextLn "1" >> pure True, putTextLn "2" >> pure False, putTextLn "3" >> pure True]12FalsereludeMonadic version of .orM [Just True, Just False] Just TrueorM [Just True, Nothing] Just TrueorM [Nothing, Just True]NothingreludeMonadic version of .,allM (readMaybe >=> pure . even) ["6", "10"] Just True-allM (readMaybe >=> pure . even) ["5", "aba"] Just False.allM (readMaybe >=> pure . even) ["aba", "10"]NothingreludeMonadic version of .,anyM (readMaybe >=> pure . even) ["5", "10"] Just True.anyM (readMaybe >=> pure . even) ["10", "aba"] Just True.anyM (readMaybe >=> pure . even) ["aba", "10"]Nothing  FNoneT+<=NoneFT reludeModifiable Map.reludeVRead-only map or set. Contains polymorhic functions which work for both sets and maps.reludeOperator version of  function.relude Inverse of  function.reludexReturn the value to which the specified key is mapped, or the default value if this map contains no mapping for the key.relude:Converts the structure to the list of the key-value pairs.7toPairs (HashMap.fromList [('a', "xxx"), ('b', "yyy")])[('a',"xxx"),('b',"yyy")]relude/Converts the structure to the list of the keys.4keys (HashMap.fromList [('a', "xxx"), ('b', "yyy")])"ab"relude1Converts the structure to the list of the values.5elems (HashMap.fromList [('a', "xxx"), ('b', "yyy")]) ["xxx","yyy"]reludeDefault value to return.relude Key to searchreludeContainer to search9 G Trustworthyy  !&*^]+ _`ba,-<;:9876543210/.-,. WV/UTSRQP012  3456\[ZYX789:;(')<=>?@A"B#$%C`eDE_FaGHIJKLMNbcOhijPdQRSTUVWXfgYZ[\]^klmnopqrstuvwxyz{|}~      !"$#&%+*)('=>?@ABCDEFGHIJKLMNOcdefgijklmnopqrstuz{|}~     !"#$%&'()*+,-./0123456789:;<=>?@ABCDJKLMNOPQRS\^]_`abcdegfhijklmn NoneFTVrelude<Groups elements using results of the given function as keys.2groupBy even [1..6] :: HashMap Bool (NonEmpty Int)/fromList [(False,5 :| [3,1]),(True,6 :| [4,2])]relude Similar to % but keeps only one element as value.,groupOneBy even [1 .. 6] :: HashMap Bool IntfromList [(False,1),(True,2)]!SafeVi)reludeReturns all values of some * + in ascending order.Edata TrafficLight = Red | Blue | Green deriving (Show, Enum, Bounded)universe :: [TrafficLight][Red,Blue,Green]universe :: [Bool] [False,True]relude;Creates a function that is the inverse of a given function f.>data Color = Red | Green | Blue deriving (Show, Enum, Bounded)0parse = inverseMap show :: String -> Maybe Color parse "Red"Just Red parse "Black"NothingreludeLike b, but doesn't fail on ]. Instead it returns ^. next FalseTrue next TrueFalse succ True3*** Exception: Prelude.Enum.Bool.succ: bad argumentreludeReturns b if given G outside range.safeToEnum @Bool 0 Just FalsesafeToEnum @Bool 1 Just TruesafeToEnum @Bool 2NothingsafeToEnum @Bool (-1)Nothing"Safe*Unsafe+3relude Similar to h but with flipped arguments.hvwxyyxvwhHIJKLMHNOHNPHQRHQSHITHIUHI$KLVHWXHWYHZ[H\]H\^H\_H\`KabKacHWdHIeHIfHIgHIhHijHklHZmHZnHZoHZpHqrHstHsuHsvHIwHIxHIyHIzHI{HI|HI}HI~H\H\KaHHZHZHIHIHWKaHHZHZHHHiHkHIHHHHHHIHIKKKKKHHHHHHIKHZHZKKHHHHHKKKHKHKKKHIHIHZKHHKKKHHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZH\H\HIHIHHHHHHHHHHHHHsHHHHHHHHHHHHH H Hq Hq Hq HqHqHqHqHqHqHqHqHqHHHHHHHHH H!H!H"#H$%H$&H$&H3'H()H(*H+,H+-H./H.0H.1H.2H.3H(4H56H78H9:H9;H9<H9=H9>H9?H9@HABHACHACHDHEHFHGHHHIHJHKHLHMHNHOHPHQHRHSHTHUHVHWHXHYHZ[HZ\HZ\HZ]HZ^HZ^H_`H_aH_bH_cH_cH_dH_eH_eH_fH_gH_gH_hH_iH_iH_jH_kH_kH_lH_mH_mH_nH_oH_oHpHqHrHrHstHsuHsvHswHsxHsyHszHs{Hs|Hs}Hs~HsHsHsHsHsHsHsHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH#H#H#HHHHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZHZH\H\H\H\H\H\HHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHNHHHHHHHHHHQHQHQHHWHWHWHWHWHHIHIHIHIHI'HIHIHIHIHIHIHIHI HI HI HI HI HIHIHIHIHIHIHIHIHIH9<HHH_KaKaKaKaKaKaKa Ka!Ka"Ka#$%>&'(&)*&+,&-.&/012312412512612789:89;<=><=?<@A<@BCDECDFCDGCDHCDICDJCDKCLMCLNCLOCLPCLQ<RS<RS<RT<UV<UV<UW<UX<UY<Z[<Z[<Z\<Z]<Z^<Z_<Z`<Za<Zb<Zcdefg.hg.ig.jg.kglmglngo@gpqgprgpsgptgpu<vw<vx<vy<vz<vz{|}{~             *+,-/0124         89:;<A       !"#$%&'()*+,-./0123456789:;<= > ?!@!A!B!C"D"E"FGHHHHHHHHHHH.H.H.H)-H5H5H5HIHIHIHIHIH3gJ@HKHKHLH7MHHHHN#relude-0.1.1-9yQ3gJsDbIe4KXtPZMGaPtRelude.List.Reexport Relude.BaseRelude.Container.ReexportRelude.Bool.ReexportRelude.FunctionRelude.Monad.ReexportRelude.Functor.ReexportRelude.String.Reexport Relude.MonoidRelude.ApplicativeRelude.Foldable.ReexportRelude.Lifted.ConcurrentRelude.Lifted.IORefRelude.Exception Relude.UnsafeRelude.DeepSeqRelude.Container.OneRelude.Functor.FmapRelude.Lifted.ExitRelude.Lifted.FileRelude.Monad.MaybeRelude.Monad.Trans Relude.Nub Relude.Print Relude.DebugRelude.String.ConversionRelude.Monad.EitherRelude.List.SafeRelude.Bool.GuardRelude.Foldable.FoldRelude.Extra.MapRelude.Extra.GroupRelude.Extra.EnumRelude.Extra.Bifunctor Data.Function$Relude.ContainerPreludeidRelude.Functor System.ExitexitWith exitFailure exitSuccessdie Data.Text appendFilegetLinereadFile writeFile System.IOopenFile Relude.Liftednub Debug.Tracetrace traceShow traceShowMtraceMtraceIdData.ByteString.Lazy ByteStringData.Text.LazyTextshow Relude.String Relude.Monad Relude.List Relude.BoolRelude.FoldableReludebaseGHC.Base++ghc-primGHC.PrimseqGHC.Listfilterzip Data.Tuplefstsnd otherwisemapcoerceGHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=>>fmapreturnControl.Monad.Failfail Data.String fromString fromIntegral realToFrac toInteger toRational Control.MonadguardGHC.ExtsIsListfromList fromListN<>memptymappendmconcatjoin<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadRealRealFracGHC.ShowShowData.Typeable.InternalTypeable MonadFailIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGeneric GHC.TypeNatsKnownNatGHC.OverloadedLabelsIsLabel SemigroupMonoid GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.NaturalNaturalMaybeOrderingRatioRationalIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherType ConstraintNatCmpNat CoercibleGHC.Stack.Types CallStackD#FalseF#NothingJust:%TrueLeftRightLTEQGTGHC.IO.Handle.TypesHandleintegralEnumFromThenTointegralEnumFromTointegralEnumFromThenintegralEnumFromgcdWord'gcdInt'^^%^^^%^numericEnumFromThenTonumericEnumFromTonumericEnumFromThennumericEnumFrom notANumberinfinity ratioPrec1 ratioPrec overflowErrorratioZeroDenominatorError divZeroErrorreduceboundedEnumFromThenboundedEnumFrommaxIntminIntData.Functor.Compose getComposeCompose Data.VoidvacuousabsurdVoidData.Semigroup mtimesDefaultcycle1 WrappedMonoid getOptionOptionsortWithData.Bifunctorsecondfirstbimap BifunctorData.List.NonEmptyinitlasttailheadnonEmptyGHC.ExecutionStackshowStackTrace getStackTraceControl.Monad.IO.ClassliftIOMonadIO fromLabelmfilter<$!>unless replicateM_ replicateM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterM mapAccumR mapAccumLforMsequencemapM sequenceAtraverseControl.Applicativeoptional getZipListZipList Control.Arrow&&&Data.Functor.Identity runIdentityIdentitywithFileGHC.IO.Handle.FDstderrstdin GHC.StackwithFrozenCallStack callStack GHC.Conc.Sync writeTVarreadTVarnewTVarSTMTVarstdout GHC.IORefIORefGHC.IOFilePath GHC.ExceptionprettyCallStack prettySrcLoc SomeExceptiondisplayException fromException toException ExceptionData.Functor.ConstgetConstConstfindallanyorand concatMapconcatasum sequence_ sequenceA_forM_mapM_for_ traverse_foldlMlengthnulltoListfoldl'foldrfoldMapfold Data.MonoidgetFirstFirstgetLastLastData.Semigroup.Internal stimesMonoidstimesIdempotentgetDualDualappEndoEndogetAllAllgetAnyAnygetSumSum getProductProductgetAltAlt someNatValnatValSomeNat Data.OldListunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupgenericReplicategenericSplitAt genericDrop genericTake genericLength transpose intercalate intersperse isPrefixOf Text.Read readMaybereadsisRightisLeftpartitionEithersrightsleftseitherData.Ord comparingDown Data.ProxyProxy GHC.IO.IOMode ReadWriteMode AppendMode WriteModeReadModeIOModeatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtexppi byteSwap64 byteSwap32 byteSwap16 Data.Bitsxor Data.Boolbool&onfix Data.Functorvoid$><$>lcmgcd^^^oddeven denominator numeratordivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsuccGHC.Charchrunzip3unzipzipWithzip3!!reversebreaksplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanrscanl Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeswapuncurrycurryGHC.MVarMVarsubtractsignumabs*+ GHC.Stack.CCScurrentCallStackasTypeOfflip.constordwhen=<<liftA3<**>stimessconcat<$<*liftA2manysome<|>empty Alternativemplusmzero MonadPlus:|NonEmptyString getCallStack HasCallStackstimesIdempotentMonoid/=compare<=&&||not<>maxminbytestring-0.10.8.2Data.ByteString.Internalcontainers-0.5.11.0Data.IntMap.InternalIntMapData.IntSet.InternalIntSetData.Map.InternalMapData.Sequence.InternalSeqData.Set.InternalSetdeepseq-1.4.3.0Control.DeepSeqforce$!!deepseqrnfNFData&hashable-1.2.7.0-Q2TKVDwk4GBEHmizb4teZData.Hashable.Class hashWithSaltHashabletransformers-0.5.5.0Control.Monad.Trans.Classlift MonadTransControl.Monad.Trans.Identity runIdentityT IdentityT mtl-2.2.2Control.Monad.State.Classgetsmodify'modifystateputget MonadStateControl.Monad.Reader.Classasksreaderlocalask MonadReaderControl.Monad.Trans.ExceptExceptT runExceptTControl.Monad.Trans.ReaderReaderT runReaderTReader runReader Control.Monad.Trans.State.StrictStateT runStateTStaterunState evalState execState withState evalStateT execStateT stm-2.4.5.0Control.Concurrent.STM.TVar modifyTVar' text-1.2.3.0unwordsunlineslineswordsData.Text.Encoding decodeUtf8'decodeUtf8WithData.Text.InternalData.Text.Encoding.Error lenientDecode strictDecodeOnError OnDecodeErrorUnicodeExceptionControl.Monad.Trans.MaybeexceptToMaybeTmaybeToExceptT runMaybeTMaybeT3unordered-containers-0.2.9.0-HQtYJEH7265DslRAJ09vVD Data.HashSetHashSetData.HashMap.BaseHashMappass$!OneOneItemone $fOneIntSet $fOneHashSet$fOneSet $fOneIntMap $fOneHashMap$fOneMap$fOneByteString$fOneByteString0 $fOneText $fOneText0$fOneSeq $fOneNonEmpty$fOne[]identity<<$>> newEmptyMVarnewMVarputMVarreadMVarswapMVartakeMVar tryPutMVar tryReadMVar tryTakeMVar atomically newTVarIO readTVarIOnewIORef readIORef writeIORef modifyIORef modifyIORef'atomicModifyIORefatomicModifyIORef'atomicWriteIORef?:whenJust whenJustM whenNothing whenNothing_ whenNothingM whenNothingM_ usingReaderT usingReader usingStateT usingStateevaluatingStateTevaluatingStateexecutingStateTexecutingState maybeToMonoidordNubhashNubsortNub unstableNubPrintputStrputStrLnprintputText putTextLnputLText putLTextLn $fPrint[]$fPrintByteString$fPrintByteString0 $fPrintText $fPrintText0 Undefinederror traceShowId undefined $fEqUndefined$fOrdUndefined$fShowUndefined$fReadUndefined$fEnumUndefined$fBoundedUndefined$fDataUndefined$fGenericUndefined LazyStricttoLazytoStrictToStringtoStringToLTexttoLTextToTexttoText ConvertUtf8 encodeUtf8 decodeUtf8decodeUtf8Strict LByteStringLText readEitherfromLazy fromStrict$fConvertUtf8TextByteString$fConvertUtf8TextByteString0$fConvertUtf8[]ByteString$fConvertUtf8TextByteString1$fConvertUtf8TextByteString2$fConvertUtf8[]ByteString0 $fToTextText $fToTextText0 $fToText[] $fToLTextText$fToLTextText0 $fToLText[]$fToStringText$fToStringText0 $fToString[]$fLazyStrictTextText $fLazyStrictByteStringByteStringfromLeft fromRight leftToMaybe rightToMaybe maybeToRight maybeToLeftwhenLeft whenLeft_ whenLeftM whenLeftM_ whenRight whenRight_ whenRightM whenRightM_$fMonadFailEither viaNonEmptyuncons whenNotNull whenNotNullMBugExcbug$fExceptionBug $fShowBug evaluateWHNF evaluateWHNF_ evaluateNF evaluateNF_whenMunlessMifMguardMsafeHead flipfoldl'foldMapAfoldMapMsumproductelemnotElemandMorMallManyM DynamicMapinsert insertWithdeletealter StaticMapKeyValsizelookupmember!? notMember lookupDefaulttoPairskeyselems$fStaticMapIntSet$fStaticMapHashSet$fStaticMapSet$fStaticMapIntMap$fStaticMapHashMap$fStaticMapMap$fDynamicMapIntMap$fDynamicMapHashMap$fDynamicMapMapgroupBy groupOneByuniverse inverseMapnext safeToEnumbimapFfirstFsecondFatControl.Concurrent.MVar Data.IORefData.Text.Internal.LazyGHC.Err impureThrowevaluate