h*(      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~0.0.1.9 Safe-Inferred  Safe-Inferred" versetThe  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  operation and adds a newline.For 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.verset1Throw an undefined error. Use only for debugging.versetAn infix form of  with arguments flipped.verset() lifted to an 4. pass =  ()versetThe  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.versetLike $ 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  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. ... = do x <- ... traceM $ "x: " ++ show x y <- ... traceM $ "y: " ++ show yversetLike  , but uses $ on the argument to convert it to a .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: f x y = traceShow (x, z) $ result where z = ... ...versetLike  , but uses $ on the argument to convert it to a . ... = do x <- ... traceShowM $ x y <- ... traceShowM $ x + yversetThe  function outputs the trace message from the IO monad. This sequences the output with respect to other IO actions.versetLike 6 but returns the shown value instead of a third value.versetLike 2 but returns the message instead of a third value.verset8The identity function, returns the give value unchanged.{|}Obc;RUdFSTPgNVW<3DE?ABC@IKLMJ>=)~,&%$.-/+# a*[\^] _`GXZY" !9op:(n564 mlqrhjiks'z1uvwxytf780QHe2{|}Obc;RUdFSTPgNVW<3DE?ABC@IKLMJ>=)~,&%$.-/+# a*[\^] _`GXZY" !9op:n564 mqlrhjiksz1uvwxy'tf780QHe2(14        !"#$%&'( ) * + , - . / 01234567 8 9:;<=>4?@ABCDEFG!H IJKLMNONP Q RSTSUSVSWSXYZY[Y\Y]^_`^abcdSeSfSghihjhkhlmn o pSqSrcsctSumvmwSxSySz{|}~                       44444444444444444444444444444444mmmmmmmmJJJJJJJJJJJJJJJJJJJJJJJJJJLLLLL'''''''''''''' %verset-0.0.1.9-Fvf6SbNAOOl4mv9e2gD000Verset Verset.Convversetghc-primGHC.PrimseqbaseGHC.ListfilterzipGHC.Base otherwise$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=>>fmapControl.Monad.Fixmfix Data.String fromString fromIntegral realToFrac toInteger toRational Control.Monadguard<>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 ghc-bignumGHC.Num.IntegerIntegerGHC.Num.NaturalNatural GHC.MaybeMaybeOrderingIOWordGHC.WordWord8Word16Word32Word64 Data.EitherEitherVoidNonEmptyTypeFalseNothingJustTrueLeftRightLTEQGTcompare<<=>maxmin/=&&||notGHC.Stack.Types HasCallStackGHC.Exception.Type SomeException:| Alternativeempty<|>manyliftA2<*<$sconcatstimes<**>liftA3=<<whenliftMliftM2liftM3liftM4liftM5apconstflip$!+*abssignumsubtract Data.MaybemaybeisJust isNothing fromMaybe catMaybesmapMaybescanlscanriterateiterate'repeat replicate takeWhile dropWhiletakedropsplitAtspanbreakreverselookupzip3zipWithzipWith3unzipunzip3fromEnumminBoundmaxBoundproperFractiontruncateroundceilingfloor/recipquotremdivmodquotRemdivModevenodd^^^GHC.BitstoIntegralSized floatRadix floatDigits floatRange decodeFloat encodeFloatexponent significand scaleFloatisNaN isInfiniteisDenormalizedisNegativeZeroisIEEEatan2piexplogsqrt**logBasesincostanasinacosatansinhcoshtanhasinhacoshatanh Data.Boolbool Data.Tuplefstsndcurryuncurryswap Data.Functor<$><&>$>void Data.Functionfixon& GHC.Conc.SyncThreadId myThreadIdforkIOeitherleftsrightspartitionEithersisLeftisRightfromLeft fromRight Text.Read readMaybeData.OrdDown comparingControl.CategoryCategory.<<<>>> Data.ProxyProxyData.Semigroup.InternalAltgetAltAnygetAnyAllgetAllEndoappEndoDualgetDualfoldfoldMapfoldrfoldr'foldlfoldl'toListnulllengthelemsumproductfoldrMfoldlM traverse_for_ sequenceA_asumconcat concatMapandoranyallnotElemfindData.Functor.ConstConstgetConst Exception Data.OldList dropWhileEnd isPrefixOf isSuffixOf intersperse intercalate transpose genericLength genericTake genericDropgenericSplitAt genericIndexgenericReplicategroupgroupByinitstails subsequences permutationssortsortBysortOnunfoldrGHC.IOFilePath GHC.Conc.IO threadDelayData.Functor.IdentityIdentity runIdentityControl.ApplicativeZipList getZipListoptionaltraverse sequenceAfor mapAccumL mapAccumRfilterM>=><=<forever mapAndUnzipMzipWithM zipWithM_foldMfoldM_ replicateM replicateM_unless<$!>mfilterControl.Monad.IO.ClassMonadIOliftIOData.List.NonEmptyheadtaillastinitsome1scanl1scanr1cycleData.Bifunctor BifunctorbimapfirstsecondData.Bifoldable Bifoldable bifoldMapbifoldrbifoldr'bifoldl' bitraverse_bifor_ bisequenceA_Data.Bitraversable Bitraversable bitraverse bisequenceAbiforControl.Concurrent forkFinallyData.SemigroupLastgetLastFirstgetFirstMaxgetMaxMingetMinData.Functor.ClassesShow2Read2Ord2Eq2Show1Read1Ord1Eq1Data.Functor.Contravariant Contravariant contramap>$$<>$<>$$<bytestring-0.11.5.2Data.ByteString.Internal.Type ByteStringcontainers-0.6.7Data.Set.InternalSetData.Map.InternalMap#extra-1.7.14-HOdkh9LZsoq8PPZFY2nEJFData.List.ExtratakeEnddropEnd takeWhileEndgroupOn groupSort groupSortOn groupSortByspanEndbreakOn breakOnEndsplitOnsplitnubOrdnubOrdOnnubOrdByData.Either.Extra maybeToEither eitherToMaybeControl.Monad.Extra concatMapMwhenMunlessMifM||^&&^anyMallMorMandMtransformers-0.6.1.0Control.Monad.Trans.Class MonadTranslift"safe-0.3.21-BDeFJFNginNFBHwUF89tvw Safe.Foldable foldl1May foldr1May minimumMay maximumMay minimumByMay maximumByMaymaximumBoundByminimumBoundBy maximumBound minimumBoundmaximumBoundedminimumBoundedSafetailMaytailDefinitMayinitDefheadMaylastMayheadDeflastDefcycleMaycycleDef toEnumMay toEnumDefsuccMaysuccDefpredMaypredDef text-2.0.2Data.Text.InternalText time-1.12.2(Data.Time.Clock.Internal.NominalDiffTimeNominalDiffTime Data.Time.Clock.Internal.UTCTimeUTCTime&Data.Time.LocalTime.Internal.LocalTime LocalTime)uuid-types-1.0.5.1-AhAqCtifmHrGaMd3CybAjgData.UUID.Types.InternalUUID StringConvstrConvLeniencyLenientStricttoStoSL$fStringConvTextByteString$fStringConvTextByteString0$fStringConvTextText$fStringConvTextText0$fStringConvTextList$fStringConvTextText1$fStringConvTextText2$fStringConvTextByteString1$fStringConvTextByteString2$fStringConvTextList0$fStringConvByteStringText$fStringConvByteStringText0 $fStringConvByteStringByteString!$fStringConvByteStringByteString0$fStringConvByteStringList$fStringConvByteStringText1$fStringConvByteStringText2!$fStringConvByteStringByteString1!$fStringConvByteStringByteString2$fStringConvByteStringList0$fStringConvListText$fStringConvListText0$fStringConvListByteString$fStringConvListByteString0$fStringConvListList $fEqLeniency$fShowLeniency $fOrdLeniency$fEnumLeniency$fBoundedLeniencyPrinthPutStrputStr hPutStrLnputStrLnputErrLnprint undefined?:passtracetraceM traceShow traceShowMtraceIO traceShowIdtraceIdidentity<<$>>putTextputLText putByteStringputLByteString putErrTextshowordNubatMay $fPrintList$fPrintByteString$fPrintByteString0 $fPrintText $fPrintText0String