!^K      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ(c) Daniel Mendler 2020MITmail@daniel-mendler.de experimentalportableSafe8@AB(c) Daniel Mendler 2017MITmail@daniel-mendler.de experimentalportableSafe 4567=>?@A+ intro9Newtype wrapper for a string which was decoded leniently.#intro,Encode and decode strings as a byte sequence & . $ "a Just % . $ "a K $intro"Encode a string as a byte sequence%intro!Lenient decoding of byte sequenceYLenient means that invalid characters are replaced by the Unicode replacement character '\FFFD'.&introDecode byte sequence&If the decoding fails, return Nothing.'intro+Conversion of strings to other string types (( :: b -> a) . (( :: a -> b) "a (K :: a -> a) (( :: b -> F a) . (( :: a -> b) "a (Just :: a -> F a) (( :: b ->   a) . (( :: a -> b) "a (  :: a ->   a) (intro'Convert a string to another string type  !"#$&%'((c) Daniel Mendler 2016-2017MITmail@daniel-mendler.de experimentalportable Trustworthy,HID)introThe )u function outputs the trace message given as its first argument, before returning the second argument as its result.'For example, this returns the value of f x but first outputs the message. -trace ("calling f with x = " ++ show x) (f x)The ) function should only be used for debugging, or for monitoring execution. The function is not referentially transparent: its type indicates that it is a pure function but it has the side effect of outputting the trace message.*introLike )$ but returning unit in an arbitrary 44 context. Allows for convenient use in do-notation.Note that the application of * is not an action in the 4 context, as - is in the I type. While the fresh bindings in the following example will force the *+ expressions to be reduced every time the do-block is executed, traceM "not crashed"_ would only be reduced once, and the message would only be printed once. If your monad is in , traceIO may be a better option. T... = do x <- ... traceM $ "x: " ++ show x y <- ... traceM $ "y: " ++ show y+introLike ) , but uses show$ on the argument to convert it to a String.This makes it convenient for printing the values of interesting variables or expressions inside a function. For example here we print the value of the variables x and z: Af x y = traceShow (x, z) $ result where z = ... ...,introLike * , but uses show$ on the argument to convert it to a String. D... = do x <- ... traceShowM $ x y <- ... traceShowM $ x + y-introThe -s function outputs the trace message from the IO monad. This sequences the output with respect to other IO actions..introLike +6 but returns the shown value instead of a third value./introLike )2 but returns the message instead of a third value.pLP|)*+,-./(c) Daniel Mendler 2016-2017MITmail@daniel-mendler.de experimentalportableSafe>HV}0introAlias for lazy M1introAlias for lazy N2intro Convert from 5 to an  type.3introConvert between two different 2 types. This function can be used instead of the L& function originally provided by the  class.4introThe 4 function extracts a list of Item a from the structure a.. It should satisfy fromList . asList = id.5introA synonym for O. map = O6intro7Convert a value to a readable string type supported by ' using the / instance.7introConvert a value to a readable  using the / instance.8introConvert a value to a readable { using the / instance.9introParse a string type using the +: instance. Succeeds if there is exactly one valid result.:introThe : function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class /; :2 converts values to strings for output using the 6 operation and adds a newline.aFor example, a program to print the first 20 integers and their powers of 2 could be written as: (main = print ([(n, 2^n) | n <- [0..19]])Note!: This function is lifted to the  class.;introWrite a strict  to the standard output device.Note!: This function is lifted to the  class.<intro The same as ;, but adds a newline character.Note!: This function is lifted to the  class.=intro0Write a character to the standard output device.Note!: This function is lifted to the  class.>intro$Read an entire file strictly into a .Note!: This function is lifted to the  class.?introWrite a  to a file.Note!: This function is lifted to the  class.@intro Append a  to a file.Note!: This function is lifted to the  class.Aintro$Read an entire file strictly into a 3 using UTF-8 encoding. The decoding is done using %H. Invalid characters are replaced by the Unicode replacement character '\FFFD'.Note!: This function is lifted to the  class.BintroWrite a  to a file using UTF-8 encoding.Note!: This function is lifted to the  class.Cintro Append a  to a file using UTF-8 encoding.Note!: This function is lifted to the  class.Dintro1Throw an undefined error. Use only for debugging.Eintro lifted to 4FintroECompose functions with one argument with function with two arguments.f .: g = \x y -> f (g x y).GintroAn infix form of Z with arguments flipped.Hintro() lifted to an 4. skip =  ()IintrouThrow an unhandled error to terminate the program in case of a logic error at runtime. Use this function instead of P". A stack trace will be provided.0In general, prefer total functions. You can use F, N,  or  for error handling.JintroMonad fail function from the 2 class.When a value is bound in do1-notation, the pattern on the left hand side of <-K might not match. In this case, this class provides a function to recover.A Monad without a  MonadFail instance may only be used in conjunction with pattern that always match, such as newtypes, tuples, data types with only a single data constructor, and irrefutable patterns (~pat). Instances of  MonadFail# should satisfy the following law: fail s should be a left zero for >>=, fail s >>= f = fail s If your Monad is also  MonadPlus, a popular definition is fail _ = mzero Kp!BA"C # }$%;:&987654'(q)edcb*~+,-     .@?>=</01234s r56789po:;QT<=>?@ABCDEFRSGWYXHIJKLMNUVOPZ[\_]^`cbafedihglkjonmqrtsuvwxy|z{~}#"! '&%$()*+,-./0123DEFGHIJKLMNOPQRSTUVWXYZ[\]^_`afghijklmnwuvtxzy{|      !"#$&%'()*+,-./0123456789:;<=>?@ABCDEFGHIJKjih)+*Fgf`;QT(FRSYZG\[X]p432KNPUTISRJWVLMOQEDHGFzy`_^NUV<{103'(#$&% !"DE?@ABCIJKLM>=)edcba1,&98765432%;:0$.@?>=<-     #"! '&%$/678+9# }*~GWYX"C !BA9poihglkjcbafedonm:(q-/.5,_]^\[Z564 rnsmHEwuvt'1lk~}|z{xywuvtsqrx     780OPH:=;<>?@ABC|2JID)-/*+.,E6F8G1Q     !"#$%&'()*)+,-./0123456789:;<=>?@A7BCDEFG HIJ"KLMNOPQRQSTUVWVXVYVZV[\]\^\_\`abcdefgVhViVjklkmknkopqVrVsVtfufvVwpxpyVzV{V|}~}}}}})''''''OOOOOMMMMMMMMMMMMMMMMMMMMMMMMppppp p p p    777777777 7!7"7#7$7%7&7'7(7)7*7+7,7-7.7/7071727374757677898:8;8<8=8>8?8@8A8B8C8D8E8F8G8H8I8J8K8L8M8NOPQRQSQTUVUWUXUYZ[\]^_`abcdefghijklm n o p q r s t u v w x y z { | } ~             !"#$%&'()'(*'(+'(,'(-'(.'(/'(0'(1'(2'(3'(4'(5'(6'(7'(8'9:'9;'9<'9='9>'9?'9@'9A'9B'9C'9D'9EFGHIJIKILIMINIOIPIQIRSTSUSVSWSXSYSZS[S\S]S^S_`a`b`c`cdefdghijklmmnopqrstuvwxyz{|}~)FH$intro-0.9.0.0-A5KVa8J5mGb2VUHMWncyfOIntroIntro.ConvertIntegralIntro.ConvertStringIntro.Trustworthyghc-primGHC.PrimseqbaseGHC.Listfilterzip Data.TuplefstsndGHC.Base otherwise$GHC.Num-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=Control.Monad.Fixmfix Data.String fromString realToFrac toInteger toRational Control.MonadguardGHC.ExtsIsListfromList<>memptymappendmconcatjoin<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowData.Typeable.InternalTypeableMonadFixControl.Monad.Fail MonadFailIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGenericGeneric1 SemigroupMonoid GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.NaturalNatural GHC.MaybeMaybeOrderingIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherType ConstraintFalseNothingJustTrueLeftRightLTEQGTData.Functor.Contravariant>$$<>$<$<>$ contramap Contravariant Data.VoidVoidData.SemigroupgetMinMingetMaxMaxgetFirstFirstgetLastLast getOptionOptionItemData.Bitraversablebifor bisequenceA bitraverse BitraversableData.Bifoldable bisequenceA_bifor_ bitraverse_bifoldl'bifoldr'bifoldr bifoldMap BifoldableData.Bifunctorsecondfirstbimap BifunctorData.Functor.ClassesEq1Ord1Read1Show1Eq2Ord2Read2Show2Data.List.NonEmptycyclescanr1scanl1some1initlasttailheadControl.Monad.IO.ClassliftIOMonadIO<$!>unless replicateM_ replicateM<=<>=> mapAccumR mapAccumLfor sequenceAtraverseControl.Applicativeoptional getZipListZipListData.Functor.Identity runIdentityIdentityGHC.IOFilePathData.Functor.ConstgetConstConstfindnotElemallanyorand concatMapasum sequenceA_for_ traverse_foldlMfoldrMproductsumelemlengthnulltoListfoldl'foldr'foldrfoldMapfoldData.Semigroup.InternalgetDualDualappEndoEndogetAllAllgetAnyAnygetAltAlt Data.OldListunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupBygroup transpose intercalate intersperse isSuffixOf isPrefixOf dropWhileEnd fromRightfromLeftisRightisLeftpartitionEithersrightsleftseitherData.Ord comparingDown Data.ProxyProxyControl.Category>>><<<.idCategoryatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadix Data.BitstoIntegralSizedpopCountrotateRrotateLisSignedtestBit complementBitclearBitsetBitbitzeroBitsrotateshift complementxor.|..&.BitscountTrailingZeroscountLeadingZeros finiteBitSize FiniteBits Data.Boolbool Data.Function&onfix Data.Functorvoid$><&><$>^^^oddevendivModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumunzip3unzipzipWith3zipWithzip3lookupreversebreakspansplitAtdroptake dropWhile takeWhile replicaterepeatiterate'iteratescanrscanl Data.MaybemapMaybe catMaybes fromMaybe isNothingisJustmaybeswapuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flipconstwhen=<<liftA3<**>stimessconcat<$<*liftA2many<|>empty Alternative MonadPlus:|NonEmptyStringGHC.Stack.Types HasCallStack/=<=compare&&||not<>maxminbytestring-0.10.8.2Data.ByteString.Short.InternalShortByteStringData.ByteString.Internal ByteStringcontainers-0.6.0.1Data.IntMap.InternalIntMapData.IntSet.InternalIntSetData.Map.InternalMapData.Sequence.InternalSeqData.Set.InternalSet"extra-1.7.7-F3Dk3KAp6xd72FGPHXHENcControl.Monad.ExtraandMorMallManyM&&^||^ifMunlessMwhenM concatMapMData.Either.Extra eitherToMaybe maybeToEitherData.List.ExtranubOrdBynubOrdOnnubOrdsplitsplitOn breakOnEndbreakOnspanEnd groupSortBy groupSortOn groupSortgroupOn takeWhileEnddropEndtakeEnd'hashable-1.3.0.0-1RsrIcitxVDKffGN1TuMlmData.Hashable.Classhash hashWithSaltHashable Hashable1 Hashable2+transformers-0.5.6.2-I9SzqoyagSNIbUNkJkeRZ3Control.Monad.Trans.Classlift MonadTrans mtl-2.2.2-DPcvGa47JlhLWatXOCoVpVControl.Monad.RWS.ClassMonadRWSControl.Monad.Writer.Classpasslistentellwriter MonadWriterControl.Monad.State.Classgetsmodify'modifystateputget MonadStateControl.Monad.Reader.Classasksreaderlocalask MonadReaderControl.Monad.Error.Class catchError throwError MonadErrorControl.Monad.Trans.ExceptExceptTExcept runExcept mapExcept withExcept runExceptT mapExceptT withExceptTControl.Monad.Trans.ReaderReaderT runReaderTReader runReader mapReader withReader mapReaderT withReaderT Control.Monad.Trans.State.StrictStateT runStateTStaterunState evalState execStatemapState withState evalStateT execStateT mapStateT withStateT"safe-0.3.19-A9xxxfJjh5L7P3crnmL4sQSafepredDefpredMaysuccDefsuccMay toEnumDef toEnumMaycycleDefcycleMaylastDefheadDeflastMayheadMayinitDefinitMaytailDeftailMay Safe.FoldableminimumBoundedmaximumBounded minimumBound maximumBoundminimumBoundBymaximumBoundBy maximumByMay minimumByMay maximumMay minimumMay foldr1May foldl1May text-1.2.3.1Data.Text.InternalTextControl.Monad.Trans.Writer.CPS mapWriterT execWriterT runWriterTwriterT mapWriter execWriter runWriterWriterWriterTControl.Monad.Trans.RWS.CPSmapRWSTexecRWSTevalRWSTrunRWSTrwsTmapRWSexecRWSevalRWSrunRWSrwsRWSRWSTControl.Monad.Trans.Maybe mapMaybeT runMaybeTMaybeT4unordered-containers-0.2.12.0-7BikmbtnebBBqNM33KNnUdData.HashSet.InternalHashSetData.HashMap.InternalHashMap ToIntegral toIntegralfromIntegralUnsafefromIntegerUnsafeLenient getLenient EncodeString encodeStringdecodeStringLenient decodeString ConvertString convertStringtracetraceM traceShow traceShowMtraceIO traceShowIdtraceId LByteStringLText fromFoldable convertListasListmapshowshowTshowS readMaybeprintputStrputStrLnputCharreadFile writeFile appendFile readFileUtf8 writeFileUtf8appendFileUtf8 undefined<>^.:?:skippanicfailData.ByteString.Lazy.InternalData.Text.Internal.LazyfmapGHC.Errerror