G      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF(c) Daniel Mendler 2017MITmail@daniel-mendler.de experimentalportableSafe 3456;<=>?)T9Newtype wrapper for a string which was decoded leniently.,Encode and decode strings as a byte sequence   .  "a Just  .  "a G "Encode a string as a byte sequence!Lenient decoding of byte sequenceYLenient means that invalid characters are replaced by the Unicode replacement character '\FFFD'. Decode byte sequence&If the decoding fails, return Nothing.!+Conversion of strings to other string types (" :: b -> a) . (" :: a -> b) "a (G :: a -> a) (" :: b -> H a) . (" :: a -> b) "a (Just :: a -> H a) (" :: b ->  a) . (" :: a -> b) "a ( :: a ->  a) "'Convert a string to another string type  !" !"(c) Daniel Mendler 2016-2017MITmail@daniel-mendler.de experimentalportable Trustworthy+FF#The #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.$Like #$ but returning unit in an arbitrary 64 context. Allows for convenient use in do-notation.Note that the application of $ is not an action in the 6 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%Like # , 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 = ... ...&Like $ , but uses show$ on the argument to convert it to a String. D... = do x <- ... traceShowM $ x y <- ... traceShowM $ x + y'The 's function outputs the trace message from the IO monad. This sequences the output with respect to other IO actions.(Like %6 but returns the shown value instead of a third value.)Like #2 but returns the message instead of a third value.uHTv#$%&'()(c) Daniel Mendler 2016-2017MITmail@daniel-mendler.de experimentalportableSafe<FT{*Alias for lazy I+Alias for lazy J, Convert from 7 to an  type.-Convert between two different 2 types. This function can be used instead of the H& function originally provided by the  class..A synonym for K. map = K/7Convert a value to a readable string type supported by ! using the 1 instance.0Convert a value to a readable  using the 1 instance.1Convert a value to a readable u using the 1 instance.2Parse a string type using the -: instance. Succeeds if there is exactly one valid result.3The 3 function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class 1; 32 converts values to strings for output using the / 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.4The 4. operation returns all user input as a strict .Note!: This function is lifted to the  class.57Read a line from the standard input device as a strict .Note!: This function is lifted to the  class.60Read a character from the standard input device.Note!: This function is lifted to the  class.7Write a strict  to the standard output device.Note!: This function is lifted to the  class.8 The same as 7, but adds a newline character.Note!: This function is lifted to the  class.90Write a character to the standard output device.Note!: This function is lifted to the  class.:$Read an entire file strictly into a .Note!: This function is lifted to the  class.;Write a  to a file.Note!: This function is lifted to the  class.< Append a  to a file.Note!: This function is lifted to the  class.=$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.>Write a  to a file using UTF-8 encoding.Note!: This function is lifted to the  class.? Append a  to a file using UTF-8 encoding.Note!: This function is lifted to the  class.@1Throw an undefined error. Use only for debugging.A lifted to 6BECompose functions with one argument with function with two arguments.f .: g = \x y -> f (g x y).CAn infix form of X with arguments flipped.D() lifted to an 6. skip = ! ()EuThrow an unhandled error to terminate the program in case of a logic error at runtime. Use this function instead of L". A stack trace will be provided.0In general, prefer total functions. You can use H, R,  or  for error handling.FMonad fail function from the 4 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 Gu#A@$B %w&':9 (876543)*m+cba`,x}~y-./     0?>=<;123456o! "n789:;_^<=UX>?@ABCDEFGHVWI[]\JKLMNOPQRYZSTba`edchgfkjinmlopqsrtvwyxz{|}~ $#"!%&'()*+,-./012CDEFGHIJKLMNOPQRSTUVWXYZ[\]^_defghijklsqrptuvz{|      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFLhgf&('Bedt=UXz{%|HVWWXCZYV[u-,JMOSHRQIUTKLNPDCGFEsrpo^]\RYZ>u+*5!" FGABCDEMNOPQ@?JK210+cba`_-.(876543/.':9 ,&0?>=<;/      $#"!1/01-2%w,x}y~I[\]$B #A@;_^hgfkjiba`edcnml<*m*+.)786! o"nlokDAsrqpq)3ji}~|z{yxvwt     9:2STL6453978:;<=>?v4FE@#')$%(&A6B8C1SafeMNOPQRSTU     !"#$%&'()*+,+-./0123456789:;<=>?@ABCD:EFGHIJ!KLM#NOPQRSTUTV.WXYZY[Y\Y]Y^_`_a_b_cdefghiYjklYmYnopoqorostuYvYwYxyzY{t|t}Y~YY.................+))))))RRRRRPPPPPPPPPPPPPPPPPPPPPPPPtttttttt         :::::::::::: :!:":#:$:%:&:':(:):*:+:,:-:.:/:0:1:2:3:4565758595:5;5<5=5>5?5@5A5B5C5D5E5F5G5H5I5JKLMNMOMPQRQSQTUVWXYZ[\]^_`abcdefghijk l m n o p q r s t u v w x y z { | } ~                  !"#$%&'()*+,*+-*+.*+/*+0*+1*+2*+3*+4*+5*+6*+7*+8*+9*+:*+;*<=*<>*<?*<@*<A*<B*<C*<D*<E*<F*<G*<HIJKLMLNLOLOPQRPSTUVWUVXUVYUVZUV[UV\UV]UV^UV_UV`UVaUVbUcdUceUcfUcgUchUciUcjUckUclmmnopqrstuvwxyz{|}~+IK$intro-0.3.1.0-IfXQyueFDz07U5ODqVuc5nIntroIntro.ConvertStringIntro.Trustworthy Paths_introghc-primGHC.PrimseqbaseGHC.Listfilterzip Data.TuplefstsndGHC.Base otherwise$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=Control.Monad.Fixmfix Data.String fromString fromIntegral realToFrac toInteger toRational Control.MonadguardGHC.ExtsIsListfromListData.Semigroup<>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.NaturalNaturalMaybeOrderingRatioRationalIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherType ConstraintFalseNothingJustTrueLeftRightLTEQGTstimessconcatgetMinMingetMaxMaxgetFirstFirstgetLastLast getOptionOptionData.List.NonEmptyscanr1scanl1some1:|NonEmpty Data.VoidVoidItemData.Bitraversablebifor bisequenceA bitraverse BitraversableData.Bifoldable bisequenceA_bifor_ bitraverse_bifoldl'bifoldr'bifoldr bifoldMap BifoldableData.Bifunctorsecondfirstbimap BifunctorData.Functor.ClassesEq1Ord1Read1Show1Eq2Ord2Read2Show2Control.Monad.IO.ClassliftIOMonadIO Data.RatioapproxRational<$!>unless replicateM_ replicateM<=<>=> mapAccumR mapAccumLfor sequenceAtraverseControl.Applicativeoptional getZipListZipListData.Functor.Identity runIdentityIdentityGHC.IOFilePathData.Functor.ConstgetConstConstfindnotElemallanyorand concatMapasum sequenceA_for_ traverse_foldlMfoldrMproductsumelemlengthnulltoListfoldl'foldr'foldrfoldMapfold Data.MonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetAltAlt 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.BitspopCountrotateRrotateLisSignedtestBit complementBitclearBitsetBitbitzeroBitsrotateshift complementxor.|..&.BitscountTrailingZeroscountLeadingZeros finiteBitSize FiniteBits Data.Boolbool Data.Function&onfix Data.Functorvoid$><$>^^^oddeven denominator numerator%divModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumunzip3unzipzipWith3zipWithzip3lookupreversebreakspansplitAtdroptake dropWhile takeWhile replicaterepeatiteratescanrscanl Data.MaybemapMaybe catMaybes fromMaybe isNothingisJustmaybeswapuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flipconstwhen=<<liftA3<**><$<*liftA2many<|>empty Alternative MonadPlusStringGHC.Stack.Types HasCallStack/=compare<=&&||not<>maxminbytestring-0.10.8.2Data.ByteString.Short.InternalShortByteStringData.ByteString.Internal ByteStringbinary-0.8.5.1Data.Binary.ClassBinarycontainers-0.5.10.2Data.IntMap.InternalIntMapData.IntSet.InternalIntSetData.Map.InternalMapData.Sequence.InternalSeqData.Set.InternalSetdeepseq-1.4.3.0Control.DeepSeqNFDataNFData1NFData2$dlist-0.8.0.4-C5jxmU4NyxKI1pN7pAcXnu Data.DListDList"extra-1.6.2-H6ipqC4P0F96PdmnLHr5qrData.Either.Extra eitherToMaybe maybeToEitherData.List.ExtranubOrdBynubOrdOnnubOrdsplitsplitOn breakOnEndbreakOnspanEnd groupSortBy groupSortOn groupSortgroupOndropEndtakeEndControl.Monad.ExtraandMorMallManyM&&^||^ifMunlessMwhenM concatMapM'hashable-1.2.6.1-JDYnvpSucMf1h1i2CUUtVbData.Hashable.Classhash hashWithSaltHashable Hashable1 Hashable2transformers-0.5.2.0Control.Monad.Trans.Classlift MonadTrans mtl-2.2.1-DscMMmDQUE6GBfOSl4qMUHControl.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.16-9YcgrXj17kg79mfNx7tCoFSafepredDefpredMaysuccDefsuccMay toEnumDef toEnumMaycycleDefcycleMaylastDefheadDeflastMayheadMayinitDefinitMaytailDeftailMay Safe.Foldable maximumByDef minimumByDef maximumByMay minimumByMay maximumDef minimumDef maximumMay minimumMay foldr1Def foldl1Def foldr1May foldl1May#text-1.2.2.2-EakMpasry3jA6OIwSZhq9MData.Text.InternalTextControl.Monad.Trans.Maybe mapMaybeT runMaybeTMaybeT3unordered-containers-0.2.8.0-3iSQJVS3Sio885UUC852oj Data.HashSetHashSetData.HashMap.BaseHashMap6writer-cps-transformers-0.1.1.3-6FECSAtdIi8Ldnr13qIZUe$Control.Monad.Trans.RWS.CPS.InternalRWSTRWSrwsrunRWSevalRWSexecRWSmapRWSrwsTrunRWSTevalRWSTexecRWSTmapRWST'Control.Monad.Trans.Writer.CPS.InternalWriterTWriter runWriter execWriter mapWriterwriterT runWriterT execWriterT mapWriterTLenient getLenient EncodeString encodeStringdecodeStringLenient decodeString ConvertString convertStringtracetraceM traceShow traceShowMtraceIO traceShowIdtraceId LByteStringLText fromFoldable convertListmapshowshowTshowS readMaybeprint getContentsgetLinegetCharputStrputStrLnputCharreadFile writeFile appendFile readFileUtf8 writeFileUtf8appendFileUtf8 undefined<>^.:?:skippanicfailData.ByteString.Lazy.InternalData.Text.Internal.LazyfmapGHC.Errerrorversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName