!?,P      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJ K LMNOPQRSTUV W XYZ[\ ] ^ _ ` a b c d e f g h i j k l m n o pqrstuvwxyz{|}~        !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                                         ! " # $ %&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF G H I JK L MNO SafeWJ< . haskell2020Map each element of a structure to a monadic action, evaluate these actions from left to right, and collect the results. For a version that ignores the results see /./ haskell2020Map each element of a structure to a monadic action, evaluate these actions from left to right, and ignore the results. For a version that doesn't ignore the results see ..0 haskell20201 is /P with its arguments flipped. For a version that doesn't ignore the results see 0.2 haskell2020Evaluate each monadic action in the structure from left to right, and collect the results. For a version that ignores the results see 3.3 haskell2020Evaluate each monadic action in the structure from left to right, and ignore the results. For a version that doesn't ignore the results see 2.4 haskell2020The 4 function is analogous to foldl@, except that its result is encapsulated in a monad. Note that 4Q works from left-to-right over the list arguments. This could be an issue where (7)0 and the `folded function' are not commutative. TfoldM f a1 [x1, x2, ..., xm] == do a2 <- f a1 x1 a3 <- f a2 x2 ... f am xmKIf right-to-left evaluation is required, the input list should be reversed.5 haskell2020Like 4, but discards the result.6 haskell2020%Inject a value into the monadic type.Note: This is a )-constrained synoym of !. provided for compatibility with Haskell2010.7 haskell2020Sequentially compose two actions, discarding any value produced by the first, like sequencing operators (such as the semicolon) in imperative languages.Note: This is a )-constrained synoym of ". provided for compatibility with Haskell2010.8 haskell2020The identity of 9.Note: This is a  -constrained synoym of . provided for compatibility with Haskell2010.9 haskell2020An associative operation.Note: This is a  -constrained synoym of . provided for compatibility with Haskell2010.: haskell20201The sum of a collection of actions, generalizing concat.))*3vwxyz{|}~ ./0123456789:)*)3./0123~}|{zy45xwv67 89:71 TrustworthyWi; haskell2020The ;( function behaves like a combination of   and ; it applies a function to each element of a list, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new list.< haskell2020The <( function behaves like a combination of   and ; it applies a function to each element of a list, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new list.= haskell2020The =m function takes a predicate and a list and returns the first element in the list matching the predicate, or N if there is no such element.find (> 4) [1..]Just 5find (< 0) [1..10]Nothing> haskell2020The > function takes a comparison function and a list and returns the greatest element of the list by the comparison function. The list must be finite and non-empty.4We can use this to find the longest entry of a list:[maximumBy (\x y -> compare (length x) (length y)) ["Hello", "World", "!", "Longest", "bar"] "Longest"? haskell2020The ? function takes a comparison function and a list and returns the least element of the list by the comparison function. The list must be finite and non-empty.5We can use this to find the shortest entry of a list:[minimumBy (\x y -> compare (length x) (length y)) ["Hello", "World", "!", "Longest", "bar"]"!"@ haskell2020@ n xs( returns a tuple where first element is xs prefix of length n1 and second element is the remainder of the list: splitAt 6 "Hello World!" == ("Hello ","World!") splitAt 3 [1,2,3,4,5] == ([1,2,3],[4,5]) splitAt 1 [1,2,3] == ([1],[2,3]) splitAt 3 [1,2,3] == ([1,2,3],[]) splitAt 4 [1,2,3] == ([1,2,3],[]) splitAt 0 [1,2,3] == ([],[1,2,3]) splitAt (-1) [1,2,3] == ([],[1,2,3])It is equivalent to ( n xs,  n xs). @$ is an instance of the more general  , in which n may be of any integral type.o ;<=>?@o ;<@=>? TrustworthyW}A haskell2020The A3 function establishes a handler that receives any # raised in the action protected by A. An  is caught by the most recent handler established by one of the exception handling functions. These handlers are not selective: all s are caught. Exception propagation must be explicitly provided in a handler by re-raising any unwanted exceptions. For example, in Df = catch g (\e -> if IO.isEOFError e then return [] else ioError e) the function f returns []% when an end-of-file exception (cf.  ) occurs in gD; otherwise, the exception is propagated to the next outer handler.aWhen an exception propagates outside the main program, the Haskell system prints the associated  value and exits the program.QNon-I/O exceptions are not caught by this variant; to catch all exceptions, use  ! from Control.Exception.B haskell2020B x y6 is the greatest (positive) integer that divides both x and y; for example B (-3) 6 = 3, B (-3) (-6) = 3, B 0 4 = 4. B 0 0 raises a runtime error. #$%$&NMLKJIHGFEDCBA@?>='()*+ ,&*%+,--87./\[ZYXWVUTSRPQO0134! "5MP6789>?NO@STUBDELQR569    !"#'()./2367@AB5MP'() ?NOLQR@STU6! %$,&*%+,-$#9>87BE+ .('&NMLKJIHGFEDCBA@?>=0/\[ZYXWVUTSRPQOB*4! ")376./23    #" @19-8765DASafeW%&'()*+,-./012:;<'+&%*)(<;,1/0.-2:SafeW|  SafeWCC SafeWpJK  !"#$J$#"! K SafeW> stuvwxyz{| {|zyxwvutsSafeWC haskell2020Discard the return value of an D actionCCSafeWD haskell20205Convert an array of given length into a Haskell list.`abcdefghijklmnopqrDrqponmDlkjihgefdcba`SafeW}~~}NoneWE haskell2020|Sometimes an external entity is a pure function, except that it passes arguments and/or results via pointers. The function unsafeLocalState: permits the packaging of such entities as pure functions.:The only IO operations allowed in the IO action passed to unsafeLocalState are (a) local allocation (alloca,  allocaBytes and derived operations such as  withArray and  withCString), and (b) pointer operations (Foreign.Storable and  Foreign.Ptr) on the pointers to local storage, and (c) foreign functions whose only observable effect is to read and/or write the locally allocated memory. Passing an IO operation that does not obey these rules results in undefined behaviour.TIt is expected that this operation will be replaced in a future revision of Haskell.-`abcdefghijklmnopqrstuvwxyz{|}~CDEE NoneWF haskell2020"Allocate some memory and return a V= to it. The memory will be released automatically when the V is discarded.F is equivalent to 4 do { p <- malloc; newForeignPtr finalizerFree p }galthough it may be implemented differently internally: you may not assume that the memory returned by F has been allocated with ".G haskell2020This function ensures that the foreign object in question is alive at the given place in the sequence of IO actions. In particular  does a G$ after it executes the user action.ZNote that this function should not be used to express dependencies between finalizers on V)s. For example, if the finalizer for a V F1 calls G on a second V F25, then the only guarantee is that the finalizer for F2+ is never started before the finalizer for F17. They might be started together if for example both F1 and F2 are otherwise unreachable.In general, it is not recommended to use finalizers on separate objects with ordering constraints between them. To express the ordering robustly requires explicit synchronisation between finalizers.VFGVGFSafeWSafeWCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_\][ZYXWVUSTQROPNMLKJI^_HGFEDCSafeW      !"#$%&'()*+,-./0123456789:;<=>?@BABA@?>=<;:9876543210/.-,+*)('&%$#"!      #SafeW"      !"#$%&'()*+,-./0123456789:;<=>?@BACDEFGHIJKLMNOPQRSTUVWXYZ[\]^_SafeW8EFGHIEFGHISafeWABpABpSafeW ?NO ?NOSafeW2[ZYX2[ZYXSafeW9:;<=9:;<= SafeWv fghijklmon onmljihgfkSafeW@634]^_`abcdefghijklmnoptu~}|{zyxwvsrq !@6!ck`aedbjihgfonlmtu~}|{zyxwvsrqp^_] 43SafeWB$NoneW{9:;<=CEFGHIJKV`abcdefghijklmnopqrstuvwxyz{|}~  !"#$CDEFG SafeW7H haskell2020jConstruct an array with the specified bounds and containing values for given indices within these bounds.The array is undefined (i.e. bottom) if any index in the list is out of bounds. If any two associations in the list have the same index, the value at that index is undefined (i.e. bottom).6Because the indices must be checked for these errors, H is strict in the bounds argument and in the indices of the association list, but non-strict in the values. Thus, recurrences such as the following are possible: >a = array (1,100) ((1,1) : [(i, i * a!(i-1)) | i <- [2..100]])Not every index within the bounds of the array need appear in the association list, but the values associated with indices that do not appear will be undefined (i.e. bottom).If, in any dimension, the lower bound is greater than the upper bound, then the array is legal, but empty. Indexing an empty array always gives an array-bounds error, but ]? still yields the bounds with which the array was constructed.I haskell2020Constructs an array identical to the first argument except that it has been updated by the associations in the right argument. For example, if m is a 1-origin, n by n matrix, then m//[((i,i), 0) | i <- [1..n]]4is the same matrix, except with the diagonal zeroed.<Repeated indices in the association list are handled as for H2: the resulting array is undefined (i.e. bottom),H haskell2020 a pair of bounds, each of the index type of the array. These bounds are the lowest and highest indices in the array, in that order. For example, a one-origin vector of length '10'' has bounds '(1,10)', and a one-origin '10' by '10'% matrix has bounds '((1,1),(10,10))'. haskell2020 a list of  associations of the form (index, value). Typically, this list will be expressed as a comprehension. An association '(i, x)' defines the value of the array at index i to be x.2[ZYX\]^_`abcdeHI \H^c_]`abIdeSafeW4! "4! "SafeWܟqrssrqSafeWJ haskell2020 Computation J code# terminates the program, returning codeo to the program's caller. The caller may interpret the return code as it wishes, but the program should return  to mean normal completion, and  n\ to mean that the program encountered a problem from which it could not recover. The value u is equal to J ( exitfail), where exitfail is implementation-dependent. JK bypasses the error handling in the I/O monad and cannot be intercepted by A from the Prelude.tuJJut SafeW:K haskell2020 Computation K  file mode> allocates and returns a new, open handle to manage the file file. It manages input if mode is   , output if mode is   or  (, and both input and output if mode is  .aIf the file does not exist and it is opened for output, it should be created as a new file. If mode is   and the file already exists, then it should be truncated to zero length. Some operating systems delete empty files, so there is no guarantee that the file will exist following an K with mode  h unless it is subsequently written to successfully. The handle is positioned at the end of the file if mode is  , and otherwise at the beginning (in which case its internal position is 0). The initial buffer mode is implementation-dependent.This operation may fail with:isAlreadyInUseError4 if the file is already open and cannot be reopened;isDoesNotExistError if the file does not exist; orisPermissionError7 if the user does not have permission to open the file.L haskell2020 Computation L hdl t+ waits until input is available on handle hdl. It returns P" as soon as input is available on hdl, or M! if no input is available within t milliseconds. Note that L waits until one or more full  characterse are available, which means that it needs to do decoding, and hence may fail with a decoding error.If t is less than zero, then  hWaitForInput waits indefinitely.This operation may fail with: isEOFError% if the end of file has been reached.ba decoding error, if the input begins with an invalid byte sequence in this Handle's encoding.CDW    KLCDWK    LSafeWPM haskell2020Errors of type M are used by the D/ monad. This is an abstract type; the module System.IO.ErrorA provides functions to interrogate and construct values of type M.N haskell2020The N2 function establishes a handler that receives any M$ raised in the action protected by N. An M6 is caught by the most recent handler established by N*. These handlers are not selective: all Ms are caught. Exception propagation must be explicitly provided in a handler by re-raising any unwanted exceptions. For example, in Df = catch g (\e -> if IO.isEOFError e then return [] else ioError e) the function f returns []% when an end-of-file exception (cf.  ) occurs in gD; otherwise, the exception is propagated to the next outer handler.aWhen an exception propagates outside the main program, the Haskell system prints the associated M value and exits the program.O haskell2020The construct O compV exposes IO errors which occur within a computation, and which are not fully handled.MNOMNOP%&'%&()*+%,-%,.%,/%01% 2%34%35%&6%&7%&8%9:%9;%<=%>?%>@%>A%>B)CD)CE%9F%&G%&H%IJ%<K%<L%<M%<N%O%&P%&Q%&R%&S%>T%>U)CV%WX%<Y%<Z%&[%&\%9])C^%_`%<a%Wb%<c%de%fg%Ih%&i)jk)jl)jm)jn)jo%pq%pr%ps%ptuvw%xy)jz%<{%<|%0})j~)j%%%%%%%)j%x%x)j%%)j)j)j%%%f%f%f%f%f%f%f%f%f%f%f%f%f%f% % % % % % % % % % %%%%%%%%%%%%%%%%%% % % % % % % % % % % % % % % % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % % % %%%%%%%%%%%%%%%%%%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O%P%Q%R%S%T%U%V%W%X%Y%Z%[%\%]%^%_%`%a%b%c%d%e%f%g%h%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% H% I% J% K% L% M% N%OP%OQ%OR%OS%OT%U%V%W%X%Y%Z%[%\%]%0^%0_%0`%0a%b%c%d%e%f%g%h%i%j%k%l%m%n%o%p%q%r%s%t%u%v%w%_x%_y%_z%_{%_|%_}%_~%%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%W%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%<%>%>%>%>%>%>% %d %d %d %d %d%d%d%d%d%d%,%,%,%,%,%,%,%,%,%,%,%,%, %,!%,"%,#%,$%,%%,&%,'%,(%,)%,*%,+%,,%,-%,.%,/%,0%,1%,2%,3%,4%,5%,6%,7%,8%,9%,:%,;%,<%,=%,>%,?%@%A%B%C%D%E%F%G%H%3I%3J%9K%9L%9M%9N%9O%&P%&Q%&R%&S%&T%&U%&V%&W%&X%&Y%&Z%&[%&\%&]%&^%&_%&`%&a%&b%&c%&d%&e%&f%&g%&h%&i%&j%&k%lm%ln)Co)Cp)Cq)Cr)Cs)Ct)Cu)Cv)Cw)Cxyz{|}~!      !*haskell2020-0.1.0.0-44bUAJKSeR41XYozmeXkaI Data.ListPreludeForeign.StablePtr Control.MonadData.IxData.Int Data.Ratio Data.Word Foreign.PtrForeign.ForeignPtr System.IO Data.Array Data.ComplexSystem.Environment System.ExitControl.ApplicativeSystem.IO.ErrorForeign.C.ErrorForeign.C.StringForeign.Marshal.ArrayForeign.Marshal.UtilsForeign.Marshal.AllocForeign.Marshal.Error Data.CharForeign.C.TypesForeign.StorableNumeric Data.Bits Data.MaybeForeign.Marshal isEOFErrorControl.Exceptioncatchmalloc Foreign.CForeignbaseGHC.Base++foldrghc-primGHC.PrimseqGHC.Listconcatfilterzip GHC.Stable newStablePtrprint Data.Tuplefstsnd otherwisemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negate>>=fmapControl.Monad.Failfail fromIntegral realToFrac toInteger toRationalguardjoin<*>pure*>BoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowGHC.ArrIx MonadFail Applicative GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.MaybeMaybeOrderingRatioRational StablePtrIOWordGHC.WordWord8Word16Word32Word64GHC.PtrPtrFunPtr Data.EitherEitherFalseNothingJustTrueLeftRightLTEQGTGHC.ForeignPtr ForeignPtrGHC.IO.Handle.TypesHandle rangeSizeinRangeindexrangeArraybounds listArray!indiceselemsassocs accumArrayaccumixmapphase magnitudepolarcismkPolar conjugateimagPartrealPart:+ComplexapproxRationalgetEnv getProgNamegetArgs exitSuccess exitFailureunless replicateM_ replicateM zipWithM_zipWithM mapAndUnzipMforever<=<>=>filterMoptionalfixIOwithFilehPrinthReadyreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputChar GHC.IO.HandlehShowhIsTerminalDevicehGetEchohSetEcho hIsSeekable hGetBuffering hIsWritable hIsReadable hIsClosedhIsOpenhTellhSeekhSetPosnhGetPosn hSetBuffering hLookAheadisEOFhIsEOF hSetFileSize hFileSizehClose HandlePosnGHC.IO.Handle.FDstderrstdinGHC.IO.Handle.Text hPutStrLnhPutStrhPutChar hGetContentshGetLinehGetCharannotateIOErrorioeGetFileName ioeGetHandleioeGetErrorString userErrorTypepermissionErrorTypeillegalOperationErrorType eofErrorType fullErrorTypealreadyInUseErrorTypedoesNotExistErrorTypealreadyExistsErrorType isUserErrorisPermissionErrorisIllegalOperation isFullErrorisAlreadyInUseErrorisDoesNotExistErrorisAlreadyExistsError mkIOErrorerrnoToIOErrorthrowErrnoPathIfMinus1_throwErrnoPathIfMinus1throwErrnoPathIfNullthrowErrnoPathIf_throwErrnoPathIfthrowErrnoPaththrowErrnoIfNullRetryMayBlockthrowErrnoIfNullRetrythrowErrnoIfNull throwErrnoIfMinus1RetryMayBlock_throwErrnoIfMinus1RetryMayBlockthrowErrnoIfMinus1Retry_throwErrnoIfMinus1RetrythrowErrnoIfMinus1_throwErrnoIfMinus1throwErrnoIfRetryMayBlock_throwErrnoIfRetry_throwErrnoIfRetryMayBlockthrowErrnoIfRetry throwErrnoIf_ throwErrnoIf throwErrno resetErrnogetErrno isValidErrnoeXDEV eWOULDBLOCKeUSERSeTXTBSY eTOOMANYREFS eTIMEDOUTeTIMEeSTALEeSRMNTeSRCHeSPIPEeSOCKTNOSUPPORT eSHUTDOWNeRREMOTE eRPCMISMATCHeROFSeREMOTEeREMCHGeRANGE ePROTOTYPEePROTONOSUPPORTePROTO ePROGUNAVAIL ePROGMISMATCH ePROCUNAVAILePROCLIMePIPE ePFNOSUPPORTePERM eOPNOTSUPPeNXIOeNOTTYeNOTSOCK eNOTEMPTYeNOTDIReNOTCONNeNOTBLKeNOSYSeNOSTReNOSReNOSPC eNOPROTOOPTeNONETeNOMSGeNOMEMeNOLINKeNOLCKeNOEXECeNOENTeNODEVeNODATAeNOBUFSeNFILE eNETUNREACH eNETRESETeNETDOWN eNAMETOOLONG eMULTIHOPeMSGSIZEeMLINKeMFILEeLOOPeISDIReISCONNeIOeINVALeINTR eINPROGRESSeILSEQeIDRM eHOSTUNREACH eHOSTDOWNeFTYPEeFBIGeFAULTeEXISTeDQUOTeDOMeDIRTY eDESTADDRREQeDEADLK eCONNRESET eCONNREFUSED eCONNABORTEDeCOMMeCHILDeBUSYeBADRPCeBADMSGeBADFeALREADYeAGAIN eAFNOSUPPORTeADV eADDRNOTAVAIL eADDRINUSEeACCESe2BIGeOKErrnowithCWStringLen withCWStringnewCWStringLen newCWStringpeekCWStringLen peekCWStringwithCAStringLen withCAStringnewCAStringLen newCAStringpeekCAStringLen peekCAStringcastCharToCSCharcastCSCharToCharcastCharToCUCharcastCUCharToCharcastCharToCCharcastCCharToCharcharIsRepresentablewithCStringLen withCString newCStringLen newCStringpeekCStringLen peekCStringCString CStringLenCWString CWStringLen advancePtr lengthArray0 moveArray copyArray withArrayLen0 withArray0 withArrayLen withArray newArray0newArray pokeArray0 pokeArray peekArray0 reallocArray0 reallocArray allocaArray0 allocaArray mallocArray0 mallocArray moveBytes copyByteswithMany maybePeek maybeWithmaybeNewtoBoolfromBoolwithnewfree reallocBytesrealloc allocaBytesalloca mallocBytes finalizerFree throwIfNull throwIfNeg_ throwIfNegthrowIf_throwIfGHC.IO.ExceptionioError ExitFailure ExitSuccessExitCode IOErrorTypehFlushstdoutBlockBuffering LineBuffering NoBuffering BufferMode GHC.IO.Device SeekFromEnd RelativeSeek AbsoluteSeekSeekModeForeign.ForeignPtr.ImpmallocForeignPtrArray0mallocForeignPtrArraynewForeignPtrEnvwithForeignPtr newForeignPtrfinalizeForeignPtrcastForeignPtrunsafeForeignPtrToPtrnewForeignPtr_addForeignPtrFinalizerEnvaddForeignPtrFinalizermallocForeignPtrBytes FinalizerPtrFinalizerEnvPtrGHC.IOFilePath userErrorIOError Data.OldListunwordswordsunlineslinesunfoldrsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLengthinsertByinsert partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndex elemIndices elemIndex stripPrefix isSeparatorisNumberisMarkisLetter digitToInt Text.ReadreadreadseitherCCharCSCharCUCharCShortCUShortCIntCUIntCLongCULongCLLongCULLongCFloatCDoubleCPtrdiffCSizeCWchar CSigAtomicCClockCTimeCFileCFposCJmpBufCIntPtrCUIntPtrCIntMaxCUIntMax intPtrToPtr ptrToIntPtr wordPtrToPtr ptrToWordPtrfreeHaskellFunPtrWordPtrIntPtr GHC.IO.IOMode ReadWriteMode AppendMode WriteModeReadModeIOModepokepeek pokeByteOff peekByteOff pokeElemOff peekElemOff alignmentsizeOfStorablecastPtrToStablePtrcastStablePtrToPtrdeRefStablePtr freeStablePtrcastPtrToFunPtrcastFunPtrToPtr castFunPtr nullFunPtrminusPtralignPtrplusPtrcastPtrnullPtrshowOctshowHex showIntAtBase showGFloat showFFloat showEFloatshowInt readSigned readFloatreadHexreadDecreadOctreadInt lexDigits readLitChar lexLitCharlex readParenreadList readsPrecText.ParserCombinators.ReadPReadSfromRat floatToDigits showFloatatanhacoshasinhtanhcoshsinhatanacosasintancossinlogBase**sqrtlogexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadix GHC.UnicodetoTitletoUppertoLowerisLowerisUpperisPrint isControl isAlphaNumisAlphaisSymbol isPunctuation isHexDigit isOctDigitisDigitisSpace isAsciiUpper isAsciiLowerisLatin1isAsciigeneralCategory NotAssigned PrivateUse SurrogateFormatControlParagraphSeparator LineSeparatorSpace OtherSymbolModifierSymbolCurrencySymbol MathSymbolOtherPunctuation FinalQuote InitialQuoteClosePunctuationOpenPunctuationDashPunctuationConnectorPunctuation OtherNumber LetterNumber DecimalNumber EnclosingMarkSpacingCombiningMarkNonSpacingMark OtherLetterModifierLetterTitlecaseLetterLowercaseLetterUppercaseLetterGeneralCategoryrotateRrotateLshiftRshiftLisSignedbitSizetestBit complementBitclearBitsetBitbitrotateshift complementxor.|..&.Bits Data.Functorvoidlcm^^^oddeven showSigned denominator numerator%divModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFractionmaxBoundminBoundfromEnumtoEnumpredsuccGHC.Charchr intToDigit showLitChar showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!! concatMaplookupnotElemelemallanyorandreversebreakspandroptake dropWhile takeWhilecycle replicaterepeatiterateminimummaximumscanr1scanrfoldr1scanl1scanlproductsumfoldl1'foldl1foldl'foldllengthnullinitlasttailheadmapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeuncurrycurrysubtractsignumabs*+asTypeOfuntil$!flip.constidordapliftM5liftM4liftM3liftM2liftMwhen=<<liftA3liftA<**><*liftA2manysome<|>empty Alternative MonadPlusStringGHC.Err undefinederror/=<=compare&&||not<>maxminmapMmapM_forMforM_sequence sequence_foldMfoldM_return>>mzeromplusmsum mapAccumL mapAccumRfind maximumBy minimumBysplitAtgcd peekArrayunsafeLocalStatemallocForeignPtrtouchForeignPtrarray//exitWithopenFile hWaitForInputtry