<D      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCSafe DEFGHIJKLMNOPEKLMNOP DEFGHIJKLMNOP(c) Daniel Mendler 2016-2017MITmail@daniel-mendler.de experimentalportable Trustworthy*DThe 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 yLike  , 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 + yThe 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.~QSR(c) Daniel Mendler 2017MITmail@daniel-mendler.de experimentalportableSafe 23459:;<=9Newtype wrapper for a string which was decoded leniently.!,Encode and decode strings as a byte sequence $ . " "a Just # . " "a S ""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 (S :: a -> a) (& :: b -> G a) . (& :: a -> b) "a (Just :: a -> G a) (& :: b ->  a) . (& :: a -> b) "a ( :: a ->  a) &'Convert a string to another string typeT !"#$%&TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !"$#%&N !"#$%&TUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~(c) Daniel Mendler 2016-2017MITmail@daniel-mendler.de experimentalportableSafe:DR'Alias for lazy (Alias for lazy ) Convert from 7 to an  type.*Convert between two different 2 types. This function can be used instead of the Q& function originally provided by the  class.+A synonym for . map = ,7Convert a value to a readable string type supported by % using the 1 instance.-Convert a value to a readable  using the 1 instance..Convert a value to a readable g using the 1 instance./Parse a string type using the -: instance. Succeeds if there is exactly one valid result.0The 0 function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class 1; 02 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.1The 1. operation returns all user input as a strict .Note!: This function is lifted to the  class.27Read a line from the standard input device as a strict .Note!: This function is lifted to the  class.30Read a character from the standard input device.Note!: This function is lifted to the  class.4Write a strict  to the standard output device.Note!: This function is lifted to the  class.5 The same as 4, but adds a newline character.Note!: This function is lifted to the  class.60Write a character to the standard output device.Note!: This function is lifted to the  class.7$Read an entire file strictly into a .Note!: This function is lifted to the  class.8Write a  to a file.Note!: This function is lifted to the  class.9 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.> lifted to 6?ECompose functions with one argument with function with two arguments.f .: g = \x y -> f (g x y).@An infix form of J with arguments flipped.A() lifted to an 6. skip = ! ()BuThrow an unhandled error to terminate the program in case of a logic error at runtime. Use this function instead of ". A stack trace will be provided.0In general, prefer total functions. You can use G, Q,  or  for error handling.CMonad 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 '()*+,-./0123456789:;<=>?@ABCD~#32$4 %h&',+ (*)('&%)*`+UTSR,inojpq-./010/.-123456! "a789:;ih<=TW>?@ABCDEFGUVHZ\[IJKLMNOPQXYRS]^_`abcdgfelkjonmrqputsxwvyz{}|      !"#$56789:;<=>?@ABCDEFGHIJKLMNOPQVWXYZ[\]^_ecdbfgklmrsutvwxyz}{|~      !"$#%&'()*+,-./0123456789:;<=>?@ABCHZYX?WV=TWklmGUVIJ@LKHM~*)<?AE:DC;GF=>@B65987}|zyPONQXY>g('~5%&!"#$ FABCDELMNOP@?IJ$#"+UTSRQ.(*)('&%! ',+ &010/.-/     1`d,-.-_c/%h]a,injopq^bHZ[\$4 #32;ihrqputslkjonmxwv<*`+gfe786! "a_^]A>edcb{)3\[}|{yzxvwutrsf     9:2RSK3120645789:;<4CB='()*+,-./0123456789:;<=>?@ABC>6?8@1     !"#$%&'()*+,+-./0123456789:;<=>?@ABCD:EFGHIJ!KLM#NOPQRSTUTV.WXYZY[Y\Y]Y^_`_a_b_cdefgYhijYkYlmnmompmqrsYtYuYvwxYyrzr{Y|Y}Y~.................+))))))RRRRRPPPPPPPPPPPPPPPPPPPPPPPPrrrrrr::::: : : : : ::::::::::::::::::: :!:":#:$%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:;<=>=?=@ABACADEFGHIJKLMNOPQRSTUVWXYZ[ \ ] ^ _ ` a b c d e f g h i j k l m nopoqorosotou v w xyz{|}~       !"#$%&'()'(*'(+'(,'(-'(.'(/'(0'(1'(2'(3'(4'(5'(6'(7'(8'9:'9;'9<'9='9>'9?'9@'9A'9B'9C'9D'9EFGHIJIKILILMNOMPQRSTRSURSVRSWRSXRSYRSZRS[RS\R]^R]_R]`R]aR]bR]cR]dR]eR]fR]gR]hR]ijklmnopqqrstuvwxyz{|}~+FH$intro-0.3.0.1-DTpVgzjzCpX7tOlmsJyNPVIntro Paths_introIntro.TrustworthyIntro.ConvertStringghc-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.TypeIntegerMaybeOrderingRatioRationalIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherType ConstraintFalseNothingJustTrueLeftRightLTEQGTData.Functor.ClassesEq1Ord1Read1Show1Eq2Ord2Read2Show2Data.Functor.Identity runIdentityIdentitystimessconcatgetMinMingetMaxMaxgetFirstFirstgetLastLast getOptionOptionData.List.NonEmptyscanr1scanl1some1:|NonEmptyItem GHC.NaturalNatural Data.VoidVoid Data.RatioapproxRationalData.Bifunctorsecondfirstbimap BifunctorControl.Monad.IO.ClassliftIOMonadIO<$!>unless replicateM_ replicateM<=<>=> mapAccumR mapAccumLfor sequenceAtraverseControl.Applicativeoptional getZipListZipListControl.Category>>><<<.idCategoryData.Functor.ConstgetConstConstfindnotElemallanyorand concatMapasum sequenceA_for_ traverse_foldlMfoldrMproductsumelemlengthnulltoListfoldl'foldr'foldrfoldMapfold Data.MonoidgetDualDualappEndoEndogetAllAllgetAnyAnygetAltAltGHC.IOFilePathisRightisLeftpartitionEithersrightsleftseither Data.ProxyProxy Data.OldListunfoldrsortOnsortBysort permutations subsequencestailsinitsgroupBygroup transpose intercalate intersperse isSuffixOf isPrefixOf dropWhileEndData.Ord comparingDownatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**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=<<liftA3liftA2<**><$<*many<|>empty Alternative MonadPlusString/=compare<=&&||not<>maxmin'bifunctors-5.4.2-L4GiuXGjqdMGIFwxc9RMJKData.Bitraversablebifor bisequenceA bitraverse BitraversableData.Bifoldable bisequenceA_bifor_ bitraverse_bifoldl'bifoldr'bifoldr bifoldMap Bifoldablebytestring-0.10.8.1Data.ByteString.Short.InternalShortByteStringData.ByteString.Internal ByteStringbinary-0.8.3.0Data.Binary.ClassBinarycontainers-0.5.7.1Data.IntMap.BaseIntMapData.IntSet.BaseIntSet Data.Map.BaseMap Data.SequenceSeq Data.Set.BaseSetdeepseq-1.4.2.0Control.DeepSeqNFData#dlist-0.8.0.2-6Wnps4GD7EFnRucVzXIFD Data.DListDList extra-1.6-GeMfooXHcofHtjdznkzSfSControl.Monad.ExtraandMorMallManyM&&^||^ifMunlessMwhenM concatMapMData.Either.Extra eitherToMaybe maybeToEither fromRightfromLeftData.List.ExtranubOrdBynubOrdOnnubOrdsplitsplitOn breakOnEndbreakOnspanEnd groupSortBy groupSortOn groupSortgroupOndropEndtakeEnd'hashable-1.2.6.0-L1pXRiiToPfAWNd2v5WeYdData.Hashable.Classhash hashWithSaltHashable Hashable1 Hashable2transformers-0.5.2.0Control.Monad.Trans.Classlift MonadTrans mtl-2.2.1-BLKBelFsPB3BoFeSWSOYj6Control.Monad.Error.Class catchError throwError MonadErrorControl.Monad.RWS.ClassMonadRWSControl.Monad.Reader.Classasksreaderlocalask MonadReaderControl.Monad.State.Classgetsmodify'modifystateputget MonadStateControl.Monad.Writer.Classpasslistentellwriter MonadWriterControl.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.14-GsbXn9D9F3BDazVNcErzdQSafepredDefpredMaysuccDefsuccMay toEnumDef toEnumMaycycleDefcycleMaylastDefheadDeflastMayheadMayinitDefinitMaytailDeftailMay Safe.Foldable maximumByDef minimumByDef maximumByMay minimumByMay maximumDef minimumDef maximumMay minimumMay foldr1Def foldl1Def foldr1May foldl1May#text-1.2.2.2-KC7dWoG09dA1F6jKj5GSqhData.Text.InternalTextControl.Monad.Trans.Maybe mapMaybeT runMaybeTMaybeT3unordered-containers-0.2.8.0-LHdkMJ5pov96RH5NuHF8rs Data.HashSetHashSetData.HashMap.BaseHashMap6writer-cps-transformers-0.1.1.3-Bp7osuN2Gls2eFNC3YdDw2'Control.Monad.Trans.Writer.CPS.InternalWriterTWriter runWriter execWriter mapWriterwriterT runWriterT execWriterT mapWriterT$Control.Monad.Trans.RWS.CPS.InternalRWSTRWSrwsrunRWSevalRWSexecRWSmapRWSrwsTrunRWSTevalRWSTexecRWSTmapRWSTtracetraceM traceShow traceShowMtraceIO traceShowIdtraceIdLenient getLenient EncodeString encodeStringdecodeStringLenient decodeString ConvertString convertString LByteStringLText fromFoldable convertListmapshowshowTshowS readMaybeprint getContentsgetLinegetCharputStrputStrLnputCharreadFile writeFile appendFile readFileUtf8 writeFileUtf8appendFileUtf8 undefined<>^.:?:skippanicfailcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameGHC.Stack.Types HasCallStack$fEncodeStringText[]!$fEncodeStringTextShortByteString$fEncodeStringTextByteString$fEncodeStringTextByteString0$fEncodeStringText[]0"$fEncodeStringTextShortByteString0$fEncodeStringTextByteString1$fEncodeStringTextByteString2$fEncodeString[][]$fEncodeString[]ShortByteString$fEncodeString[]ByteString$fEncodeString[]ByteString0$fConvertString[][] $fConvertString[]ShortByteString$fConvertString[]ByteString$fConvertString[]ByteString0$fConvertString[]Maybe$fConvertString[]Maybe0$fConvertString[]Maybe1$fConvertString[]Lenient$fConvertString[]Lenient0$fConvertString[]Lenient1$fConvertStringText[]$fConvertStringTextText$fConvertStringTextText0$fConvertStringText[]0"$fConvertStringTextShortByteString$fConvertStringTextByteString$fConvertStringTextByteString0$fConvertStringText[]1$fConvertStringTextText1$fConvertStringTextText2$fConvertStringText[]2#$fConvertStringTextShortByteString0$fConvertStringTextByteString1$fConvertStringTextByteString2$fConvertString[][]0$fConvertString[]Text$fConvertString[]Text0$fConvertString[][]1!$fConvertString[]ShortByteString0$fConvertString[]ByteString1$fConvertString[]ByteString2 $fConvertStringShortByteString[]-$fConvertStringShortByteStringShortByteString($fConvertStringShortByteStringByteString)$fConvertStringShortByteStringByteString0#$fConvertStringShortByteStringMaybe$$fConvertStringShortByteStringMaybe0$$fConvertStringShortByteStringMaybe1%$fConvertStringShortByteStringLenient&$fConvertStringShortByteStringLenient0&$fConvertStringShortByteStringLenient1$fConvertStringByteString[]($fConvertStringByteStringShortByteString#$fConvertStringByteStringByteString$$fConvertStringByteStringByteString0$fConvertStringByteStringMaybe$fConvertStringByteStringMaybe0$fConvertStringByteStringMaybe1 $fConvertStringByteStringLenient!$fConvertStringByteStringLenient0!$fConvertStringByteStringLenient1$fConvertStringByteString[]0)$fConvertStringByteStringShortByteString0$$fConvertStringByteStringByteString1$$fConvertStringByteStringByteString2$fConvertStringByteStringMaybe2$fConvertStringByteStringMaybe3$fConvertStringByteStringMaybe4!$fConvertStringByteStringLenient2!$fConvertStringByteStringLenient3!$fConvertStringByteStringLenient4$fNFDataLenient$fBinaryLenientData.ByteString.Lazy.InternalData.Text.Internal.LazyfmapGHC.Errerror