p@      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOP Q RSTUV W X Y Z [ \ ] ^ _ ` a b c d efghijklmnop q r s tuvwxyz{|}~       !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijkl m nopqrstuvwxyz{|} ~                          !"#$%&'()*+,-./ 0 1 2 3456789:;<=>?@ABCDEFGHIJKLM N O P Q RSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !"#$%&'()*+,-./01234567 89: ; < = > ? 08Strict (call-by-value) application, defined in terms of . 1The 12 function establishes a handler that receives any  # raised in the action protected by 1.  An  is caught by F the most recent handler established by one of the exception handling  functions. These handlers are  not selective: all %s are caught. Exception propagation E must be explicitly provided in a handler by re-raising any unwanted  exceptions. For example, in  F f = catch g (\e -> if IO.isEOFError e then return [] else ioError e)  the function f returns [] when an end-of-file exception  (cf. System.IO.Error.isEOFError ) occurs in g; otherwise, the 4 exception is propagated to the next outer handler. CWhen an exception propagates outside the main program, the Haskell  system prints the associated  value and exits the program. Non-I/:O exceptions are not caught by this variant; to catch all  exceptions, use Control.Exception.catch from Control.Exception. 22 x y6 is the greatest (positive) integer that divides both x  and y; for example 2 (-3) 6 = 3, 2 (-3) (-6) = 3,  2 0 4 = 4. 2 0 0 raises a runtime error. 33 n xs( returns a tuple where first element is xs prefix of  length n2 and second element is the remainder of the list:  1 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).  3$ is an instance of the more general ,  in which n may be of any integral type.   #$%&'()*+,-./0145678=>@BJKLMNOtuvwxyz{|}~|UVWXY]^_`abcdefghijklmnopqrstuvwxyz{|      -./01234LM JNO>/.-5K  %, $    #8=76@+. ('&nmlkjihgfedcba`_^]0/|{zyxwvutsrqpo2)* 0 31Y-XWVUB~}|{zyxwvtu|10123A3456A56432RSTU2RSTU@5K   ST!"#$%&'()*+,@5K#%'&(,$)*+!"   TS89:;<89:;<?@e?@eCDEFGCDEFGHI789:;<=>?H?>=<;I:987  @ABCDEFGHIJKLRZ[\BFA@EDC\[GLJKIHRZ4Errors of type 4 are used by the B monad. This is an  abstract type; the module System.IO.Error provides functions to * interrogate and construct values of type 4. 5The 52 function establishes a handler that receives any 4 # raised in the action protected by 5. An 4 is caught by ( the most recent handler established by 5. These handlers are  not selective: all 4%s are caught. Exception propagation E must be explicitly provided in a handler by re-raising any unwanted  exceptions. For example, in  F f = 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 g; otherwise, the 4 exception is propagated to the next outer handler. CWhen an exception propagates outside the main program, the Haskell  system prints the associated 4 value and exits the program. 6The construct 6 comp( exposes IO errors which occur within a / computation, and which are not fully handled. |4564|56456}~~} &'()*+,-. .-,+*)('&   !"#$%  "#$% ! 7 Computation 7 code# terminates the program, returning code to the program' s caller. GThe caller may interpret the return code as it wishes, but the program should return } to mean normal completion, and ~ n5 to mean that the program encountered a problem from 'which it could not recover. The value a is equal to 7 (~ exitfail), where exitfail is implementation-dependent. 7 bypasses the error handling in the I/%O monad and cannot be intercepted by 1 from the Prelude. `a}~7}~7a`7tuvwxyz{xwzyvut{nopqrssrqpon bcdefghijk jkihgfedcb86Convert an array of given length into a Haskell list. OPQRSTUVWXYZ[\]^_`a8a`_^]\8[ZYXWVTUSRQPO823456789:;<=>?@ABCDEFGHIJKLMNKLJIHGFEDBC@A>?=<;:98MN765432      !"#$%&'()*+,-./0110/.-,+*)('&%$#"!      9GSometimes an external entity is a pure function, except that it passes  arguments and/'or results via pointers. The function unsafeLocalState0 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. +It is expected that this operation will be *replaced in a future revision of Haskell. -OPQRSTUVWXYZ[\]^_`abcdefghijknopqrstuvwxyz{8999 fghijklmno onmljihgfk bcddcb :"Allocate some memory and return a P to it. The memory ) will be released automatically when the P is discarded. : is equivalent to  6 do { p <- malloc; newForeignPtr finalizerFree p } Calthough it may be implemented differently internally: you may not $ assume that the memory returned by : has been  allocated with Foreign.Marshal.Alloc.malloc. ;1This function ensures that the foreign object in < question is alive at the given place in the sequence of IO  actions. In particular   does a ; after it  executes the user action. CNote that this function should not be used to express dependencies  between finalizers on P"s. For example, if the finalizer  for a P F1 calls ; on a second  P F20, then the only guarantee is that the finalizer  for F2+ is never started before the finalizer for F1. 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 A objects with ordering constraints between them. To express the = ordering robustly requires explicit synchronisation between  finalizers. P:;P;::;{89:;<ACDEFGHIPOPQRSTUVWXYZ[\]^_`abcdefghijknopqrstuvwxyz{&'()*+,-.3456789:;<=>?}~89:;      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMN   !"#$%o 3o 3(!")*3(*)3!" < Computation <  file mode# allocates and returns a new, open  handle to manage the file file. It manages input if mode  is M , output if mode is N or O, & and both input and output if mode is P. EIf the file does not exist and it is opened for output, it should be  created as a new file. If mode is N and the file = already exists, then it should be truncated to zero length. E Some operating systems delete empty files, so there is no guarantee ' that the file will exist following an < with mode  N4 unless it is subsequently written to successfully. 4 The handle is positioned at the end of the file if mode is  O4, and otherwise at the beginning (in which case its  internal position is 0). 6 The initial buffer mode is implementation-dependent. This operation may fail with:  isAlreadyInUseError5 if the file is already open and cannot be reopened;  isDoesNotExistError if the file does not exist; or  isPermissionError8 if the user does not have permission to open the file. = Computation = hdl t * waits until input is available on handle hdl.  It returns M" as soon as input is available on hdl,  or L! if no input is available within t milliseconds. Note that  = waits until one or more full  characters 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. E a decoding error, if the input begins with an invalid byte sequence  in this Handle' s encoding. CBQpqrstuvwxyz{|}~lm/012MNOPQ<=CBpQlq<QMNOPxwvm2/01=sry~}|{ztu<= >CConstruct an array with the specified bounds and containing values ( for given indices within these bounds. AThe array is undefined (i.e. bottom) if any index in the list is  out of bounds. If any E 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, > is E strict in the bounds argument and in the indices of the association D 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]]) BNot every index within the bounds of the array need appear in the F association list, but the values associated with indices that do not ) appear will be undefined (i.e. bottom). GIf, in any dimension, the lower bound is greater than the upper bound, E then the array is legal, but empty. Indexing an empty array always " gives an array-bounds error, but W still yields the bounds ' with which the array was constructed.  a pair of bounds, each of the index type 0 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))'.  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. ?GConstructs an array identical to the first argument except that it has 9 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]] 5is the same matrix, except with the diagonal zeroed. <Repeated indices in the association list are handled as for >: 1 the resulting array is undefined (i.e. bottom), 2RSTUVWXYZ[\]^_>? V>X]YWZ[\?^_>?@ !" #$ !%&'( )* )+ ), -. / 01 02 !3 !4 !5 67 68 9: ;< ;= ;> ;? @A @B 6C !D !E !F !G !H 9I 9J 9K 9L M N ;O ;P @Q RS 9T 9U !V !W 6X @Y Z[ 9\ R] 9^ _` ab c&de&df&dg&dh&di jk jl jm jnopq&rs 9t 9u -v&dw xy xz x{ x| x} ~ ~  !&d&d     a a a a a a a a a a a a a a                                                                                   ! " # $ % & ' ( ) * + , - . / 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 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 FG FH FI FJ FK 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 op oq or os -t -u -v -w ~x ~y ~z ~{ ~| ~} ~~ ~ ~                   Z Z Z Z Z Z Z  R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R R                      9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 #                               6 6 6 6 6 _ _ _ _ _ _ _ _ _ _ ) ) ) ) ) ) ) ) )! )" )# )$ )% )& )' )( )) )* )+ ), )- ). )/ )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 0P 0Q !R !S !T !U !V !W !X !Y @Z @[ @\ @] @^ @_ @` @a @b @c Fd Fe Ff Fg Fh Fi Fj Fk Fl Fm Fn Fo&rp&rq&rrstuvtw xyz { | } ~  haskell2010-1.1.0.0PreludeForeign.StablePtr Control.MonadData.IxData.Int Data.Ratio Data.Word Foreign.PtrForeign.ForeignPtr System.IO Data.Array System.ExitSystem.Environment Data.ComplexSystem.IO.ErrorForeign.C.ErrorForeign.C.StringForeign.Marshal.ArrayForeign.Marshal.UtilsForeign.Marshal.ErrorForeign.Marshal.Alloc Data.List Data.CharForeign.C.TypesForeign.StorableNumeric Data.Bits Data.MaybeForeign.MarshalForeign Foreign.CbaseGHC.Base++GHC.Errerrorfoldrghc-primGHC.PrimseqGHC.Listconcatfilterzip GHC.Stable newStablePtrprint Data.Tuplefstsnd otherwisemap$GHC.Num fromInteger-GHC.Real fromRationalGHC.EnumenumFrom enumFromThen enumFromToenumFromThenTo GHC.Classes==>=negatefail>>=>>fmapreturn fromIntegral realToFrac toInteger toRationalguardliftMBoundedEnumEq GHC.FloatFloating FractionalIntegralMonadFunctorNumOrdGHC.ReadReadReal RealFloatRealFracGHC.ShowShowGHC.ArrIx MonadPlus GHC.TypesBoolCharDoubleFloatIntGHC.IntInt8Int16Int32Int64 integer-gmpGHC.Integer.TypeInteger GHC.OrderingOrderingRatioRational StablePtrIOGHC.WordWordWord8Word16Word32Word64GHC.PtrPtrFunPtr Data.EitherEitherStringFalseTrueLeftRightGHC.ForeignPtr ForeignPtrGHC.IO.Handle.TypesHandlerangeindexinRange rangeSizeArraybounds listArray!indiceselemsassocs accumArrayaccumixmap exitSuccess exitFailuregetEnv getProgNamegetArgsapproxRationalphase magnitudepolarcismkPolar conjugateimagPartrealPart:+ComplexfixIOwithFilehPrinthReadyreadIOreadLn appendFile writeFilereadFileinteract getContentsgetLinegetCharputStrLnputStrputCharGHC.IO.Handle.FDisEOFstderrstdin GHC.IO.HandlehShowhIsTerminalDevicehGetEchohSetEcho hIsSeekable hGetBuffering hIsWritable hIsReadable hIsClosedhIsOpenhTellhSeekhSetPosnhGetPosn hSetBuffering hLookAheadhIsEOF hSetFileSize hFileSizehClose HandlePosnGHC.IO.Handle.Text hPutStrLnhPutStrhPutChar hGetContentshGetLinehGetCharannotateIOErrorioeGetFileName ioeGetHandleioeGetErrorString userErrorTypepermissionErrorTypeillegalOperationErrorType eofErrorType fullErrorTypealreadyInUseErrorTypedoesNotExistErrorTypealreadyExistsErrorType isUserErrorisPermissionErrorisIllegalOperation isEOFError 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 maybeWithmaybeNewtoBoolfromBoolwithnewstdouthFlushvoid throwIfNull throwIfNeg_ throwIfNegthrowIf_throwIffree reallocBytesrealloc allocaBytesalloca mallocBytesmalloc finalizerFreeGHC.IO.ExceptionioError ExitSuccess ExitFailureExitCode IOErrorType NoBuffering LineBufferingBlockBuffering BufferModeunsafeForeignPtrToPtrForeign.ForeignPtr.ImpmallocForeignPtrArray0mallocForeignPtrArraynewForeignPtrEnvwithForeignPtr newForeignPtr intPtrToPtr ptrToIntPtr wordPtrToPtr ptrToWordPtrfreeHaskellFunPtrWordPtrIntPtrfinalizeForeignPtrcastForeignPtrnewForeignPtr_addForeignPtrFinalizerEnvaddForeignPtrFinalizermallocForeignPtrBytes FinalizerPtrFinalizerEnvPtr Text.Readreadreadseitherunwordswordsunlineslinesproductsumfoldl1'foldl1foldl'unfoldrsortBysort permutations subsequencestailsinitsgroupBygroupdeleteFirstsByunzip7unzip6unzip5unzip4zipWith7zipWith6zipWith5zipWith4zip7zip6zip5zip4genericReplicate genericIndexgenericSplitAt genericDrop genericTake genericLength minimumBy maximumByminimummaximuminsertByinsert mapAccumR mapAccumL partition transpose intercalate intersperse intersectBy intersectunionByunion\\deleteBydeletenubBynub isInfixOf isSuffixOf isPrefixOf findIndices findIndexfind elemIndices elemIndex stripPrefix isSeparatorisSymbol isPunctuationisNumberisMarkisLettergeneralCategory digitToIntUppercaseLetterLowercaseLetterTitlecaseLetterModifierLetter OtherLetterNonSpacingMarkSpacingCombiningMark EnclosingMark DecimalNumber LetterNumber OtherNumberConnectorPunctuationDashPunctuationOpenPunctuationClosePunctuation InitialQuote FinalQuoteOtherPunctuation MathSymbolCurrencySymbolModifierSymbol OtherSymbolSpace LineSeparatorParagraphSeparatorControlFormat Surrogate PrivateUse NotAssignedGeneralCategory GHC.UnicodetoTitletoUppertoLower isAsciiUpper isAsciiLowerCCharCSCharCUCharCShortCUShortCIntCUIntCLongCULongCLLongCULLongCFloatCDoubleCPtrdiffCSizeCWchar CSigAtomicCClockCTimeCFileCFposCJmpBufCIntPtrCUIntPtrCIntMaxCUIntMaxpokepeek pokeByteOff peekByteOff pokeElemOff peekElemOff alignmentsizeOfStorable GHC.IO.Device AbsoluteSeek RelativeSeek SeekFromEndSeekModecastPtrToStablePtrcastStablePtrToPtrdeRefStablePtr freeStablePtrcastPtrToFunPtrcastFunPtrToPtr castFunPtr nullFunPtrminusPtralignPtrplusPtrcastPtrnullPtrshowOctshowHex showIntAtBase showGFloat showFFloat showEFloatshowInt readSigned readFloatreadHexreadDecreadOctreadInt GHC.IO.IOModeReadMode WriteMode AppendMode ReadWriteModeIOMode lexDigits readLitChar lexLitCharlex readParenreadList readsPrecText.ParserCombinators.ReadPReadSfromRat floatToDigits showFloatacoshatanhasinhcoshtanhsinhacosatanasincostansinlogBase**logsqrtexppiatan2isIEEEisNegativeZeroisDenormalized isInfiniteisNaN scaleFloat significandexponent encodeFloat decodeFloat floatRange floatDigits floatRadixrotateRrotateLshiftRshiftLisSignedbitSizetestBit complementBitclearBitsetBitbitrotateshift complementxor.|..&.BitsGHC.IOFilePath userErrorIOErrorlcm^^^oddeven showSigned denominator numerator%divModquotRemmoddivremquotrecip/floorceilingroundtruncateproperFraction undefinedapliftM5liftM4liftM3liftM2unlesswhen replicateM_ replicateMfoldM_foldM zipWithM_zipWithM mapAndUnzipMjoinforever<=<>=>msumforM_forMfilterMmapM_mapM sequence_sequence=<<mplusmzerosubtractsignumabs*+ intToDigit showLitChar showParen showStringshowCharshowsShowSshowListshow showsPrecunzip3unzipzipWith3zipWithzip3!! concatMaplookupnotElemelemallanyorandreversebreakspandroptake dropWhile takeWhilecycle replicaterepeatiteratescanr1scanrfoldr1scanl1scanlfoldllengthnullinitlasttailheadmapMaybe catMaybes listToMaybe maybeToList fromMaybefromJust isNothingisJustmaybeNothingJustMaybemaxBoundminBoundfromEnumtoEnumpredsuccuncurrycurryasTypeOfuntilflip.constidordchrnot||&&/=minmax<=><compareisAsciiisLatin1 isControlisPrintisSpaceisUpperisLowerisAlphaisDigit isOctDigit isHexDigit isAlphaNumGTEQLT$!catchgcdsplitAttryexitWith peekArrayunsafeLocalStatemallocForeignPtrtouchForeignPtropenFile hWaitForInputarray//