E|#      !"#$%&'()*+,- . /0 1 2 3 4 5 6 7 8 9 :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`ab cdef g h i j k l m nopqrstuv wxyz{|} ~                  !"#$%&'() * + , - . / 0 1 2 3456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrs t u v w x y z { |}~Safe  Safebfghijklmv} }vmlkjihgfbSafeSafe Safe5Safe      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~Safe      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq Trustworthy 3456789:;< <;:9876543Safeh     h      Trustworthy5=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopq5ZQEFGHIJKLMNOPYRSTUVWXhgfedcba`_^]\[qponmlkjiDCBA@?>= Trustworthy ()*+,z{|r |z{,+*r)( Safe-..- Safe 0123456789 9876543210Saferstuvwxyz{|}~  Trustworthy stuvwxyz{)*+,-./012stuvwxyz{stuvwx210/.-,+)*z{ystuvwxyz{SafeSafe  Safe   Trustworthy|3With a source of random number supply in hand, the | class allows the ;programmer to extract random values of a variety of types. Minimal complete definition: } and ~. }Takes a range (lo,hi) and a random number generator  gA, and returns a random value uniformly distributed in the closed  interval [lo,hi]3, together with a new generator. It is unspecified  what happens if lo>hi/. For continuous types there is no requirement  that the values lo and hi% are ever produced, but they may be, 3 depending on the implementation and the interval. ~ The same as }4, but using a default range determined by the type: ! For bounded types (instances of  , such as ), ) the range is normally the whole type. F For fractional types, the range is normally the semi-closed interval  [0,1).  For *, the range is (arbitrarily) the range of . Plural variant of } , producing an infinite list of 5 random values instead of returning a new generator. Plural variant of ~ , producing an infinite list of 5 random values instead of returning a new generator.  A variant of }. that uses the global random number generator  (see Random#globalrng).  A variant of ~. that uses the global random number generator  (see Random#globalrng). The  instance of  has a  of at least 30 bits. The result of repeatedly using % should be at least as statistically robust as the (Minimal Standard Random Number Generator described by [ Random#Park,  Random#Carta]. -Until more is known about implementations of , all we require is that 3 deliver generators that are (a) not identical and 2(b) independently robust in the sense just given. The  and  instances of % provide a primitive way to save the $state of a random number generator. It is required that  ( g) == g.  In addition, = may be used to map an arbitrary string (not necessarily one  produced by ) onto a value of type . In general, the   instance of  has the following properties: ) It guarantees to succeed on any string. ? It guarantees to consume only a finite portion of the string. G Different argument strings are likely to result in different results.  The class . provides a common interface to random number  generators. Minimal complete definition:  and . The  operation returns an  that is uniformly distributed  in the range returned by  (including both end points),  and a new generator. The ; operation allows one to obtain two distinct random number K generators. This is very useful in functional programs (for example, when F passing a random number generator down to recursive calls), but very F little work has been done on statistically robust implementations of   ([ Random#Burton, Random#Hellekalek] $ are the only examples we know of). The 2 operation yields the range of values returned by  the generator. It is required that:  If (a,b) =  g, then a < b.  " always returns a pair of defined s. "The second condition ensures that  cannot examine its H argument, and hence the value it returns can be determined only by the  instance of 1. That in turn allows an implementation to make  a single call to  to establish a generator's range, without 6 being concerned that the generator returned by (say)  might have . a different range to the generator passed to . /The default definition spans the full range of .  The function 5 provides an alternative way of producing an initial generator, by mapping an - into a generator. Again, distinct arguments 1should be likely to produce distinct generators. )Sets the global random number generator. )Gets the global random number generator. Applies ) to the current global random generator, < updates it with one of the results, and returns the other. BUses the supplied function to get a value from the current global Jrandom generator, and updates the global generator with the new generator 'returned by the function. For example, rollDice gets a random integer between 1 and 6:  rollDice :: IO Int * rollDice = getStdRandom (randomR (1,6)) (|}~|}~|}~|}~SafeSafeSafeSafe    Safe// TrustworthySafeThe : function captures a common allocate, compute, deallocate H idiom in which the deallocation step must occur even in the case of an I error during computation. This is similar to try-catch-finally in Java. ?This version handles only IO errors, as defined by Haskell 98.  The version of bracket in Control.Exception handles all exceptions,  and should be used instead.  A variant of # where the middle computation doesn't want x. ?This version handles only IO errors, as defined by Haskell 98.  The version of bracket_ in Control.Exception handles all exceptions,  and should be used instead. The construct  comp( exposes IO errors which occur within a / computation, and which are not fully handled. Non-I/:O exceptions are not caught by this variant; to catch all  exceptions, use  from Control.Exception. M:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`acdenopqrstuwxy~MZ~KwJHYXWIUMxTSRa;`_V^]\[:QPONLutsrqponedcyAGFEDCB@?><=Safe !"#$%&'( !"#$%&'( SafeSafe Trustworthy !"#$%&'  !"#$%&'!"#!"$!%&!%'!%(!)*!"+!",!"-!".!"/!"0!12!13!"!"4!5!1678!9!9:78!";!<=!5>!5?!5@!5A!5!5B!5C!5D!5E!5F!5G!5H!5I!5J!5K!5L!MN!MO!PQ!PR!PS!TU!TV!WX!YZ!Y[!Y\!Y]!Y^!Y_!Y`!Ya!Yb!Y !)c!)d!)e!)f!)g!)h!)i!)j!)k!)l!)m!)n!)o!)p!qr!qs!qt!qu!vw!vx!vy!vz!v{!v|!v}!v~!v!v!v!v!v!v!v!!!!!!!!!!!!!!!!!!!!!!!!!!!!!q!v!!!!!!<!<!<!<!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!9!9!9!1!1!1 !1 !1 !1 !1 !1!1!1!1!1!1!1!1!1!1!1!1!1!1!!! !%!!%"!%#!%$!%%!%&!%'!%(!%)!%*!%+!%,!%-!%.!%/!%0!%1!%2!%3!%4!%5!%6!%7!%8!%9!%:!%;!%<!%=!%>!%?!%@!%A!%B!%C!%D!%E!%F!GH!GI!GJ!GK!GL!GM!GN!GO!GP!GQ!GR!G !"S!T!U!V!W!X!Y!Z![!\!]!^!_`ab`ac`ad`ae`af`ag`ah`ai`aj`aklmnlmolmplmqlmrlmslmtlmulmvlmvwxywxzwx{wx|wx}wx~wxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwxwx         !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! ! ! ! ! ! ! ! ! !!!!!!!!!!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'!(!)!*!+!,!-!.!/!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!{!|!}!~!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! {!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!78 !!!!!78!!!!!!!!!!!!!!!!!! ! ! ! ! !!!!!!!!!!!!!!!!! !!!"!#!$!%!&!'(!')!'*!'+,haskell98libraries-2.0.0.2ListIOMonadIxCharRatioArraySystemCPUTimeComplex MarshalErrorMaybe DirectoryLocaleTimeRandom MarshalUtils MarshalArray MarshalAllocCTypesCForeignCErrorCStringBitsStorableWordPtr StablePtr ForeignPtrControl.ExceptiontryIntbaseGHC.Base++foldrGHC.Listconcatfilterzip System.IOprintmapfail>>=>>fmapreturn Control.MonadguardliftMFunctorGHC.Arr MonadPlusghc-prim GHC.TypesGHC.RealRationalStringGHC.IO.Handle.TypesHandlerangeindexinRange rangeSizearraybounds listArray!indiceselemsassocs accumArray//accumixmap System.Exit exitFailureexitWithSystem.EnvironmentgetEnv getProgNamegetArgsSystem.CPUTimecpuTimePrecision getCPUTime Data.RatioapproxRational Data.Complexphase magnitudepolarcismkPolar conjugateimagPartrealPart:+hPrinthReadyreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.Handle.FDopenFileisEOFstderrstdin GHC.IO.Handle hIsSeekable hGetBuffering hIsWritable hIsReadable hIsClosedhIsOpenhSeekhSetPosnhGetPosn hSetBuffering hLookAheadhIsEOF hFileSizehClose HandlePosnGHC.IO.Handle.Text hPutStrLnhPutStrhPutChar hGetContentshGetLinehGetChar hWaitForInputSystem.IO.ErrorannotateIOErrorioeGetFileName ioeGetHandleioeGetErrorString userErrorTypepermissionErrorTypeillegalOperationErrorType eofErrorType fullErrorTypealreadyInUseErrorTypedoesNotExistErrorTypealreadyExistsErrorType isUserErrorisPermissionErrorisIllegalOperation isEOFError isFullErrorisAlreadyInUseErrorisDoesNotExistErrorisAlreadyExistsError mkIOErrorstdouthFlushGHC.IO.ExceptionioError ExitSuccess ExitFailureExitCode IOErrorType NoBuffering LineBufferingBlockBuffering BufferMode Data.Listunwordswordsunlineslinesproductsumfoldl1unfoldrsortBysorttailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLength minimumBy maximumByminimummaximuminsertByinsert mapAccumR mapAccumL partition transpose intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isSuffixOf isPrefixOf findIndices findIndexfind elemIndices elemIndex Data.Char digitToInt GHC.UnicodetoUppertoLower GHC.IO.Device AbsoluteSeek RelativeSeek SeekFromEndSeekMode GHC.IO.IOModeReadMode WriteMode AppendMode ReadWriteModeIOModeGHC.Read readLitChar lexLitCharGHC.IOFilePath userErrorIOError denominator numerator%apliftM5liftM4liftM3liftM2unlesswhenfoldM zipWithM_zipWithM mapAndUnzipMjoinmsumfilterMmapM_mapM sequence_sequence=<<mplusmzeroGHC.CharchrGHC.Show intToDigit showLitCharunzip3unzipzipWith3zipWithzip3!! concatMaplookupnotElemelemallanyorandreversebreakspansplitAtdroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrfoldr1scanl1scanlfoldllengthnullinitlasttailhead Data.MaybemapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeNothingJustordisAsciiisLatin1 isControlisPrintisSpaceisUpperisLowerisAlphaisDigit isOctDigit isHexDigit isAlphaNumdirectory-1.2.0.1System.Directory doesFileExistdoesDirectoryExistsetCurrentDirectorygetCurrentDirectorygetDirectoryContents renameFilerenameDirectory removeFileremoveDirectorycreateDirectoryold-locale-1.0.0.5 System.LocaledefaultTimeLocale time12FmttimeFmtdateFmt dateTimeFmtamPmmonthswDays TimeLocaleold-time-1.1.0.1 System.TimeformatCalendarTimecalendarTimeToString toClockTime toUTCTimetoCalendarTimediffClockTimesaddToClockTime getClockTimeJanuaryFebruaryMarchAprilMayJuneJulyAugust SeptemberOctoberNovemberDecemberMonthSundayMondayTuesday WednesdayThursdayFridaySaturdayDay ClockTimectIsDSTctTZctTZNamectYDayctWDay ctPicosecctSecctMinctHourctDayctMonthctYear CalendarTime tdPicosectdSectdMintdHourtdDaytdMonthtdYearTimeDiffprocess-1.1.0.2System.Processsystem Permissionsreadablewritable executable searchablegetModificationTimegetPermissionssetPermissionsrandomRrandomrandomRsrandoms randomRIOrandomIOStdGen RandomGennextsplitgenRangemkStdGen setStdGen getStdGen newStdGen getStdRandombracketbracket_catchForeign.Marshal.Utils moveBytes copyByteswithMany maybePeek maybeWithmaybeNewtoBoolfromBoolwithnewForeign.Marshal.Errorvoid throwIfNull throwIfNeg_ throwIfNegthrowIf_throwIfForeign.Marshal.Array advancePtr lengthArray0 moveArray copyArray withArrayLen0 withArray0 withArrayLen withArray newArray0newArray pokeArray0 pokeArray peekArray0 peekArray reallocArray0 reallocArray allocaArray0 allocaArray mallocArray0 mallocArrayForeign.Marshal.Allocfree reallocBytesreallocallocaBytesAligned allocaBytesalloca mallocBytesmalloc finalizerFreeForeign.C.TypesCCharCSCharCUCharCShortCUShortCIntCUIntCLongCULongCLLongCULLongCFloatCDoubleCPtrdiffCSizeCWchar CSigAtomicCClockCTime CUSeconds CSUSecondsCFileCFposCJmpBufCIntPtrCUIntPtrCIntMaxCUIntMaxForeign.C.ErrorerrnoToIOErrorthrowErrnoPathIfMinus1_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 eADDRINUSEeACCESe2BIGeOKErrnoForeign.C.StringwithCWStringLen withCWStringnewCWStringLen newCWStringpeekCWStringLen peekCWStringwithCAStringLen withCAStringnewCAStringLen newCAStringpeekCAStringLen peekCAStringcastCharToCSCharcastCSCharToCharcastCharToCUCharcastCUCharToCharcastCharToCCharcastCCharToCharcharIsRepresentablewithCStringLen withCString newCStringLen newCStringpeekCStringLen peekCString CStringLenCWString CWStringLen Data.BitspopCountDefaulttestBitDefault bitDefaultpopCountrotateRrotateL unsafeShiftRshiftR unsafeShiftLshiftLisSignedbitSizetestBit complementBitclearBitsetBitbitrotateshift complementxor.|..&.Foreign.Storablepokepeek pokeByteOff peekByteOff pokeElemOff peekElemOff alignmentsizeOfGHC.EnumBounded integer-gmpGHC.Integer.TypeIntegerShowRead Text.ReadreadshowreadsgetTime stdFromString mkStdGen32 createStdGenmkStdRNGrandomIvalIntegerrandomIvalDouble int32CountiLogBasestdRangestdNextstdSplit theStdGen $fRandomFloat$fRandomDouble$fRandomInteger $fRandomBool $fRandomChar $fRandomInt $fReadStdGen $fShowStdGen$fRandomGenStdGenGHC.WordWord8Word16Word32Word64GHC.PtrFunPtr Foreign.Ptr intPtrToPtr ptrToIntPtr wordPtrToPtr ptrToWordPtrfreeHaskellFunPtrWordPtrIntPtrcastPtrToFunPtrcastFunPtrToPtr castFunPtr nullFunPtrminusPtralignPtrplusPtrcastPtrnullPtr GHC.Stable newStablePtrcastPtrToStablePtrcastStablePtrToPtrdeRefStablePtr freeStablePtrGHC.ForeignPtrForeign.ForeignPtrunsafeForeignPtrToPtrForeign.ForeignPtr.ImpmallocForeignPtrArray0mallocForeignPtrArraynewForeignPtrEnvwithForeignPtr newForeignPtrfinalizeForeignPtrcastForeignPtrtouchForeignPtrnewForeignPtr_addForeignPtrFinalizerEnvaddForeignPtrFinalizermallocForeignPtrBytesmallocForeignPtr FinalizerPtrFinalizerEnvPtrGHC.IntInt8Int16Int32Int64