!F      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDE(c) Daniel Mendler 2017MITmail@daniel-mendler.de experimentalportableSafe 3456;<=>?)intro9Newtype wrapper for a string which was decoded leniently.intro,Encode and decode strings as a byte sequence " .   "a Just ! .   "a F  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 (F :: a -> a) ($ :: b -> H a) . ($ :: a -> b) "a (Just :: a -> H 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+FG%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 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'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.nGTx%&'()*+(c) Daniel Mendler 2016-2017MITmail@daniel-mendler.de experimentalportableSafe<FTzB,introAlias for lazy H-introAlias for lazy I.intro Convert from 7 to an  type./introConvert between two different 2 types. This function can be used instead of the G& function originally provided by the  class.0introA synonym for J. map = J1intro7Convert a value to a readable string type supported by # using the 1 instance.2introConvert a value to a readable  using the 1 instance.3introConvert a value to a readable w using the 1 instance.4introParse a string type using the -: instance. Succeeds if there is exactly one valid result.5introThe 5 function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class 1; 52 converts values to strings for output using the 1 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.6introWrite a strict  to the standard output device.Note!: This function is lifted to the  class.7intro The same as 6, but adds a newline character.Note!: This function is lifted to the  class.8intro0Write a character to the standard output device.Note!: This function is lifted to the  class.9intro$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.<intro$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.=introWrite a  to a file using UTF-8 encoding.Note!: This function is lifted to the  class.>intro Append a  to a file using UTF-8 encoding.Note!: This function is lifted to the  class.?intro1Throw an undefined error. Use only for debugging.@intro lifted to 6AintroECompose functions with one argument with function with two arguments.f .: g = \x y -> f (g x y).BintroAn infix form of V with arguments flipped.Cintro() lifted to an 6. skip = ! ()DintrouThrow an unhandled error to terminate the program in case of a logic error at runtime. Use this function instead of K". A stack trace will be provided.0In general, prefer total functions. You can use H, R,  or  for error handling.EintroMonad 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 Fn#>=$? %y&'76 (543210)*m+a`_^,z{-./   0<;:98123456o! "n789:;lk<=UX>?@ABCDEFGHVWI[]\JKLMNOPQRYZST^a`_dcbgfejihmlkoprqstuvwzxy~}|{   !"#$%&'()*+,-./@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]bcdefghijsqrptvuwx|}~      "!#$%&'()*+,-./0123456789:;<=>?@ABCDEFfed"$#Acb^=UX|}!~HVWUVBXWTYn/.GJLQPEONFSRHIKMA@DCBvu\[ZRYZ>w-,5#$ "!FGABCDEMNOPQ@?JK/.-+a`_^]*.(543210,+'76 )&0<;:98/      1123-4%y,z{I[]\$? #>=;lkgfejiha`_dcbmlk<*m&('0%786! "njoiC@sqrp)3hg~}|{zxyvwustrqopt     9:2STL58679:;<=>x4ED?%)+&'*(@6A8B1SafeLMNOPQRST     !"#$%&'()*+,+-./0123456789:;<=>?@ABC9DEFGHI!JKL#MNOPQRSTSUVWXYXZX[X\X]^_^`^a^bcdefghXijkXlXmnonpnqnrstXuXvXwxyXzs{s|X}X~X+))))))QQQQQOOOOOOOOOOOOOOOOOOOOOOOOssssssss           9999999999999999 9!9"9#9$9%9&9'9(9)9*9+9,9-9.9/9012131415161718191:1;1<1=1>1?1@1A1B1C1D1E1FGHIJIKILMNMOMPMQRSTUVWXYZ[\]^_`abcdefgh i j k 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.5.1.0-JMJmIdSAvO9CfI0VHIxoOmIntroIntro.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.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.NaturalNaturalMaybeOrderingRatioRationalIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherType ConstraintFalseNothingJustTrueLeftRightLTEQGT Data.VoidVoidData.SemigroupgetMinMingetMaxMaxgetFirstFirstgetLastLast getOptionOptionItemData.Bitraversablebifor bisequenceA bitraverse BitraversableData.Bifoldable bisequenceA_bifor_ bitraverse_bifoldl'bifoldr'bifoldr bifoldMap BifoldableData.Bifunctorsecondfirstbimap BifunctorData.Functor.ClassesEq1Ord1Read1Show1Eq2Ord2Read2Show2Data.List.NonEmptyscanr1scanl1some1Control.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'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.BitspopCountrotateRrotateLisSignedtestBit complementBitclearBitsetBitbitzeroBitsrotateshift complementxor.|..&.BitscountTrailingZeroscountLeadingZeros finiteBitSize FiniteBits Data.Boolbool Data.Function&onfix Data.Functorvoid$><&><$>^^^oddeven denominator numerator%divModquotRemmoddivremquotrecip/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.5.11.0Data.IntMap.InternalIntMapData.IntSet.InternalIntSetData.Map.InternalMapData.Sequence.InternalSeqData.Set.InternalSetdeepseq-1.4.3.0Control.DeepSeqNFDataNFData1NFData2$dlist-0.8.0.4-EWVGGTJvTTW8quLYK9yz9r Data.DListDList"extra-1.6.9-AT5lAJP3xwQ1W64AcsUUkCControl.Monad.ExtraandMorMallManyM&&^||^ifMunlessMwhenM concatMapMData.Either.Extra eitherToMaybe maybeToEitherData.List.ExtranubOrdBynubOrdOnnubOrdsplitsplitOn breakOnEndbreakOnspanEnd groupSortBy groupSortOn groupSortgroupOn takeWhileEnddropEndtakeEnd&hashable-1.2.7.0-Q2TKVDwk4GBEHmizb4teZData.Hashable.Classhash hashWithSaltHashable Hashable1 Hashable2transformers-0.5.5.0Control.Monad.Trans.Classlift MonadTrans mtl-2.2.2Control.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.17-HEmZRpXGD3s2ywM3rHJ1urSafepredDefpredMaysuccDefsuccMay toEnumDef toEnumMaycycleDefcycleMaylastDefheadDeflastMayheadMayinitDefinitMaytailDeftailMay Safe.Foldable maximumByDef minimumByDef maximumByMay minimumByMay maximumDef minimumDef maximumMay minimumMay foldr1Def foldl1Def foldr1May foldl1May text-1.2.3.0Data.Text.InternalTextControl.Monad.Trans.Maybe mapMaybeT runMaybeTMaybeT3unordered-containers-0.2.9.0-HQtYJEH7265DslRAJ09vVD Data.HashSetHashSetData.HashMap.BaseHashMap6writer-cps-transformers-0.1.1.4-6MYrKwCluACIFgbZ4eO81z$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 readMaybeprintputStrputStrLnputCharreadFile writeFile appendFile readFileUtf8 writeFileUtf8appendFileUtf8 undefined<>^.:?:skippanicfailData.ByteString.Lazy.InternalData.Text.Internal.LazyfmapGHC.Errerrorversion getBinDir getLibDir getDynLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName