v)      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'(Safe )*+,-./012345*012345 )*+,-./012345(c) Daniel Mendler 2016MITmail@daniel-mendler.de experimentalportable TrustworthyThe 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 54 context. Allows for convenient use in do-notation.Note that the application of   is not an action in the 5 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 additionally prints a call stack if one is available.fIn the current GHC implementation, the call stack is only available if the program was compiled with -prof ; otherwise   behaves exactly like ,. Entries in the call stack correspond to SCC+ annotations, so it is a good idea to use  -fprof-auto or -fprof-auto-calls& to add SCC annotations automatically. Like  $ but returning unit in an arbitrary 54 context. Allows for convenient use in do-notation. 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 + yThe s function outputs the trace message from the IO monad. This sequences the output with respect to other IO actions.      |          (c) Daniel Mendler 2016MITmail@daniel-mendler.de experimentalportableSafe:Alias for lazy Alias for lazy Alias for lazy 6Alias for lazy 7A synonym for 8. map = 87Convert a value to a readable string type supported by  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.The  function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class 1; 2 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.The . operation returns all user input as a strict .Note!: This function is lifted to the  class.7Read a line from the standard input device as a strict .Note!: This function is lifted to the  class.0Read a character from the standard input device.Note!: This function is lifted to the  class.Write a strict  to the standard output device.Note!: This function is lifted to the  class. The same as , but adds a newline character.Note!: This function is lifted to the  class.0Write 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  using UTF-8 encoding.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 5&ECompose functions with one argument with function with two arguments.f .: g = \x y -> f (g x y).'() lifted to an 5. skip = ! ()(uThrow an unhandled error to terminate the program in case of a logic error at runtime. Use this function instead of 9". A stack trace will be provided.0In general, prefer total functions. You can use E, O,  or  for error handling. !"#$%&'()|#10$2 %h&'*) (('&%$#)*^+SRQP,inojpq-./0/.-,+12345! "_6789gf:;RU<=>?@ABCDESTFXZYGHIJKLMNOVWPQ[\]^_`abedcjihmlkponsrqvutwxy{z}~      !"3456789:;<=>?@ABCDEFGHIJKLMNOTUVWXYZ[\]cab`fedgklmrsutvwxyz}{|~      !"#$%&'(-XWV&UT~;RUklmESTGHJIFK|:=?C8BA9ED;<>@43765{zxwNMLOVW<g~4D}?@ABCJKLMN>=GH"! +SRQPO.(('&%$#'*) &0/.-,+/     1^b-]a%h[_,injopq\`FXYZ$2 #109gfponsrqjihmlkvut:*^edc675! "_]\['%cba`y)3ZfedY}|{yzxvwutrs82PQI !"#($      !"#$%&'(%6&8:     !"#$%&'()*+*,-./0123456789:;<=>?@ABC9DEFGHI J"KLMNOPQR-STUVUWUXUYUZ[\[][^[_`abcUdefUgUhijikilimnoUpUqUrstUunvnwUxUyUz{|{}{~{{{{{-----------------*((((((OOOOOMMMMMMMMMMMMMMMMMMMMMMMMnnnnnn999999999 9 9 9 9 9999999999999999999 !"!#!$!%!&!'!(!)!*!+!,!-!.!/!0!1!2!3!4!5!6789:9;9<=>=?=@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklkmknkokpkq r s tuvwxyz{|}~                   !"#$%&%'%(%)%*%+%,%-%.%/%0%1234235678679679:;<=>=?=@=@ABCADEFGHFGIFGJFGKFGLFGMFGNFGOFPQFPRFPSFPTFPUFPVFPWFPXFPYFPZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~:<$intro-0.1.0.0-IjgAi7mohEz3QIqMnDPgPvIntro Paths_introIntro.Trustworthyghc-primGHC.PrimseqbaseGHC.Listfilterzip Data.TuplefstsndGHC.Base otherwise$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=Control.Monad.Failfail Data.String fromString fromIntegral realToFrac toInteger toRational Control.MonadguardGHC.ExtsIsListfromListData.Semigroup<>memptymappendmconcatjoin<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowData.Typeable.InternalTypeable MonadFailIsString Applicative Data.FoldableFoldableData.Traversable Traversable GHC.GenericsGeneric 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 Alternativemplusmzero MonadPlusString/=compare<=&&||not<>maxmin'bifunctors-5.4.1-AyJo8S3Jmx6CMBX3YOLJFMData.Bitraversablebifor bisequenceA bitraverse BitraversableData.Bifoldable bisequenceA_bifor_ bitraverse_bifoldl'bifoldr'bifoldr bifoldMap Bifoldablebytestring-0.10.8.1Data.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-GWAMmbX9rLg3tqrbOizHGv Data.DListDList"extra-1.5.1-HeeVckCVl1V9DE6lYqg83IControl.Monad.ExtraandMorMallManyM&&^||^ifMunlessMwhenM concatMapMData.Either.Extra eitherToMaybe maybeToEither fromRightfromLeftData.List.ExtranubOrdBynubOrdOnnubOrdgroupOndropEndtakeEnd'hashable-1.2.5.0-LiA8hDsyVRvFyCEUjFhiS5Data.Hashable.ClassHashabletransformers-0.5.2.0Control.Monad.Trans.Classlift MonadTrans mtl-2.2.1-6qsR1PHUy5lL47Hpoa4jCMControl.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.10-1VyrsjWhmjvGnGud5lgW7fSafe toEnumDef toEnumMaycycleDefcycleMaylastDefheadDeflastMayheadMayinitDefinitMaytailDeftailMay Safe.Foldable maximumByDef minimumByDef maximumByMay minimumByMay maximumDef minimumDef maximumMay minimumMay foldr1Def foldl1Def foldr1May foldl1May1string-conversions-0.4.0.1-Bzzqn6R6OTHI7fDQFNdV8uData.String.Conversions convertStringConvertibleStrings#tagged-0.8.5-HBjpONNM7bk4tkR2ik8YoD Data.TaggedunTaggedTagged#text-1.2.2.1-9Yh8rJoh8fO2JMLWffT3QsData.Text.InternalTextControl.Monad.Trans.Maybe mapMaybeT runMaybeTMaybeT3unordered-containers-0.2.7.2-Adl88I6qxEAJSnBmLqhH3N Data.HashSetHashSetData.HashMap.BaseHashMap6writer-cps-transformers-0.1.1.0-6BbaJnYCTad7DBLL0baz5XControl.Monad.Trans.Writer.CPSWriterTWriter runWriter execWriter mapWriter runWriterT execWriterT mapWriterTControl.Monad.Trans.RWS.CPSRWSTRWSrunRWSevalRWSexecRWSmapRWSrunRWSTevalRWSTexecRWSTmapRWSTtracetraceM traceStack traceStackM traceShow traceShowMtraceIOLHashMapLMap LByteStringLTextmapshowshowS readMaybeprint getContentsgetLinegetCharputStrputStrLnputCharreadFile writeFile appendFile readFileUtf8 writeFileUtf8appendFileUtf8 undefined<>^.:skippaniccatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileNameData.ByteString.Lazy.InternalData.Text.Internal.LazyfmapGHC.Errerror