HOOGб 7 dW9!$#&%& 'LRRTTVV0099;;==??AA::\\__aaddff{{~~bb]]cceekk""((,,4 4 < < ? ?   d d , , . . f f h h ??AA!!* ')+*+-,,bb .--/..0>?&&N N S S r r P P 1!UURRIIII% % V V J J OOMR]^hj2@ASSJJ 3MNKKcc,,3348=LLEEdd--445 >BMMxxee..556:;NNFFWWff//66789gg00778:Agh989<=BB:!CC<":@@NN=  23:>ABDDIIKKDDFF> !!$&()+.4579<<?HOO@@?&&5588IKDF@IK\LL^11FFMP_Enn**CD    A B m m " " s s   T T ;<bbLLNNPPRRWWYY\\^^bbddhh  0399aQ.19AAUW\\^^jjluxx}~   ")+/77DDFFOOQQSUY^aacchhqquvz|    466??BBEEIPUYijllqquuxy&HbS\^^gg  **/**,,DDFFQR^^ffkkooww~44@@DDXXggiixx||XXcceeklss~~  ..NN^^zz||55<=EE]]__ssCc]fjjrrttwwyy}} $$**137:??JJQQU^eelpuuxx    '11AAZZkkmorrwwyy  *-77::@BEEKMOORReehikvxy{{P7dg !!&&++11;;=>@@MQZ\`bdegissuu{{##&&**66CCEFVV``ttww~ BBNNVVeejjxx,eXY[^ggjjlux~""$%()++-.2256<DMNQQTTWWY_dehhjjltv~  !&&(.3357CCEGKKRRTY[[_jllnxfaalloq{{    66<<CIYY[[%%HHoo   8BDGGXY[fhr #$((4499WWzzLmmvv"**@@cczzgmmpu  "#++11JKYYtt0044JJ\\aaqqvv$$)+239:<=HLUUbbst-.67DDKKMM``  "$&'44MHQQWW^^gglntvyzhcciirsvx  ""*-3399GH--hhttxx{{    +,^_egno**--4477::LLNNRR`d||##%%,-69@@i\\egijn{  !),78=?GHKTYY[[ttxx{|~~  !!$',/2377DDQRWW\\adffhhjjmmoqwx~~jwzuu(*RRGH  % % iik[[jj13NNQQU^mt!//13^^    %%AAYYkkoouu  %%CCOOeekk--//55<<llrrUUad||NN    - 2 C K ] ] c c h j o o y y   l[\^^fgouw{    ((33JJU_bceejj  "BIPWW^^bjpprs{{   467;TWXggiikkxxm\\_addggmmrswx{{}} "((..??VV\\ff~~  //33CCPx{|  !#&&-0BCEGIPRRTW]]cdiikkpprr}~Rndellnuw{}} !"$$..1166??BBDDFGLQVWYY[\gioostxz!!&&004477LLORVY\\^^`acfhhjmpqwwyoXY[\beggijmnpxzz}} !$',,1266;<??JJLLQQV^`joou~!!''**--07C    (p]^prttwwyy ""%'--?@VWzz~~   ''//77JJOOTUZx||!#&'++/188IPXXq]  %%''22OO]]aa{|   )))*//25dett >>GG``QV   W W f f   - O \ \ 2 2 = = H K h h 45%%-.>>rWW``ddhimmovx ""&&((,,..1144<<??JJYY\\dek~!!+.8BDDGGJJMMQQYY[\aacdnx}}CsY\bcfhkkmnrz||~~##&&)+..3358=@EHPQSTiillppt  !)--57FFNOTUXYaaddhhklnxt[^eeginnpsvx "#)-226699?BGIQTVW[[]^ffmprrtux~&&,.2377DDKKQQVZ]]``ehlmqqttvxz}$u[\_aggiillwz   .12YY]]__gitt{|    (*77JJPPkkoo}} 4iiqr &&((,,..0035CCLOVVYY^^cceestyvXYqqssuuxxz{\\yz !ddpprs--ZZz~  !!,,..Zdjj+,33ACXX..OOVVnntv!"//4577EFPP_assyzG H K K ! " 9 : K L Q Q ww&&BBGHv~jjwx44YY^_efnoCCNNZ[aeopuv||,-//55<<yy77FHoo  --==PPwwLLhh6 7 ] ] c c j j o o t u y { ~ ~   1 1 i * * 5 5 8 8 ` ` w w y y { { ovxnnLLWWjj..``ii~'(BBEE  ""XXf!!``{|<<QQYY&'33GG-.;;>>BBDDYYnn~! ! 2 2 C F e e >ty``ddffiikktvyz,-NN[[`arrzz%%--DDqqssvv ((--22@@DDggjjllooqqww||$$11WX`d))-/55skz9oq{{TToo  ++//||+,88DHpp  ++PP^ ^ N N l l y y , , ] ]     HMRRx|DDGGPPbg(>|69GH?B~=>CF4QP!ÉOYSY()p->?ALPHA_; AbsoluteTime%AddrInfo AddrInfoFlag AlgorithmAllɈAnyArithExceptionArrayExceptionAsyncExceptionBETA_} BlockReasonpBodyYBool·BoxLabel BufferMode BufferState ByteString1CCharCClockCDevCDouble,CFloatӅ CGIRequestͅ CGIResultCGITCIno^CIntCIntMax΄CIntPtrCLDouble-CLLongCLongCModeUCOff CPidłCPtrdiff}CSChar5CShort CSigAtomicCSize]CSsizeCTimeCUCharCUIntSCUIntMax CUIntPtrCULLong{CULong3CUShort~CWchar~ CalendarTime~Callconvz~Chano~Char}Clause} ClockTime} CompOption}Complex}Cony}CondBox_} ConnErrorP} ConnectionH} ConsoleEvent(}Constr} ConstrRep}Consumed }Cookie|Counts|DataRep|DataType|Day|Dec|Digitj|Docd|Double{Dynamic{E12{E6{Either{Elem{Errno{{ ExceptionT{ ExecOption*{ExitCode{ExpzFDTypezFamilyzFdz FingerTreezFixityjzFixityDirectionSzFloatyForeignyFunDepyGAMMA_yGenyGeneralCategorycyGuardLy HUnitFailure3yHandle%y HandlePosny HandleTypeyHashyHashDataxHeaderx HeaderNamex HostAddress6x HostEntryxHotLinkxHpcPosxHsAltxHsAssocdx HsBangTypeFxHsCName$x HsConDeclxHsDeclwHsExpw HsExportSpecw HsFieldUpdatew HsGuardedAltpw HsGuardedAltsRw HsGuardedRhs4w HsImportDeclw HsImportSpecv HsLiteralvHsMatchvHsModulevHsNamevHsOp]vHsPat?v HsPatField!vHsQNameuHsQOpu HsQualTypeuHsRhsuHsSafetyu HsSpecialConduHsStmtFuHsType(uHtml uHtmlAttru HtmlTabletHtmlTreetIOtIOErrort IOErrorTypet IOExceptionwtIOMode]tIOUArrayKtId6tIdentitytInfotInputtInsertssInt_sInt16rInt32rInt64-rInt8qIntMapqIntPtrcqIntSet5qIntegerp LexContextpLexemepListTpLitp LocalTimepMap{pMatch`pMaybepMessagepMixoModuleoMonthoNameo NameFlavouro NameInfoFlagio NameSpaceSoNestedAtomically:o NetworkEntryo NoMethodErroroNodenNonTerminationn OrdALPHA_nOrdBETA_n OrdGAMMA_nOrderingznPinPPLayouten ParseError_nPatDnPatternMatchFail+n Permissionsn PortNumbermPprMmPropertym ProtocolEntrymQmQSemmQSemNmQopmRangehmReadPOmReadPrec6m RecConErrorm RecSelErrorm RecUpdErrorlRegexl RequestMethodlResultl ReturnCodelSTMulSafety^lSeekModeDlSeq l ServiceEntrykSetk ShutdownCmdkSockAddrkSocketk SocketOptionk SocketStatusk SocketTypetk SourcePosgkSrcLocLk StableNameAkState3kStdGenkStmtkStrictjStringjTArrayjTVarjTestjThreadIdkj ThreadStatus^jTimeDiffLj TimeOfDay@jTimeZone4jTimeoutjTix j TixModuleiTokeniTreeiTyConiTypeiTypeRepiURI{iURIAuthii URIAuthority`iUTCTimeTiUniqueLiVersion1iViewL iViewRhWeakhWordwhWord16hWord32gWord64EgWord8fWordPtrfZipListf ZonedTimevf[::]gf[]f TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadFunctorMonad FormatTimeFunctor Applicative ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqIArrayMArray PrintfArgDataStorableNFDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEqIArrayMArray PrintfArgDataStorableNFDataEqOrdNumEnumIntegralBitsShowRealBoundedIxReadIArrayMArray PrintfArgDataStorableNFDataNumEnumIntegralBitsShowRealBoundedIxReadOrdEqIArrayMArray PrintfArgDataStorableNFDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEqIArrayMArray PrintfArgDataStorableShowNumRealEnumIntegralBoundedIxReadBitsOrdEq Typeable1 Typeable1FunctorFoldable Traversable Typeable1FunctorFoldable TraversableEqOrdShowReadTypeableOrdEq FormatTimeShowEqDataEqTypeableShowDataEqTypeableDataPprDataEqShowTypeableData Typeable1Functor ApplicativeMonad TraversableFoldableShowEqEqShowReadEqShowReadTypeableShow ExceptionEq FormatTime FormatTimeShowReadOrdEqShowOrdEqShowEqOrdTypeableDataShowTestable Typeable1MArrayErrorExtract RegexContext RegexMaker RegexLikeHStream BufferTypeDataEqShowTypeablePprDataEqShowTypeable RandomGenShowReadReadShowEq Typeable1DataShowOrdEqTypeableShowOrdEqTypeableShowReadOrdEqTypeableShowEqTypeableTypeableEqShowStreamTypeableShowEqTypeableFoldable Typeable1TypeableStorableShowFunctorFoldable TraversableMonad MonadPlus Typeable1ShowReadEnumIxOrdEqDataEqShowTypeable Typeable1FunctorMonadMArray MonadPlusShowEqTestableShowEq RegexContext RegexMaker RegexLike RegexOptionsTypeableShow ExceptionTypeableShow ExceptionTypeableShow ExceptionFunctorMonad MonadPlusFunctorMonad MonadPlusPprDataEqShowTypeableShowEqTypeableTypeableMonadFunctorQuasiTypeableStorableShowReadTestableMonad TypeableShowEnumNumRealIntegralStorableOrdEqShowReadOrdEqTypeableShow ExceptionPprDataEqShowTypeableShowEqMonad MonadPlus MonoidDataIxReadShowBoundedEnumOrdEqOrdEqOrdEqOrdEqTypeableShow ExceptionFoldableFunctor TraversableReadShowEqTypeableShow ExceptionTypeableStorableShowReadTypeableShow ExceptionDataOrdEqTypeableTypeableShowReadEqDataEqOrdTypeablePprEqOrdShowDataTypeableShowReadIxBoundedEnumOrdEqPrettyDataShowOrdEqTypeableReadShowEnumEqOrd TraversableFoldable Applicative AlternativeMonadFix MonadPlusFunctorMonadPprDataEqShowTypeable Typeable2 FormatTimeDataEqShowTypeable MonadTransShowEqReadShowOrdEq PrintfArgDataBitsIxHpcHashRandomLiftNFData ArbitraryReadEqOrdNumEnumShowRealIntegralMonoidDataEqOrdShowReadTypeableNFData ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqFoldableFunctor Typeable1IArrayMArray PrintfArgDataStorableNFDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEqIArrayMArray PrintfArgDataStorableNFDataEqOrdShowNumEnumIntegralReadBitsRealBoundedIxIArrayMArray PrintfArgDataStorableNFDataShowNumEnumIntegralReadBitsRealBoundedIxOrdEqIArrayMArray PrintfArgDataStorableNFDataShowNumRealEnumIntegralBoundedIxReadBitsOrdEqIArrayMArray PrintfArgDataStorableBitsIxHpcHashRandomLiftNFDataNFDataIntegral NFDataOrd ArbitraryReadShowNumBoundedEnumRealIntegralEqOrdEqShowPprDataShowTypeableFunctorMonadMonadFixFunctor Applicative Typeable2MArrayShowReadEnumIxOrdEqEqShowEqShow MonadErrorError MArray ApplicativeMonadFixQuasi MonadPlus MonadErrorMonadIOFunctorMonadHTML HTMLTABLEHTMLShowShow HTMLTABLEHTMLADDATTRSShowPrettyDataShowEqTypeablePrettyDataShowEqTypeableDataShowOrdEqTypeablePrettyDataShowOrdEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowOrdEqTypeablePrettyDataShowOrdEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowOrdEqTypeablePrettyDataShowOrdEqTypeablePrettyDataShowTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowOrdEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeablePrettyDataShowEqTypeableShowReadHpcHashOrdEqHTMLShowTypeableStorableShowReadStorableShowEqShowShowEqReadShowNumEqShowEqShowDataEqShowTypeable ExceptionShowDataEqShowTypeableIxBoundedShowReadEnumOrdEqFunctorMonadEqPprDataEqShowTypeablePprDataEqShowTypeableIArrayMArray PrintfArgDataStorableRandomNFData ArbitraryEqOrdNumReal FractionalRealFracFloating RealFloatShowEnumReadDataShowEqTypeableShowEqDataTypeableFoldableFunctor Traversable ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqShowReadOrdEqEqPprDataEqShowTypeableShowReadOrdEq RegexMaker RegexOptionsBitsNumShowEqTypeable ExceptionShowEq MonadErrorEqFunctorFoldable Traversable Typeable2 HasResolution HasResolution ExceptionTypeableShowIArrayMArray PrintfArgDataStorableRandomNFData ArbitraryEqOrdNumReal FractionalFloatingRealFrac RealFloatShowEnumReadShowFoldableFunctor TraversablePprDataEqShowTypeableShowReadIxBoundedEnumOrdEq FormatTimeShowTypeableDataShowEqReadShowEqOrdEqReadShowFunctorShowEqShowEqReadShowEnumOrdEqTypeableStreamErrorEqShowHpcHashOrdEqShowReadPprDataEqShowTypeable Typeable1 RegexMaker RegexOptionsBitsNumShowEqShowOrdEqPprDataEqShowTypeableIArrayMArray PrintfArgIsCharDataStorableIxHpcHashRandomLiftHTMLListAssertableNFDataReadShowBoundedEnumEqOrd Typeable1DataEqShowTypeableShowReadOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEq MonadTransTypeableOrdEqReadShowShow ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeable RealFloatRealFracFloating FractionalRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableRealStorableEnumNumOrdEq ReadShowTypeableBitsIntegralBoundedRealStorableEnumNumOrdEqIsStringEqOrdMonoidDataReadShowTypeableExtract RegexContext RegexMaker RegexLikeHStream BufferTypeEqShowReadOrdEqHpcHashOrdEqShowReadIArrayMArrayDataStorableIxHpcHashRandomLift AssertableAssertionPredicableNFData ArbitraryTestableReadShowBoundedEnumOrdEqDataEqShowTypeableShowOrdEqEqShowOrdEqShowOrdEqShowOrdEqMonoidBoundedShowReadOrdEqMonoidBoundedShowReadOrdEqShowEqTypeableShowReadEqTypeableStorableShowEqTypeableShowOrdEqEqArrow ArrowChoice ArrowApply ArrowLoopCategory MonoidDataEqOrdIx AssertableNFData ArbitraryTestableReadShowBoundedEnumljALPHAAdj AssertionAssertionPredicateBETAСBodyQġBounds ByteCountCDirCDirentCFLockCFunTCGIBCGroup=CLconv8CPasswd3 CSigaction.CSigset)CStat$CString CStringLenCTermiosCTmCTmsCUtimbufCUtsnameCWStringѠ CWStringLenCallback CharParsersCharPosaClauseQS ClockTickJCollect0Column*ConIndex$ConQContextٟContext'CxtCxtQwDecQlDecompDeviceID DiffArray DiffUArrayўDocÞDoneEdge EpochTimeExpQFDFieldExp FieldExpQgFieldPatT FieldPatQ<FileID5FileMode- FileOffset&FilePathFinalizerEnvPtr FinalizerPtrÝFlowInfoForestFormVarGAMMAuGDecomp! GenParserGenericGenericBGenericMќGenericQƜGenericRGenericTGraphGraphRep$GuardQ HTTPRequest HTTPResponseHandlePosition HeaderSetterǛHeaders HostAddress HostAddress6nHostNameaHsAsstB HsContextIOErrorIPrIndentInfoQKeyLEdge͚LNodeLRTree LanguageDefvLeapSecondTableeLimit]LineWMContext MatchArray MatchLength MatchOffsetMatchQՙ MatchTextMicroMixEntryw MixEntryDomZModNameKNetwork) NetworkAddr NetworkNameNode NodeMapMؘOccNameɘ OperatorTableOrdALPHAOrdBETAtOrdGAMMA` POSIXTimeNParsec.ParserPatQPath PermParserPicoPkgNamePrec PrecedenceProcessGroupID ProcessID ProtocolName{ProtocolNumbertRTreebRangeQURationalB RawBuffer!ReadS RegOffset ReportProblemŖ ReportStart RequestData RequestIDyRequestNormalizer6Request_String ResponseCode ResponseData̕Response_StringResultSTRepk SampleVarIScopeID@ ServiceName3ShowS SourceName SplitSplitMʔStmtQStrategy StrictType StrictTypeQStringtTable`Thread: TokenParser TypeQUContextړUDecompUEdgeUGr{UNodejUPathSURLFUSGr6Uniq0 VarStrictTypeVarStrictTypeQVertexVoronoi֒ WrapError(,) ReturnCode[]Chara[]LPathaIntQ(,,)NameStrictType(,,)NameStrictTypeIntSGr()()[]Char[](,)Int()(,)Int()Gr()()(,,)IntInt()g(,)Maybe(,,)[]IntInt[]Intg(,,)[]IntInt[]IntQTypestGenTokenParser[]CharstIdentitytir(,)tit(,)rtaArrayInta[]CharQ(,)StrictType(,)StrictTypeaa()QStmttirit(,)Mayberttirit(,)rt[]Char[]Char[]Char[]CharWord32aMVar(,)IntMVarasaState#s(#,#)State#saaEither ConnErroraResponse[]Char(,,)(,,)IntIntInt[]Char[]Header(,,)IntIntIntRequest[]ChartyNormalizeRequestOptionstyRequesttyRequesttyInt(,,) RequestMethodURI[]HeaderusStateusIOusus[]CharStateusIOusInt64a[]Char[](,)a[]CharMutableByteArray# RealWorldRatioIntegerQRange[][]IntCInt[]CharCPidCPidIntInt PackedStringFixedE12tokstaStreamPermParser[]Charsta[]IntQPatParsecT[]Char()IdentitysuParsecTsuIdentityNominalDiffTimePoly OrdGAMMA_PolyOrdBETA_Poly OrdALPHA_toksta[][]Operatortoksta PackedStringabgrState(,)NodeMapagabrInt[]CharCULongGr()(,)DoubleDouble PackedStringaTree(,)HpcPosa(,)HpcPosBoxLabelFixedE6sourceArrayInt(,)source(,)IntIntQMatchIntIntArrayInt(,)IntIntabMaybe(,,,)[](,)bIntInta[](,)bIntIntCLongDayIntegerstGenLanguageDef[]CharstIdentitya[]LPathaa(,)Intab(,,)IntIntbIntQInfoInt(,)IntInt IOException[](,)HsQName[]HsType(,)HsQName[]HsType[]Char(,,,)Word32Word32Word32Word32Word32[](,) HeaderName[]Chara HeaderName[]CharaaIntegeraResponseaaRequestaQGuardab(,,)IntArrayIntMaybe(,,)[](,)bInta[](,)bIntIOArrayIntBoolArrayInt[]IntaammararmamaacacatokstParsecT[]tokstIdentitygab(,)(,,,)[](,)bIntInta[](,)bIntgabPolyGAMMA_(,)[]Char[]Chara[]TreeaWord32aFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoQ(,)NamePat(,)NamePatQ(,)NameExp(,)NameExpCIntQExpCTime(,)IntInt()PprMDoc IOToDiffArrayIOUArray IOToDiffArrayIOArrayCDevgab(,)Maybe(,,,)[](,)bIntInta[](,)bIntgabQDecQ[]Type[]TypeabMaybe(,,)[](,)bInta[](,)bIntab(,,,)[](,)bIntInta[](,)bIntQConIntIntrc(,)rcccCClockQClause(,)IntIntstParsecT[]CharstIdentityIntCharIOInt(,)PtrCWcharIntPtrCWchar()()()()()(,)PtrCCharIntPtrCChar()()()()()()aCGITIOaabc(,,,)[](,)bIntInta[](,)bIntc()()()CSize(,)IntIntQBodyPolyBETA_IOBoolIO()b[](,)bIntPolyALPHA_(=: [՚aهb~chd]eVf.MgHh,ijk) lDmunno8pjqorstuQvwz||i)loˢnҢe٢dtime ZonedTimeibFormatgbp5l<iCsJtQZipListziapgwm~odeMode #1ۧ368e-iŦoХṛaiأtߣebvhCm"rWritertWriterTo)d0e7IOModeaJnQdXl_ef HandleTypeu}ffer BufferStatepaesmEpǤeΤdդamonad WrappedMonadrr!o(w/ WrappedArrowoLnSaZda WrappedMonadrzror WrapErrorrrow WrappedArrowrץdޥWord#136[8Lp r.trWordPtri5m<lCLitWord84bWord64#wWord64#2Word326Word16Word#lnѦdئoߦwbits WindowBitsdp$Patald9n@eGsNdUa\ycDayksWeak#Weak##Word84#Word642ȧ#ϧWord326#Word16Worda1eڨiodri!g(h/t6c=uDrKlRyYTokenrkornyoiVoronoiEditorewl˨rViewRViewLrs texVertexion VersionlAr=e8inpsgt]TypetysmzTokenricttype VarStrictTypeq٩VarStrictTypeQPatame NameSpaceInfod-TokenExpdHDec acYd%egnprfstctimeUTCTimeeڪgŪr̪USGrre9inter rupt%AsyncExceptionr@rGoNrU IOErrorTypeilrURLURIauthURIAuthorëiʫtѫyث URIAuthorityacpercase$l+e2t9t@eGrNGeneralCategorytjhqUPathdeioqԭsa-upporȬtϬe֬dݬoperation IOErrorTypeft9i@sGfNiUe\dccjoqnxstraints IOErrorTypeeȭSafetyuۭalHsQNamedeUNodeqîtv_x)s0o7c>kEeLtSPortIDefrmsta{ltime UniversalTimeUnitUniqu֮eݮUniquexpec tMessagee$fr0fcs<cCoJrQeXTokenljoqwxArithExceptioninedelemįe˯nүtٯArrayExceptionrUGrdgeUEdgee,c3o:mApHUDecompo`ngtneux|tUContextrrayUArray aĻcbehimoٳr6uʲvycnpMs/vari%Infoy6n=dDDeceTTypeaqrqexpTypeRepTypeQbleTypeable1[2H354"567 Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1oun|TyConiInfoarTVar#TVar#epֲelpPatetTypeExpsda&y-DayameXuGeNBoole_Treecvyersable TraversableeƳ RequestMethoddk0plevel box"BoxLabele7n>TokenpRaYr`sgenru TokenParser ClockTimevarTMVarl϶mtxӴTixmodule TixModulel"e)c0a7s>eElLeStZtaehroGeneralCategoryedeml6otҵzoneTimeZoneoٵlive SocketOptionfday# TimeOfDayo=cDaKlReY TimeLocalextp{ired IOErrorTypeiffTimeDiffdֶeݶTokenpPatr.ur sday%Daye5a<dCThreadbܸdfriAk rηsvatatus ThreadStatusfe·Safetyuշnܷning ThreadStatusille&d-AsyncExceptiondHThreadId#_ ThreadId#iynished ThreadStatusieødʸ ThreadStatuslocked ThreadStatussqx$t+d2e9t@aGiNlUs\ TextDetailstxTesta cefwl4oresulŹt̹ TestResultk$ptions TestOptions TestResultaXi@sGtNTestb_eflmTesta~iled TestResultxausƺtͺeԺdۺ TestResultaseTestblIor$t+e2d9 TestResultePTestablechnaun|TChanlsname NameSpacebrлr׻a޻yTArrayleTable #aeceghiop rtuyUmsatumnte{xpectMessageemerǼrμoռrܼ IOErrorTypebolLexemem|n^rr&o-g4a;tBeIGeneralCategorydealysDaySumSTadEmor uսyleƽStyleaܽrraySTUArray TextDetailsave/i*cоn6g=StringclrztaohkoTokenepDataRepLitonstr ConstrRept׾Stricttype StrictTypeq StrictTypeQarfcpTtESTretSTRepSTRefmy SocketTypeStreamd-hpermpaƿrͿsԿeۿrStreamPermParseroo ks StreamHookse4b;uBgIgPeWr^StreamDebuggert}egyStrategyrableStorablearray StorableArraySTMt#Stmtq6StmtQcogQeXn_StdGenavl}lCallconvbacrteState#tStateTState#raySTArraykov#e*r1f8l?oFwMAsyncExceptionlheonp{tr StablePtr# StablePtr#ame StableNameclocSrcLocaveMli"t)Splitm=SplitMcTi[abliHsQNamec}eingcombiningmarkGeneralCategoryGeneralCategoryc(emu2r9c@eGntpSoZsa SourcePosa{me SourceNameeexception SomeExceptionrror SocketOptionk/ae;tBSocketostayhpoev SocketTypetatus SocketStatusption SocketOptiondd rSockAddriPu-n4i;xBSockAddrnWe^teSockAddr6xSockAddrgzedSizeddepPatExpDecoutdown  ConsoleEventbcrVs0e7n>dE ShutdownCmde]cdekirvye ShutdownCmdmd ShutdownCmdoth ShutdownCmdwShowsShowSr SGremnQpqrIt<SetvPiWc^eePortIDen{ame ServiceNamentry ServiceEntrySeqpacket  SocketTypet#e*m1b8e?rFMonthdXbltiipmwe~out SocketOptionowwater SocketOptionuffer  SocketOptioni$c+lWo7l>oEnLTokeno^seeldshzandle HandleTypekfmodeSeekModeromen dSeekModecXo+p2e9i@dGScopeIDSCCfmtvu}rdayDayplevar SampleVareSafetytySafetyIntegera de^itbw;sBRWStTRWSTriepewRTreeghtEithera7cpsquareTokenarenTokenurl%y,Tokenr>rEoLwSToken acgQlpVqast#useaconnectionBrowserEventTypedd r SocketOptionru/r6n=ciInPoWr^deelrsArgOrderode ReturnCodeyResponseNextStepopultResultons eResponse_@cdefnBeIxPtWs^teelpsResponseNextStepinishBrowserEventTypendBrowserEventTypeata ResponseDataod#e* ResponseCodesGtNrUi\ncgjResponse_Stringurceb;evanished IOErrorTypexhauste#d* IOErrorTypeuBsIyP IOErrorTypea:umeiyreorderArgOrderstRequest_dimzn sent BrowserEventTypeo'r.m5a<lCiJzQeXr_RequestNormalizerethod RequestMethodd RequestIData RequestDatastr ing"Request_StringrAgHArgDescrlobritpps|tart ReportStartroblem ReportProblemyReplya tiv e's.e5e<kCSeekModeeoubliaprwf~ileFDTypeffset RegOffsetxRegexclom?opt ion"s) RegexOptionsaFkMeTr[ RegexMakerivk}e RegexLikeontext RegexContextcSpJsuvbl?ti meou&t- SocketOptionoFwMwTa[tbeirp SocketOptionuffer SocketOptionpdeExprror RecUpdErrore ler r'o.r5 RecSelErrorPatConoanheoExpr}ror RecConErrordNlRealfworld RealWorldl&ra cRealFraco-a4t; RealFloatReadbeh_m>p swritehmodeIOModeandle HandleTypeReadSReadPre%c,ReadPrecoEdLeSIOModeafnmdtl{e HandleTyperReadertReaderTuffer BufferStatem SocketTypentw SocketTypebdd5e<vCiJcQeXFDTypeukfrfyer RawBufferLexemeioRationalRationallLitd+geRangeqRangeQo2m9RandomgNeUn\ RandomGenQc%osuvarisymTokendTokenaeueQueuel`s iQuasiq(u/o6t=eDrK QuasiQuoterHsQNamebriynboxCondBoxemQSemnQSemNpQopauthQopintQopo,n3iXs?yFmMTokend_TokenP aeikovprEstunt RequestMethodtextPutTextcLexemer Ptr ByteStringt-r4 TextDetailse*iBoVcdpqtxqyxProxyocolenaumberProtocolNumberme ProtocolNamenErr&o-r4 IOErrorTypetLrSyZ ProtocolEntryexrtyPropertyuctProductessgid ProcessIDroupi#d*ProcessGroupIDmnvSaZtaehuosve}GeneralCategorytfatype PrintfTyperg PrintfArgtyc oni InfocsfYt;tByIPrettyi`xgFixityPrecedence PrecedencehAilnoHr(semicol onPPLayoutPprm:PprMfOfVs]iddkerryulePPLayoutolayoutPPLayoutayoutPPLayoutnli%n,e3PPLayoutsHmOoVd]edPPHsModelorsit RequestMethodfixOperatorxtime POSIXTimet in;ra!i(t/OrientuBmI PortNumberb^eerl PortNumberdPortIDlPoolyPolygnamePkgNamecoPicormipLu0t7e>ArgOrderaSrZsaehro PermParserssionds Permissionsenied IOErrorTypecgrtPatghqt2e9r@nGmNaUt\cchjfqaxilPatternMatchFailPatQPathGuarda?sStmtecefmour/time ParseTimeParsereDsKuRlYt` ParseResultk| ParseResultode ParseModeailed ParseResultrror ParseErrorParsect.ParsecTgFrMaTp[hbsieppwa~ratorGeneralCategoryemodeModekedstr ing" PackedStringOpaque bBcknoKpXrtvqexrflowArithExceptionherelnrpsymbolGeneralCategoryun%c,t3u:aAtHiOoVn]GeneralCategoryuymberGeneralCategoryetterGeneralCategoryrror IOErrorTyped@ie"n)t0OrientOrdabegaahmomva}OrdGAMMA_ OrdGAMMA_ringOrderingetaOrdBETA_OrdBETA_lp h'a.OrdALPHA_E OrdALPHA_a&etiadizonOptDescrs RequestMethodescrOptDescrrgArgDescrnjra tor Operatort7a>bElLeS OperatorTablecpvu}nctuationGeneralCategoryonnectio nBrowserEventTypeq-u4e;OpaquebRiYn`lginnue| SocketOptionelinemodeModeReplyctober Monthna#m*e1OccNamejIePcWt^ObjectaefioumNum abDcdsl@mxnprstvemberMonthacshSs$t+r2i9c@tGStrictiZnaghMaybeoznnected SocketStatusssignedGeneralCategoryoQucht$h+i2n9g@ IOErrorTypecXk_eftmtty{pe SocketTypeexmalbncegZizerequestopti$o+n2s9NormalizeRequestOptionsGuardConBodypDataReproxyProxysterminationNonTerminationp$a+c2i9n@gGmNaUr\kcGeneralCategoryeinaldifftimeNominalDiffTimethode rro"r) NoMethodErroraGyNoUu\tc LexContextezNodelmapNodeMapmNodeMapMay SocketOptionompre ssi o'n.CompressionLeveliuPfWf^eerlisnzg BufferModendsStmtrgArgDescr_dnaomumeri chFse&r-v4 NameInfoFlagoMsTt[ NameInfoFlagftq{dn NameInfoFlagmereqd NameInfoFlaggram NameInfoFlagd ata!NFDatai\o;rBdI NFDataOrdnctjeqgxralNFDataIntegralstwtypedDecworkNetworkazeHna%m,e3 NetworkNamenOtVr]yd NetworkEntryddr NetworkAddrtedatomicallyNestedAtomicallym e'Namef6g%ilqsiuX NameFlavour NameFlavourpace NameSpace NameFlavour NameFlavournsNameIsfoflag NameInfoFlag NameFlavourl=aDvKoRuYr` NameFlavour acPegikoruvarMVar#MVar#tavar#MutVar#bl e'ab3y:tAeHaOrVr]adyk#rMutableByteArray#rray# MutableArray# MatchResultdLnaEd.othMonthidMonoida5y<DaydLMonad cefipvr stwriter MonadWriterrans MonadTranstate  MonadStateeEw,s3MonadRWSaLdSeZra MonadReaderl}us MonadPlusoMonadIOixMonadFixrror MonadErrorg3ont  MonadConti:MonadCGIeijnuglneuModuleameModNameuliandate UniversalTimefi edrlbs*y1m8b?oFlMGeneralCategoryeitptwe~rGeneralCategoryjuliandayDayModecWq0socket$Socketu7e>uEeLQueueo^oeklisezCookiectnxMixentryMixEntrydom MixEntryDommu sTokene$m+o2r9y@lGeNvUe\lc MemoryLevelr{oMicrotGTmsthodMethodsageMessageo ryle&v-e4l; MemoryLeveloWn^teelxstzMContextp7rtlxyMonthbeMaybemsegment SocketOptionem#o*r1y8l?eFvMeTl[ MemoryLevelchxsymbolGeneralCategoryhMatchalo[qKrtext MatchTextes!u(l/t6 MatchResultMatchQfbfispewt~ MatchOffsetength MatchLengthrray MatchArrayc%rayMArrayh,MonthMapa e ipnLopr|tnOrderingtreeLRTreeLPathathLPathcgsTwercasele#t*t1e8r?GeneralCategorys[obfipprwe~cisionArithExceptionoff ConsoleEventLocalb0time LocalTimeo7x>BoxLabeloSdZeaLNodef mr nstLitepPatExptaBe iptListTPattemNodeExpni"n)g0 SocketStatussIsPeWr^tealbslzeListAssertableeger SocketOptionLineb* separa t o r GeneralCategoryu1 f8 f? eF rM iT n[ gb  BufferModeiy t Limitt Lifta d f t2 x Lexc e m e Lexemeo n t e x t  LexContexte s tC eJ rQ nX u_ mf bm et r{ GeneralCategoryStmtExpt Eitheraj cC m$ p s q u a r e Tokena r e n Tokeno+ d2 e9 ModeuJ rQ lX y_ Tokenrq rx o w Tokeng e LEdgep s e c o n d t a b l e LeapSecondTableb m np s[ y6 o= uD tK  LexContexttb Lastd g| u a g e Languaged e f  LanguageDefs c a p e Oriente Expe l Nodeelrw: _A a`cde9fhilmnoqFs&t u w h e r e Tokenn s a f e Tokenh y p eTokenenTokena-f4e;TokenuMaTl[ibfiipewd~TokenfTokenewtypeTokenoduleTokenet Tokenfmn(Tokenfks=tDaKnRcYe`TokenirxyTokenlrTokenTokenportTokenTokenidingTokeno rei g'n.TokenllxEpLoSrZtaTokenssezTokenaeoTokenfrivingTokenaultTokent aTokenaGl'a.s5s<TokensNeUTokensgTokeneyisliKleislieyKeypalive SocketOption#aSu lAn/st$Maybee6MonthyHMonthnZuaahroyvMonthInteger##1 368adUg,lmnKoypesxIxc@stric-ngIsStringt4StricthGaNrUIsCharrlIPrIOaewmRr5tuarrayIOUArrayodiffar ray IOToDiffArraye<fCIORefoYd`egIOModerxception IOExceptionrorIOErrortype  IOErrorTyper%r,a3y:IOArray adfi~lupXrOstvalidargument IOErrorTypeInt #1368cwemprdsFt-o4k;TokeneMtTIntSetekprDataReprtrIntPtrimlLitapIntMapg%rrupte d IOErrorTypeeQr1a8l?IntegralrXIntegerlnLito~nstr ConstrRepInt84Int64#Int64#2Int326Int16Int#t#a*n1c8e?dFDec:+:u_tfInput:+:tialquoteGeneralCategoryioInfoqInfoQxFixityceyldnOpFr1FixityDirectionPatFixityDirectionFixityDirectionExpConenxoutofboundsArrayExceptiontIndentpp$r+o2p9r@iGaNtUe\tcyjpqex IOErrorTypeportfForeignlegaloperati on IOErrorTypen3o:rAeHHandlere\nctjLexemei{tyIdentityrrayIArray#Int84#Int642#Int326#Int16Inta"Fd9e7o6pO6stuVf]fdmkarnyonlyCompressionStrategymEtpreqsponse HTTPResponseue"s)t0 HTTPRequestlLHtmlHTMLaeslPn-stareeHtmlTreebg HtmlElementle HtmlTable HTMLTABLEtring HtmlElemento4d;eBHtmlTreeeWa^feHtmlTreelzement HtmlElementttrHtmlAttraA5b4c53d72e/f6.gJ-i*l)m*)n(o{(p%q$r#sx"t uv{w?iFlMdTc[abridpHsExparHsExpnopHsOpameHsCNamenb g? i safe HsSafetyt c o& n-  HsSpecialConuF aM rT d[ eb di a ru h| s HsRhsl t  HsGuardedAltsa n g e d t y  HsBangTyperR"u "y!a!c!f!pc!t;!v!!a(!r/!HsTypeuB!pI!lP!eW!HsTypeej!HsTyped!s!i!g!HsDecle!c!l!HsDeclu!n!HsTypeo!n!HsTypep!p"HsTypep"l"e""HsExpc2"o9"n@" HsSpecialConeY"a`"mg"HStreamat#p&#t"y"m"b"o"l"HsNamem#r"i"n"g" HsLiteralp"r"i"m# HsLiteralt#HsStmte-#c4#i;#aB#lI#cP#oW#n^# HsSpecialConf{#e#HsSafetyt#y#HsSafetye&$h$i#g#h#t#s#e#c#t#i#o#n$HsExps$HsRhsc-$c$dl$u>$pE$dL$aS$tZ$ea$HsExpes$cz$l$ HsConDeclo$n$s$t$r$HsExpc%n%ok%u%v$a$r$o$p$HsQOpa%l%iC%t%y!%p(%e/% HsQualTypefJ%iQ%eX%r_%HsStmtpr%HsQOpa%m%e%HsQNameo%n%o%p%HsQOp a'fo'i'l&n&p&r~&tW&v>&w&i &l&d&c&a%&r,&d3&HsPataE&rL&HsPatu^&pe&ll&es&HsPate&c&HsPata&r&e&n&HsPate&g&HsPati&s&t&HsPatt&HsPatn:'r'r'p!'a('t/'HsPatfA'iH'xO'aV'p]'pd'HsPativ'e}'l'd'p'a't' HsPatFieldpi(rP(s0(t'HsPatb(f'i'e'l'd' HsPatFieldi(n(d$(HsDeclp7(a>(tE(HsPateW(n^(HsExppp(HsPatp(HsOpa )e(g(w(t(y(p(e(d(e(c(l(HsDecla(p(p)HsExpm)e)HsNamead)o6)d=)uD)lK)eR)HsModuletk)cr)hy)HsMatcha*e-*i)s)t)HsExpe)r)a)l) HsLiteralt)HsExpc)o)m*n * HsSpecialConp"*HsExpfj*t9*HsExpsI*tP*mW*t^*HsStmttq*sx*e*c*t*i*o*n*HsExpm*b*d*a*HsExpa*-d -f,m,n+r+t+v*a+r + HsImportSpech%+i,+n3+g:+am+wF+iM+tT+h[+ HsImportSpeclt+l{+ HsImportSpecr+p+a+t+HsExpf,,s+t+ HsLiteralp+r+i+m+ HsLiteralt,d ,e,c,l ,HsDecli3,x:,ag,dF,eM,cT,l[,HsDeclpn,pu,HsExpp,o,r,t,d,s,p,e,c, HsImportSpece,c,l, HsImportDeclHsExpe-n-t-HsNameb1-s8- HsImportSpece-uV-a]-rd-dk-er-dy-a-r-h-s- HsGuardedRhss-HsRhsl-t- HsGuardedAlts- HsGuardedAltsn.e.r.a.t.o#.r*.HsStmti/lO/o.r.uQ.nX.b.cd.ok.nr. HsSpecialConi.n.d.HsDecla.c. HsLiteralr.e.i.g.n.e /i.m.p.o/r /t/HsDeclx'/p./o5/r1rE1oL1mS1HsExptc1hz1oo1HsExpe1n1HsExpt1o1HsExpo1d1u1l1e1c1o1n1t1e1n1t1s2 HsExportSpecb2s%2 HsExportSpeca2e2oH2HsExpuX2b_2lf2em2pt2r{2i2m2 HsLiteralc2f2a2u2l2t2d2e2c2l2HsDecll2HsDeclt3a 3d3e3c"3l)3HsDecla4hs4l64n4oP3nW3HsExpd3n3o3s3t{3e3x3t3 HsContext HsSpecialConp3HsOpa3m3e3HsCNamee3c3l3 HsConDecla4m4e%4HsCNamea=4sD4sK4dR4eY4c`4lg4HsDeclaz4r4 HsLiteralp4r4i4m4 HsLiterals4e4HsExpa4n4g4e5t4y4p5e5 HsBangTyped#5t*5y15 HsBangTypel96p'6sR5p6s^5oz5tj5HsAsstc5HsAssocl5n5r5i5g5h5t5HsAssoco5n5e5HsAssoce5f5t6HsAssoca6t6HsExpp.6HsExpt@6HsAltc6r[6ib6ni6tp6fw6t~6y6p6e6 HPrintfTypeh6p6o6s6HpcPosa6s6h6HpcHashs17t7l 7i7n7k 7HotLinkt87a7ep7nI7aP7mW7e^7HostNamenw7t~7r7y7 HostEntryd7d7r7e7s7s7 HostAddress67 HostAddress6a8dd8p 8Heapo8v&8e-8r48f;8lB8oI8wP8AsyncException RequestMethode|8r8Headern8s8Headerse8t8t8e8r8 HeaderSettera8m8e8 HeaderNamer9a|Dc@AdAe@fv@hQ@i>l$>m=p<r;s;t:uR:v:wg9a9ws9wz9a9u9t9h9e9n9t9i9c9a9t9e9 HeaderNamer9n9i9n9g: HeaderNamea4:i:a$: HeaderNamer;:yB: HeaderNamep:s^:ee:rl:as:gz:e:n:t: HeaderNameg:r:a:d:e: HeaderNameez;r:a:iU;n:s:f:e;r ;e;n;c";o);d0;i7;n>;gE; HeaderNamel\;ec;rj; HeaderName HeaderNamee;r;t;c;o;o;k;i;e; HeaderNamev;e;r; HeaderNamea<e<fU<t<r<y"<a)<f0<t7<e><rE< HeaderNamee\<rc<ej<rq< HeaderNamen<g<e< HeaderNamer<u<b<l<i<c< HeaderNamea=o<x<y<a<u=t =h=eh=o =r'=i.=z5=a<=tC=iJ=oQ=nX= HeaderNameno=tv=i}=c=a=t=e= HeaderNameg=m=a= HeaderNamea=x=f=o=r=w=a=r>d >s> HeaderNameaj>o0>c7>a>>tE>iL>oS>nZ> HeaderNamesq>tx>m>o>d>i>f>i>e>d> HeaderNamef>m?n{?rO?u>n>m>o>d>i?f?i?e?d?s#?i*?n1?c8?e?? HeaderNameaV?n]?gd?ek? HeaderNameo?n?e?m?a?t?c?h? HeaderNamea,@o?d?i?f?i?e?d?s@i@n@c@e@ HeaderNamet3@c:@hA@ HeaderNameoX@s_@tf@ HeaderNamer}@o@m@ HeaderNamet@x@p@e@i@r@e@s@ HeaderNamec@t@ HeaderNameaAg A HeaderNamea"At)Ae0A HeaderNamea&Do}AuQAsXAt_AofAmmA HeaderNamenAoAkAiAeA HeaderNamenCtAeAnAtAbCeClBmBrBtArByApBe B HeaderNamea Bn'Bs.Bf5BeQr#Qt QoQkQTokene*Qp1QDataReprEQiLQmSQlZQLitnjQgqQFloatingoQnQsQtQrQ ConstrRepFloat#eTlSnRrvRxQe`RiQtQyQFixitydRiRrRe$Rc+Rt2Ri9Ro@RnGRFixityDirectiondgRFixeds}RtRFirstaRiRtReRmRaRpR FiniteMaplRiSqRuRoRtReSGeneralCategoryz Se'Sr.Se^Sp:StASrHS FinalizerPtrneSvlSpsStzSrSFinalizerEnvPtreStSeSrSeSdSCompressionStrategyhTi{TmTToTpSaStTh TFilePathf$Tf+Ts2Te9Tt@T FileOffseto[TdbTeiTFileModedTFileIDaTnTdTlTeTHandlelTdTeUpTaTtTFieldPatqU FieldPatQxUp!UFieldExpq8U FieldExpQeUfUg\UecUnjUeqUrxUiUcUFFFormatiUoUrUmUaUtUFFFormatxUeUdUFFFormatxUpUoVn VeVnVt"VFFFormatb7Vr>VuEVaLVrSVyZVMonthFDFdt}VyVpVeVFDTypelVmViVlVyVFamilysVeVBoolFloat 1~]6r]d]i\mp\n[o[p[qI[r Zx/Wc}Ye8Yi=XpwWtJWrQWaXWc_WtfWExtractExpb!XeWoWqWExpQrWtWfWForeigncWtWMessageeWnWtWiWtXy XResponseNextStepo(Xx/XBoxLabeltDXcYeXfXsZXuaXchXcoXevXs}XsXExitCodeaXiXlXuXrXeXExitCodexXcXeXpXtXiXoXnY ExceptionoYdYe&YExitCodec?YoFYpMYtTYi[YobYniY ExecOptioneYlYaYmYaYtYiYoYnYTokenpYtYiYoYnY Exception ExceptionrZn3[oZr#ZReplyErrorcZmZpZraZtQZErrorTehZsoZevZt}Z ConnErroraZrZsZeZ ConnErroriZsZcZ ConnErrora[lZoZsZeZd[ ConnErrorl[l [ ErrorCallo:[ErrnoOrderingEquc[aj[lq[sx[Tokeno[c[h[t[i[m[e[ EpochTimef[Lexemec\d\u[m[Enumo\Endol\o#\s*\i1\n8\g?\mF\aM\rT\k[\GeneralCategorya\p|\t\y\ ByteStringl\r\ViewRViewLc\s\Editort\h\e\r\Eitherg]]i ]t]l6]o]r&]Editori=]nD]eK]EditLineed]EdgeE62]E12# hafebiao_u^y]n]a^e=^g^i]o]e]r]r]o]r] IOErrorTyper^a^p$^h+^DynGraphxD^cK^eR^pY^t`^ig^on^nu^ Exceptionm^i^c^Dynamica_m_p^l^e^x^h^a^n^d^l^e^Handlem _y_s_o"_c)_k0_e7_t>_oE_pL_tS_iZ_oa_nh__o__v_ SocketOptionl_Dualcae`n`t`u_w_n_Downb_l_e_Double#~`aW`c0`p `r`i`m `l'`Lito7`l>`oE`nL`Tokenr^`re`ol`ws`TokenDouble#d`o`t`Tokene`t`r`o`u`t`e` SocketOptionDoneExpDoceXbfar}av*ai1ad8ae?abFayMazTae[arbaoiaArithExceptioneacataoarayaFDTypefaa)btbuaaararaaaya DiffUArrayi bmbebDiffTimer0br7ba>byEb DiffArrayh_bofbrmbrtbi{bbblbybResponseNextStepa[fb;fcef_cl7cncvbibcbebibdbDeviceIDocrcmcacl#cArithExceptione>ctEceLc RequestMethodaclkcarctycecdcMethoduclctcHandlercdmbdsdwcicncdcocwcbcictdsd WindowBitstdr&da-dt4de;dgBdyIdCompressionStrategyeidmpdowdr~dydldedvdedld MemoryLevelodmdpdrdedsdsdidodndCompressionLevelDecefieoDeq6eDecQmKepReDecomprgeenesues|epeaereaemeseDecompressParamsmeaeleneuemebeeereGeneralCategorymfb"fe)fr0fMonthuBfgIf SocketOptiondbflifopfcwfk~fDeadlocksgtfyfDayafDataDatacgdyggTgn0grgtfyfpfefDataTypeegpgDataRepa7gm>geEg NameSpacer[gabgmig SocketTypeDecogngigInfohgpgugngcgtgugagtgigogngGeneralCategoryDouble#~aU}c|dZ|f{g~zhxi2xjwlumyuolCStringlTle[lnbl CStringLent}lCStatilzlelCSsizeglzlelCSizealsleltlCSigsetc:mt mommmimc&m CSigAtomictAmiHmoOmnVm CSigactionoqmrxmtmCShorthmamrmCSCharanimtmrmdmimfmfmCPtrdiffdnCPidsnsnw$nd+nCPasswdfdultmpsnnonu\nncntjnsqnCountskninenCookieCon dsesfrirnqpqqqsptRovnenrntneodotooohoa$on+od2ol9oe@o SocketStatusConteoiorottoContTooloGeneralCategoryco ConsoleEventnouoeoResponseNextStepn#pxotoContext'pContext't*pe`pt6py=ppDpeKp ContentTypengpcnpoupd|pipnpgpContentEncodingoCqtpupypmpTokenmpepdpConsumedConstr qConstrr"qe)qp0q ConstrReplJqeQqeXqv_qefqnmqttq ConsoleEventConQPateqcqrqrqoqrq ConnErrortq RequestMethoderinrorr rprurn!rc(rt/ru6ra=rtDriKroRrnYrGeneralCategoryourn|r Connectiondr SocketStatusdrnrdrerxrConIndexTokenirgrConfigExpb#sesExpiGso/sx6sCondBoxnNsbUso\sxcsCondBoxmtp|setltotrsesssssispsasrsasmsssCompressParamsosnslVtstttrtatt$te+tg2ty9tCompressionStrategye]tvdtektlrtCompressionLevelptttitotnt CompOptionetxtComplexExpatTokenl>uo,uuumunuColumnn3uTokeneEucLutSuCollectfkuCOffoudueuCModea{wcVwd!wlvoucvnvsueu ConsoleEventdGvpuuunucvtvuvavtvi$vo+vn2vGeneralCategory SocketStatush^vaevnlvdsvlzvev HandleTypegvCLongkvtvivcvmvev ClockTimekv ClockTickown wgwCLLongo(wu/wb6wl=weDwCLDoubleo]wndwvkwCLconvswuwswewClauseqwClauseQswdwiwowpwiwInfoInfoDecmxp xbxuxf!xCJmpBufn9xoxtExCIntm|xp]xtdxrkxCIntPtraxxxCIntMaxCInoaxrxuxnxkx ByteString TextDetailslynyrxChar#yaylyp@ys!ye(yt/yCharsetadyoLysSyCharPosrkysryeyyry CharParserLitcytyeyryTokenChar#ChanbSzd!zlyeynzgzez Challengei(zg/ze6zs=ztDz ChallengeaZzsazihzcoz ChallengeizrzozuzpzCGroupCGIn{{oI{rztzCGITezq{szuzlzt{ CGIResultu {e'{s.{t5{ CGIRequestuP{tW{p^{ue{tl{ CGIResulto{t{h{i{n{g{ CGIResulti=|l{p{u{n{CFuno{s{CFposo|a&|c|k|CFLockt-|CFloatlD|eK|CFilee|i|ok|ur|by|l|e|CDoubler|CDire|n|t|CDirentv|CDeva9}h}l|o|c}k }CClocka#}r*}CCharl@}lG}Callconvl}s}tf}c}er}gy}o}r}y}Categoryh}Handlere}e}Expe1~l}b ~c}o}n}v}Callconva~c~k~Callbackn8~d?~aF~rM~tT~i[~mb~ei~ CalendarTimeCharaaei1lo+rƀuoy~t~e~a8c s~t~r~i~n~g~ ByteStringount% ByteCountr?rFaMyT#[ ByteArray#fvf}erBufferlPm'ostype BufferTypetate BufferStatepBufferOpo.d5e< BufferModeiWs^te BufferListcnil BufferListons BufferListe oҀaցwހserae6st ate  BrowserStatev=eDnKtR BrowserEventtmytp{eBrowserEventTypection BrowserActiond݁cast SocketOptionak ConsoleEventd݂oȂuvxAlHaObVe]ldBoxLabeln}d SocketStatusesBoundsdBoundedlςBoolyBodyqBodyQo ckberat1a8b?lFeM BlockTableehaosvo}n BlockReasondionb6defJm$os؃t߃m BlockReasonthe r BlockReasonv+a2r9 BlockReasonoQrXe_ifgmntc{all BlockReasonxceptĄi˄o҄nل BlockReasoneadmv arBlockedOnDeadMVarl=aDcKkRhYo`lgen BlockReasonndefinitelŅy̅BlockedIndefinitelyuffer ing! BufferModenRt=sDBitsbod^seStmtovx}BoxLabelstaBETA_BETA_tdžcsӆpچeedCompressionLevelo mpr!e(s/s6i=oDnKCompressionLevelcxrmTokenkqslashTokenuotLJe·Token bQcdfiܒlnlpYr7stugLjt#h*bdjo;rBiItPyW Authorityiqgxest Authorityasic AuthorityuΈsՈt܈MonthTokenp.shyn cexc&e-p4t;iBoInPAsyncExceptioneotc{AssoclnrightAssocoljnΉeՉAssoceftAssocrtaio!n( AssertionfɊpErLeSdZiachaobt{eAssertionPredicateleAssertionPredicableaЊi׊lފedAssertionFailedb le AssertablePatbgi,rMaoYw`Arrowa|cDlmpċtzero ArrowZeroTypelˋuҋsً ArrowPlusonad ArrowMonado#o*p1 ArrowLoophKoRiYc`eg ArrowChoicepply ArrowApplyyArray#ěxӌcڌeptionArrayExceptionArray#t3h:edsFeMqTe[ExpxkcreyptionArithExceptiondorǍd΍eՍr܍ArgOrderescr ArgDescri#t*r1a8r?yF Arbitraryp~reillsMontheltTypeicedNameIsaƎt͎iԎvێe ApplicativeExpnd h9mod&e-IOModea@nGdNlUe\ HandleTypeysAnyglovpDrternatÏiʏvяe؏ Alternativeeady exis%t,s3 IOErrorTypehKaRALPHA_fALPHA_n}eNameIsAllmsitextm's͐uԐbېmatches AllTextSubmatchesa.t5c<hCeJsQAllTextMatchesupbwm~atches AllSubmatchesaƑt͑cԑhۑes AllMatchescmdo.rep!DataRepr5i<tChJmQ Algorithmdk5r Algorithmsess Algorithmonstƒr͒ ConstrRep_aKcn}pAv4m app!e(d/ AddrInfoFlagaHsOsVi]vdek AddrInfoFlagumerichړservȓ AddrInfoFlagost AddrInfoFlaganonn$a+m2e9 AddrInfoFlagdplWl^ AddrInfoFlagdwr~config AddrInfoFlag_ a,bde]iՖnp+rsuOwx25 Familya n'p.i5p<eCFamilynVisbpiepcwFamilyxFamilyenaFamilycuÕrʕiѕtؕyߕFamilyosute FamilyeFamilyaXp7p>oExLFamilyc_kfemttFamilyetbromFamilyeu–iɖFamilyn2prsdnFamilyd aFamilyx&Familye9t@Family6QFamilycdoknreytFamilyecnetFamilylrǗiΗd՗gܗeFamilyueto oth Familypst\xB2I5PFamilymcpsovvc}FamilyvcFamilyhFamilyplĘe˘tҘa٘lkFamilyd jAdjar#{i$n+f2o9AddrInfofPlWa^ge AddrInfoFlagAddr#ttrsADDATTRScyęc˙lҙiٙcsccSCCep tAccepta(b/l6e= AcceptablesXo_lfumtte{stime AbsoluteTimeeekǚSeekMode:][]:][::]*)+::+::0:*:)D()TrxQ5QPP_P,POOkO6ON}NMMMhKAKJJGJIICI(HGMGrF"FnEDContentEncoding? ContentTypeCookieQ CountsoDataRep[DataTypeE E@!Day dDeadlockDec DecompressParamsDiffTime9 DynamicF sEditorErrno ErrorCallB ExceptiontC ExecOptionExitCode_Exp2:FamilyFdFixityaFFixityDirectionFloatForeignFormCFormatFunDepGeneralCategory! GenericT' GuardHandleHashG Header HeaderNameE HostEntryHotLinkJI#"HpcPosDHsAltHsAssoc HsBangTypeHsCName HsConDeclHsDecl ~|{zwvutHsExp}b HsExportSpec HsFieldUpdate HsGuardedAlt HsGuardedAlts HsGuardedRhs HsImportDecl HsImportSpec HsLiteral"FHsMatchHsModuleHsNameGHsOpMHsPat  HsPatFieldHsQNamecHsQOp HsQualTypeTHsRhsHsSafety HsSpecialCondHsStmtHsTypeeHtml H KH$gXHtmlAttrfWML HtmlElementN% HtmlTable  YHtmlTree IOErrorType IOExceptionOAIOModeInfoiInputInt:  N M L K J I onJhk]SG><6#PHR >-^BA$"Int32s[Int64IntPtrIntSet I H xt IntegerU T S geLanguage] LexContextyLexeme$^Lit%_Loc LocalTimehMatch MemoryLevel{7Message`Method8Mix\ModeModuleaMonthName}bZ NameFlavour NameInfoFlagNameIs NameSpaceNestedAtomically NetworkEntry NoMethodErrorcNominalDiffTimeNonTerminationOrdering? m OrientPPHsModeq PPLayout PackedStringfed ParseErrorsr   ParseModegPat PatternMatchFailh PermissionsPortID'j PortNumberIProperty C     n V  ProtocolEntryProxyQop QuasiQuoter Range RecConErroro RecSelErrorp RecUpdErrorqRegexr7 RequestMethodsResponseNextStepAtResult8 ReturnCodeSafetySeekMode ServiceEntry ShutdownCmdSockAddr)(uSocket SocketOption SocketStatus SocketType SomeException   SourcePos qpmlk xX!SrcLocYStateStdGenStmtStrictStyleTest  o z TestOptionsn TestResultV TextDetails&|TimeDiffr- TimeOfDayinTimeZoneW%Tix TixModuleDToken'~TyConTypeTypeRepX u~URIURIAuth URIAuthority6UTCTime8 f UniversalTimeVersion WindowBitsl9Word32 Word8q (WordPtr ZonedTimeaZ A @              t @ 7          y x w v u t s r q p ` _ ^ ] \ [ Z Y R O > ,  ;vH?0 zD1. bo        Z Y B         ~ } | mS)c H G B        compOptdU eexecOpt im$ # qM % r ~  regex   res* s"sourcettarget  u#wFx ~nmjedC(    Char[]t TimeLocaleMaybebaGenx ()IO ExceptionIOVtyRequesttyRequesttyNormalizeRequestOptions[]X()IOWord8PtrFunPtr()IOaPtrFunPtrChar[]Char[]PutTextlBoolIOCookieURIt BrowserAction  Char[]Char[](,)MaybeIOChar[]URIt BrowserAction amswrRWST amswr'RWST bnsw'rRWST ()musParsecT   ipccCharmusParsecT! dDoublemusParsecTIntIntIntInt(,,,)IntegermusParsecT SourcePosmusParsecTeWord32Word32Word32Word32(,,,)amusOperatorrqamusParsecT     olkihedZfaswrRWS aswr'RWS bmusParsecT nbsw'rRWS smusParsecTgtmusParsecThumusParsecTiDoubleIntegerEithermusParsecTusStatemusParsecT bChar[]musParsecTaMaybemusParsecTaa[]musParsecT /gfbt[]musParsecT IntIntInt(,,)IntIntInteger(,,)bIntSetBoolIntSet(,,)vagmGT ameErrorTVamrContT  amrReaderTu amr'ReaderT amsStateT  amwWriterTTasmGT  astsParsec-asttok GenParserasttokOperatorausParsec ausReply$ ybamKleisli bmrContT bne'ErrorT bnsStateT bnwReaderT bnw'WriterT bsmGT  bstsStreamPermParser  /.cba WrappedArrowmusGenLanguageDef musGenTokenParser`wsa(,,)baHeapba(,,)`()()grEA()CharGr"()IntGr$()aLexX()agrC()rLex+()sST()t BrowserAction b a  -K;4()ty BrowserActionEBoolaLexYBoolt BrowserAction ByteString ByteString(,)c % XbQ ByteStringacc(,)1 0  CGIResultIOCGITpHeader ConnErrorEitherIntCharGr#IntInt(,) `6IntIntArrayLIntIntGr%IntInteger(,)aIntSetInt(,)IntSetIntSet(,)G uOrderingaLexZProxyt BrowserAction RequestData ConnErrorEither ResponseData ConnErrorEither TimeOfDayInteger(,)a ConnErrorEither@aIOCGITraInt(,)S<aIntArray/a ParseErrorEither_]aa(,)a |oiaacatab(,)b ak(,),akMap!n l j i h g f b ` _               -jih#! \ak2Mapr q  amCGITamListTWam WrappedMonaddamtnarCont z arReaderw ar'Reader asST asState  at BrowserAction_awWriter*b ConnErrorEitherba(,)ba ArrowMonadbaAssoc baConstbaEither ba FiniteMapbaHeap  |e''&baSGr5bag1UQMKJHbagr>  MEDsk_]Z@87bbabc(,) bcgr bf AllMatches*bf AllSubmatches+bfAllTextMatches,bfAllTextSubmatches-bkMapm c   bnListT brCont brReader bsState bw'Writer cacat#"cagrF cb(,) cbaD CckMapp  da(,) db(,) dbaJ E  dcgr eiArrayeiIOUArrayeiUArrayeiaX W V 1-,gInt(,) ga(,) %gg(,) ii(,)ra(,) } sa(,)tc(,)3usState wa(,)Ews(,)bbb(,,)agrRB4bixsSTUArraysSTIntbagrmGTcbagrmGT dbagrmGTInt[]bagrmGTIntTree[]bagrmGTInt[]MaybebagrmGTIntb(,)[]aIntIntb(,)[](,,,)bagrmGTIntb(,)[]aIntIntb(,)[](,,,)[]bagrmGT a ExceptionEitherIOCGITqasSTRefsST bb(,)agrQckMapa(,)"  c'c(,)ba vaLexaLex  Authority[]t BrowserActionChar[]()Gr Char[]CharGr!Char[]aLex Char[]rLex[Cookie[]t BrowserActionHeader[] ConnErrorEitherIntMaybet BrowserActionInt[]IntArrayKType[]Type(,)TypeRep[]TyCon(,)aIntMapa(,)aMaybe ByteString(,)aQueuea(,)aSeta(,) cIntMapa(,)  cta(,) dca(,) dma(,) q[]a(,)! t BrowserStatet BrowserActiony[]acc(,)2 bagaNodeMap(,)r(,)0 amChar[] HeaderName(,)[]WriterT CGIRequestReaderTt()IO     ;         e    fdcb`ZO/.%"zyx?*}{nli:6  B,+*)'^GF952N()P`()Ptr()Q()ReadPs()STM84()f w()m       UBOz,Ps AddrInfoFlag[] AlgorithmMaybe ArithExceptionMaybe}AsyncExceptionMaybe~BodyQBoolIO PAx>BoolMaybeDBoolPprMsBoolSTM962Boolm_ BufferModeIO ByteStringBufferOp  ByteStringIO V}? ByteString[]o g 2 )  ByteStringmO CGIResultmA.-CIntIOQCSizeIO~CULongIO CalendarTimeIO+ CalendarTimeMaybeMCharIO@CharMaybe& CharReadP# tCharReadPrec{Char[]Vd . $  + * ) ( xjHG>+ cTRNJC= 32L;w(k\VClauseQ ClockTimeIOAConQ ConnectionIOUConstrMaybeUConstr[]X ContentTypem/CountsIODecQ DocPprM"  ~z`10.o`yut9jDynamicMayberE12FixedEditLineIOErrnoIOBExpQ6  0a3GuardQHandleIO\mPCHandleMaybe  HandlePosnIOHeader[]  HostEntryIODHsDeclPHsExpPHsModule ParseResultHsNamePHsPatPHtml[]HtmlAttr[] HtmlElement[] IOExceptionMaybeInfoQInfomIntIO  eXWV[EIntMaybe d '  0 =IntPIntPutTextInt[] h * 1 lkL@?:O?>~RP?Intm`Int64Maybee ( Int64[]i + IntegerIOFIntegerRatiof  Integer[]LexemeReadPuLexemeReadPrec|LocQmLocmMatchQMessage[] MixIOModuleMaybeNameQNamem0 NetworkEntryIOGNominalDiffTimeIOHPatQ 7 1n PermissionsIOPoolIOIPortIDIOR PortNumberIOS ProtocolEntryIOJQSemIO#QSemNIO$Qop[] RangeQResultGeng ServiceEntryIO&KSockAddrIOTSocketIO$SrcLocPaStdGenGenStdGenIOLStmtQStrictQo TestResultIOW ThreadIdIOMTimeZoneIONTixIOOTypeQ3pTypeRepMaybeTypeRep[]URIMaybeURI[] URImURIAuthMaybe URIAuthorityMaybe URIAuthoritymUTCTimeIOPUniqueIOQVersionReadPvWord32IOWord32[]Word8 ForeignPtrWord8IOWord8Maybef Word8[] ZonedTimeIORaArgDescr  aArgOrder a BlockTableTaBufferOpA aComplexd c }aConsumedaDualaEndo aFirst?aFunPtraGenD {UaHandlerO aIO?S R P      } _ C ? > <   K   (ygfZUTSaIdentity aIntMap          X W U S R Q P O L  (}[WaLPath9\aLast@a MatchResult{ aMaybe    )qJA ]aNodeMap/^aOptDescraP` \a ParseResult y [aProduct aPtrkaQ aQueue qaRatiog aReadP    xwaReadPrec [ F 5~}aRequestaResponse6aSTM:73aSeq   7 aSet   a StablePtr{aSum% aTree4 ' aViewL aViewR aZipLista[]25          s 6    z i h 4 3 2 . - D}u@yI>B0)&!ac  !af9 8 x'&am&   { x L K ; :        : {sqpljicU1D%b ForeignPtrbFunPtrbGenbIO ]   7 6 bIntMap  V M bLPathjbMaybe&  >bPtrbQbSet  b[] =       zbf  .)(HGFEbm   tomk bt bufTypeBufferOpcGeneric' cIO' c[]I       cf cm<   d[] df dmT reIOSeMaybehe[] emf[] g[] h[] i[]kSet&k[]*m GenericM' qQ\ r GenericQ'& rIOQrm/ . - , + regexm  sm&stPutText tMaybetargetm  ty BrowserEvent.tyBrowserEventType[4 tyIOtyNormalizeRequestOptions_tyRequestBWty StreamHooks u[]N vertexSCC vertex[]wmHyMaybe {zh=PatExpQName(,)Q gfedcba(,,,,,,)[]fedcba(,,,,,)[]edcba(,,,,)[]aaaa(,,,)mhdcba(,,,)[] ()IntInt(,,)[]VCUIntCUIntCUInt(,,)IOMTypeStrictName(,,)Qaaa(,,)mgbIntInt(,,)MaybeIbIntInt(,,)[]N9W>cba(,,)[]eia IOToDiffArrayIO+wsa(,,)mIntaPtrIntInt(,,,)IOadcbEithera  akMapak(,)(,)akMapakMap(,)e   cd(,)bd(,)acdEitherbdEitherackMapbkMap(,)^ w c'c(,)b'b(,)a c'cEitherb'bEithera dc(,)db(,)adcEitherdbEithera aInt(,)aNodeMapbag(,,)T akMapaMaybeakMap(,,)  aInt(,)[]aNodeMapbag(,,)PaNodeMapaInt(,)(,)RaNodeMapbag(,)>()()grmO()CharSGrIO1() ConnErrorEitherIO ()Int(,)[]8()IntSGrIO3 ByteStringChar(,)Maybe ByteStringInt(,)Maybe ByteStringInteger(,)Maybe ByteStringWord8(,)MaybeCharChar(,)[]ExpGuard(,)QExpName(,)QIntCharSGrIO2IntInt(,)[]HGL7YXMIntInt(,)mYIntIntSGrIO4IntSetInt(,)MaybePatName(,)QRequest_String ConnErrorEitherIO Response_String ConnErrorEitherIO  SockAddrInt(,)IOUSockAddrSocket(,)IOLSocketSocket(,)IOString ConnErrorEitherIO  TypeStrict(,)QWord8Word8(,)[]a ByteString(,)IOa ConnErrorEitherIO[a ExceptionEitherIOa IOExceptionEitherIOaInt(,)[]P 8Oa ParseErrorEitherIOa ParseErrorEithermmaa(,)meabEitherIOQ = aeEitherIOaeEithermak(,)[]'b ConnErrorEitherIOu bInt(,)[]M=ba(,)Maybeba(,)[]ba(,)m baSGrIO!bagr[]=bagrmS^bixIOUArrayIObufType ConnErrorEitherIOei(,)[]ei StorableArrayIOeiamY 20/.eibmeixIOUArrayIO@ga(,)mgb(,)m  ii(,)msa(,)m$stCounts(,)IOusCounts(,)IO^ valkey HashTableIOt s wa(,)mfGws(,)mDoubleDoubleDouble(,)()Gr(,)IntInt(,)IntArrayMaybe IntInt(,)IntArray[] akMapa(,)Maybe%IntInt(,)source(,)IntArray[]  sourceIntInt(,)source(,)IntArraysource(,,)Maybe  PortNumberChar[]Handle(,,)IONIntMaybekeykey[]keynode(,,)IntInt[]IntArray(,,)p key[]keynode(,,)IntInt[]IntArray(,)oChar[]()SGrIO0Char[]Char(,)[]Char[]String(,)[]Char[]a(,)[] HsImportSpec[]Bool(,)MaybeHsType[]HsName(,)PHsType[]HsQName(,)PInt[]Int(,)[]KaIntMapa(,)MaybeaSeta(,)Maybea[] ConnErrorEitherIOb`bufTyRequest ConnErrorEitherIOtyRequest ConnErrorEitherIOtyResponse ConnErrorEitherIOaHeader[](,) ConnErrorEitherIOE caIdentitystChar[]GenLanguageDefIdentitystChar[]GenTokenParserIntIntWord8 ForeignPtr(,,)aSetBoolaSet(,,) ()Char[]GrIntChar[]GrIntInt[](,)URIChar[](,)akMapaMaybe(,)k a tyResponseURI(,)ty HandleStream BrowserActiong[]f[]e[]d[]c[]b[]a[](,,,,,,)w f[]e[]d[]c[]b[]a[](,,,,,)v e[]d[]c[]b[]a[](,,,,)u d[]c[]b[]a[](,,,)taIntMapaMaybeaIntMap(,,)'c[]b[]a[](,,)n Char[]Char[](,)Char[]Char[]MapaIntMapaIntMap(,) N &aIntMapaMaybe(,)T K aSeqaSeq(,)6aSetaSet(,)  a[]a[](,) Cb[]a[](,)xdb[]b[](,) cIntMapbIntMap(,)v J  Char[][]Char[][]Char[][]a[](,,,)J Char[][]Char[][]a[](,,)IN()IOIO()PtrIOAddrInfo[]IO7 ByteStringMaybem( ByteString[]m+CCharPtrIOCWcharPtrIOCharMaybeIO,Char[]BufferOp Char[]IO_k|<;:Char[]Maybe |L VChar[]ReadP" rChar[]ReadPrecyChar[]RequestChar[][]FE=*BChar[]mDocPprM[]v HostEntry[]IOHsDecl[]PIntMaybemIntTree[];Int[]Maybe<Int[][]K<Int[]mR^ NetworkEntry[]IO ProtocolEntry[]IO ServiceEntry[]IOTixMaybeIOType[]QVertexTree[]QOWord8PtrIOaChanIOv(a ForeignPtrIO)aIORefIOaMVarIO+aMaybeIO%aMaybeSTM5aMaybef$aMaybemb)aPtrIO| /  #"!  -a StableNameIO a StablePtrIO aStreamDebuggerIOaTChanIO5aTChanSTM1aTMVarIO 6aTMVarSTM aTree[]3 <aTreem9 a[]Gena[]IO 2wa[]Maybea[]Qa[]ReadP4a[]ReadPrecza[][] =a[]f%a[]m TacMaybeatfvatmybLPath[]JI:bMaybeIO bPtrIOb[]m bcMaybe btf btm bufType HandleStreamIOvScTree[]   c[]m e[]mkWeakIO nodeSCC[]rty HandleStreamIOwTvMaybeIOAvWeakIO valMaybeIOIntbbb(,,)(,)[]JbIntInt(,,)[]MaybeLbIntInt(,,)[]m\key[]keynode(,,)SCC[]qcbcba(,)aakMapak(,)(,)Maybe$ba(,)ba FiniteMap(,)MaybeaIntMapaInt(,)(,)Maybe Intb(,)[]aIntIntb(,)[](,,,)IPat[]NameName(,)[](,)KaNodeMapaInt(,)[](,)NIntInt(,)[]mZIntb(,)[]IOaInt(,)[]m[bat'cMaybeei(,)[]mst(,)Maybem vk(,)WeakIO valkey(,)[]IOIntInt(,)a(,)[][]UBoolChar[] ReturnCode(,)EitherIO5IntChar[] ReturnCode(,)EitherIO6RegexChar[] ReturnCode(,)EitherIO210/  ByteString[] ByteString ByteString ByteString(,,,)MaybeChar[] ReturnCode(,)EitherIO? IntInt(,)IntArrayMaybeChar[] ReturnCode(,)EitherIO@:8 IntInt(,)IntArray[]Char[] ReturnCode(,)EitherIO4 Int64Int64(,)[]MaybeChar[] ReturnCode(,)EitherIO3CharSeq[]CharSeqCharSeqCharSeq(,,,)MaybeChar[] ReturnCode(,)EitherIO7Char[][]Char[]Char[]Char[](,,,)MaybeChar[] ReturnCode(,)EitherIO9Char[]Bool(,)MaybeIOHsType[]HsQName(,)[]PaMVarInt(,)MVarIO*a[]HpcPos(,)Tree[]SSockAddrIntChar[](,,)IO^()Char[]SGrIO.HandleChar[](,)IOInputChar[](,)[]IntCCharPtr(,)IOIntCWcharPtr(,)IOIntChar[](,)IO]IntChar[]SGrIO/aChar[](,)ReadP()bagaNodeMap(,)State# mc;  aLNodebagaNodeMap(,)State"  aLNode[]bagaNodeMap(,)State bLEdgeMaybebagaNodeMap(,)State: bLEdge[]MaybebagaNodeMap(,)Statel Char[][]Char[]Char[]Char[](,,,)Maybe;Char[]Char[](,)[]IChar[]a[](,)[]c[]b[](,)m bagrcTree[](,) Char[]MaybeIOwChar[]Maybem'Char[][]IO98Char[][]Maybe<Char[][]m*CharsetAcceptMaybemContentEncodingAcceptMaybem ContentTypeAcceptMaybemIntTree[]m]Int[]MaybemQLanguageAcceptMaybemVertex[]Tree[]NaIORefWeakIOaTree[]m8 at'cMaybeausReplymConsumedmjbagrIntb(,)[]aIntIntb(,)[](,,,)(,)5 Intb(,)[]aIntIntb(,)[](,,,)[]  Intb(,)[]aIntIntb(,)[](,,,)maPatNameName(,)[](,)Q HsName[]HsNameHsType[]HsQName(,)[](,,)P HsType[]HsQNameHsType[]HsQName(,)[](,,)PaChar[] HeaderName(,)[](,)mu ByteStringInputChar[](,)[](,)M ByteStringChar[](,)[]mChar[]Char[](,)[]IO7Char[]Char[](,)[]mChar[][]Char[](,)MaybeIOChar[]MaybeChar[]Maybe(,)IObagrIntb(,)[]aIntIntb(,)[](,,,)(,)mXbagrIntb(,)[]aIntIntb(,)[](,,,)Maybe(,)F Intb(,)[]aIntIntb(,)[](,,,)[]m bagrIntb(,)[]aIntIntb(,)[](,,,)Maybe(,)mPQ~44K4433432/211V**)(##C#"S""!!!t!b;RxM*vHhEK/|ۄ؃\=Հqs;~~~n~~}}}8}|||{uu>uuttsskjjhhffaWaa__{_[_8__^^^^X^ ^^]w]R];]rarb aa(,)aBoolCharA rra  ()IO() ConnErrorEithertyChar[]ty  ()IOty ConnErrorEitherIntChar[]ty rmarmb ()IOty ConnErrorEitherChar[]ty ambma rmrma resresba* tsa cIOcIObPtra' Char[]Char[]a) ( Char[]a(,)[]Char[]Int[ hgfedcba gfedcba fedcba ra5a4a3a2a1+ edcba ra4a3a2a1,  SourcePosst SourcePos  aaaIntU T S R aaakl k j i h abaIntX bbaIntY bbako cbakp dcba  ra3a2a1- ca(,)bInta ca(,)bka" aMaybebaIntW aMaybebakn )BoolCharChar2 BoolWord8Word8o BoolaIntO N Boolaa Boolakf e Boolba  Boolkeykeyt CharCharChar5 4 3 Orderingaa Word8Word8Word8r q p a ByteStringa aCharChar6 aChara aWord8Word8s aWord8a A aa ByteString aaChar7 aaIntQ P aa TextDetailsaaWord8t aaa  A aakg aba  ari[ baIntV baaC  bakm bbIntZ bba      bbbcbaI      cbbB ddcee'eW V propaa propbbC ra2a1. rrr| rrr' rr'r~ } sst wsa(,,)sr Characc(,)Characc0 Word8acc(,)Word8acc1 aa(,)aIntA ca(,)ba cbEitheraIntJ cbEitherak^ ea(,)ea qa(,)ea! r'a(,)ea } sr(,)sr' tr(,)tiy ] [ 3us(,)uj] \ yacc(,)xacc2 ema(,)ea gca(,)ga ()IOaHandleA BoolIOCookieURIb Char[]akd IntIOCharInt*aIOIntHandleA aMaybeaIntL K aMaybeakb a ` _ aMaybeba amba  bMaybeaIntM bMaybeakc bmba cmba  usIOusState^ wsa(,,)msr tiMaybe(,)tjy [ trMaybe(,)ti\ 8()a   ()bH =    ()cI BoolChar. - , + * ) ( ' & % $ # " !  oBoolIntH G BoolWord8 k j i h g f e d c Boola A A Boolb> Boolrv Bools  ByteString ByteString  ByteStringChar/  ByteStringWord8l CharChar1 0 CharInt  Exception Exception@ GenericTa  IOException IOExceptionC IntChar  IntIntI Int32keyt s IntegerDay: 9 8  SourcePost Word8Word8n m a CGIRequest aa  ab? ary x w as bHtmlB baH G B =  bbA @ bw ca  cbH G F E D   dcJ  eeU ee'Y X e2e1Z ji21kName\ k2k1r q ma$ # qa% qb% qdM ra| & ra1/ rb rr{ z rr' r'd ~ ss udN uu ww  rca(,)ereca bmusParsecTanStdGena(,)StdGen_ aIOCGIT ExceptionrasSTa b ConnErrorEitherau ba(,)acbEitheraw v sa(,)s b[]a(,)b4 3  SourcePost[] SourcePos a[]a[]a bIOaPtrInt7  Char[]Char[](,)MaybeIOChar[]URIa -()IO Exception; Boolma Char[]a   A Char[]t Char[]ty,+*MaybeGenericMay aGenIntD aIO Exception< aIOHandleA A aIO IOExceptionaIOa} aIObS R ? > aIOeP O aIO exceptionaMaybea aMaybet   aPToken` aReadPIntF aca ama  amepamru bGenax bIOPool] bIOabMaybe Exception? > = bMaybea bMaybeeS R Q bQab[]a  bfa bma <  obmb; :  cIOacmb< dmdL K emeT gcg mGenericMaz qQLit\ rGenericQa{ rIOHandleQrcr rma  uMaybea aChar(,)Maybea~ a ConnErrorEitherIOIntE caWord8(,)Maybea ba(,)IOaba(,)Maybeb5 cb(,)ma sa(,)ms b[]a(,)mb9 8 qQqQ[]k\ ExpQMaybeb6 PatQMaybeb7 aPtrIOa| qQMaybeb\   CGIResultChar[] HeaderName(,)[](,)m CGIRequestPObcdbdc rcrbc  amusParsecTamusParsecT`````` a[]musParsecTamusParsecT````BoolbIntInt(,,) w'sb(,,)wsa(,,) cba(,) sb(,)sa(,) usStateusState w'b(,)wa(,)  ausReplymConsumedmusState stIOstBoolChar[] usIOusStateChar[]^ ^ aIOIntSockAddrPtrK()b[] aChar[]A  aa[]A qetM resb[]* ()musParsecTChar[]``Char[]musParsecTChar[]` ()IOChar[] ()IOWord8PtrBoolmsm  Char[]Char[] Char[]t[] ExpQChar[] IntIOWord8PtrPatQChar[] aIOCCharPtraIOCWcharPtraIOePtr(aMaybeaMaybe bIOaPtr  6 bnam cIObPtr' ftftU rmrm aIntInt(,,)IOWord8Ptrga(,)mgm Char[]a(,)[]Char[]  ftmftT Char[][]IOChar[] w'sb(,,)nwsa(,,)m be'EithernaeEitherm sb(,)nsa(,)m w'b(,)nwa(,)m aIOIntCCharPtr(,)aIOIntCWcharPtr(,)aChar[]Maybe b[]na[]m  ccIntb(,)[]aIntIntb(,)[](,,,) dcIntb(,)[]aIntIntb(,)[](,,,)  BoolIntb(,)[]aIntIntb(,)[](,,,) cIntb(,)[]aIntIntb(,)[](,,,)    Int[]Intb(,)[]aIntIntb(,)[](,,,) Node[]Intb(,)[]aIntIntb(,)[](,,,) Intd(,)[]cIntIntd(,)[](,,,)Intb(,)[]aIntIntb(,)[](,,,) HtmlIOChar[]Char[](,)[] %()>  AbsoluteTime8 mAddr#VAddrInfo AddrInfoFlagAllAnyArithExceptionArrayExceptionAssocrAsyncException AuthorityBodyBoolCd d | q qqnW;776&  J BufferMode ByteString1 0    t s s r q p o m l k j i h g f e d c 7 6 6 5 4 3 2 0 / - , + * ) ( ' & %  @?YXj32mCChar CGIRequestuCIntZCSizeCULong CalendarTimeCallconv Challenge     Char&5 1 . m\[*)('&%$#"!  ClockTime.--,+ CompOption210/CompressParams9876543CompressionLevel:CompressionStrategy:ConCondBox;Config?>=< ConnError@ ConnectionAConstr   HGFEDCBs ConstrRepZ ContentTypeJICookieQPONMLKCountsSRDataType _^]\[ZYXWVUTDay 9 |hgfeedcba`DeciDecompressParamslkjDiffTimenmfDoublepo\DynamicvutssrrqEditLinezyxwEditorzErrno{A Exception~}| ExecOption210/ExitCodeExp`:Family FdFixityVFixityDirectionaFloatForeignFormFormat GenericT'HandlePPhgf HandlePosnHash\DHeader HeaderName HostEntryHotLinkHpcPosHsAssoc HsConDeclvHsExp} HsGuardedAlts HsImportDecl HsLiteralHsName{zvutHsPatHsQName wHsQOp HsQualType|HsRhsHsSafety{ HsSpecialConHsType {zTHtml LKJI% HtmlElementgHtmlTree IOErrorType  IOException [    IOMode\QPInputInt` )     U T Q L K E    R Q P O qpfbbbbaa`_^]VU/! ~}| ||||||{zyxwvutsrrrrrwInt#Int64IntPtrIntSetZ I H G xwvuInteger|r_\ LexContextLitzLoc LocalTime MemoryLevel:MessageMethod:Mix ModeModuleMonth|Name7a NameFlavourNameIs NameSpace NetworkEntryNominalDiffTimeOrient3PPHsModePPLayoutq PackedString ParseError $ s      ParseMode Pat ~ PermissionsiPool #"! PortID%$nmlk PortNumber)('& ProtocolEntry,+*Proxy-QSem.QSemN/ QuasiQuoter10Range2Regex@?>=<;:9876543 RequestMethodCBAResultEDSafetySeekMode ServiceEntryIHGF ShutdownCmdcSockAddrdXVKJSocketfedcba`_^]\[ZYXWVUTSRQPONMLwv SocketOptionfe SocketStatus SocketTypeg SomeExceptionh SourcePos srqponmlkjiySrcLoc~}|{zyxwvut\StateStdGenStyleTest^ z TestOptionsW {ThreadIdTimeDiff TimeLocale TimeOfDayhTimeZoneTix} TixModuleTyConTypeTypeRep URI CBURIAuth> URIAuthorityUTCTime : Unique UniversalTimeVersion WindowBits:Word16Word32)((Word8r n mWordPtr ZonedTimea  ~ } l k Z N L K H G B B A @ < ; : 7 6 ) % " !                                 ~ t \ U T B A @ 7          |acc2 1 0 b( o ? ? 9 5 4         Z Y                 JbufTypec   compOpt d } U T M !     e W  0 exception execOpt  g  &%ht ht1 ht2 html i kl k g b a      .key r  ~ }  regex s &%$m_^]source            source1 st e t 3ty,u m_us^ v  valvertex w x  ~ } | | { { { z z z y y x x w w v v u u t t s s r r q q p p o o n n m m l l k k j j i i h h g g f f e e d d c c b b a a ` _ ^ ] \ [ Z Y X W V U T S R Q P O N M L K J I H G F E D C B A @ ? > = < ; : 9 8 7 6 5 4 3 2 1 0 / . - , + * ) ( ' & % $ # " !                           #"v?6:984  iUTSR= {onnmlkih6$#rqqqqqqpppppoooonnmmllkkjjiihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"!Z ^>=:.baSSRRQQPONMLKJI44\ZYYXXWVUTSD~~J+ yigSSR:ONMuust SourcePosMaybe cccr(,)3HtmlIntInt BlockTableYXaaaReadPbaf.)bamt TestResultIO TestOptions[]{ Char[][]Char[](,)MaybeIOIntIntChar[]MaybeGcccdMaybe(,) ()ty BrowserActionty BrowserEventMaybeE()IOaPtrenvPtrFunPtrtyRequesttyRequesttyNormalizeRequestOptions[]()IOaPtrFunPtrChar[][]IOChar[]MaybeFaaasttok GenParseraasttok GenParserbastsStreamPermParser/.aaamusParsecTrihaamusParsecTqgfedcbatfedcbatamswrRWST  edcbat()musParsecT`CharmusParsecT`DoublemusParsecT`IntIntIntInt(,,,)DIntegermusParsecT` ` ` ``Word32Word32Word32Word32(,,,)(amus OperatorTableZamusParsecT   /onmlkjihgfeedcbaZaswrRWS  closemusParsecTodcbatendmusParsecTfopenmusParsecTosepmusParsecTgtmusParsecTpDoubleIntegerEithermusParsecT` Char[]musParsecT```````IntIntInt(,,)A6TypeStrictName(,,)9a()sParsec^]agmGT  aixsSTUArrayameErrorT amrContT  amrReaderT amsStateT  &%$amwReaderT amwWriterT HGasmGT      astsParsec /astsStreamPermParser-asttok GenParserausParsec_ausReplybIntInt(,,)87baa(,,)JI;:bamKleisli cba WrappedArrowCcbatei RealWorldSTUArrayeia IOToDiffArraymusGenLanguageDefmusGenTokenParser >() ConnErrorEither,BoolIntIOArray CGIResultIOCGITp CGIResultmCGITsDoubleDouble(,)3IntInt(,)3TypeStrict(,)Word8IntIOUArraya ConnErrorEitheraIOCGITrqaInt(,)aIntArray{ a RealWorldSTaa(,) H&%$#"! ac(,) aconn BrowserActionZaixIOUArrayakMap@p o n m l k h h g f e d c b a ` _ ^               w           -,.-,+*)('&%$#""!! ak1Mapr q  amCGITutamListT am WrappedMonadDarCont z arReader  asSTasSTRefasState  at BrowserAction_awWriter FEb()aba(,)  )('baConstbaEither ba FiniteMapbaHeap'bacat#"bag 3210/UTQPMKJHbagrNF >                mlkjNMLKJIHGFSRQPONMLKJIHGFFEDCBA@?>=<;:98765k_ZYX@87batbf AllMatchesEbf AllSubmatchesFbfAllTextMatchesGbfAllTextSubmatchesHbkMapp n "     #ca(,)  cba J     cbcat#"c'ba c'b'a  dba dcaE  ei StorableArray('eiaV eixUArray@eja21e'iaY X ii(,) W 210/.-,+ty ConnErrorEither+*usState$ #"! jvaLex valkey HashTablewa(,)*astsParseca(,) .bbb(,,)agr4eisSTArraysSTeisSTUArraysSTcbagrmGTDoubleDouble(,)()GrBoolIntIOArrayIntb(,)[]aIntb(,)[](,,)MaybeIntArrayInt(,,)5Int[]IntArray SRQPONMLKType[]Type(,)bLPathbHeaptyResponse ConnErrorEither amChar[] HeaderName(,)[]WriterT CGIRequestReaderT()IO   ()Ptr{()mAddrInfoMaybe7 AddrInfoFlag[] AlgorithmMaybe& AuthorityMaybe Authority[]BodyQBoolMaybe8Bool[]Boolt| ByteString[]CCharPtr6543/~}|CWcharPtr CalendarTimeMaybe CharMaybe9CharSeq870Char[]        $      {{zzylkXW>>=<;:910& | pWBAWVUA1.3~}|{z)Clause[]ConQCon[]Constr[]!Cookie[]DecMaybeDec[]DocPprM 1yyxwvuutsE12FixediExpMaybe.::ExpQ3Exp[]FunDep[]HandleMaybeAHeader[] 6HsAlt[] HsBangType[]HsCName[] HsConDecl[]tHsDecl[] wuHsExp[] HsFieldUpdate[] HsGuardedAlt[] HsGuardedRhs[] HsImportDecl[]HsMatch[]HsName[]|vutHsOp[]HsPat[]} HsPatField[]HsQName[]vtHsStmt[]HsType[]~wHtml[]$#"HtmlAttr[], I%" HtmlElement[]HtmlTree[]IntMaybe=<;6Int[]       QIntSet[]IntegerRatio Integer[]DMatch[]Message[]ModuleMaybeName[] NameInfoFlag[]PatQ Pat[]Qop[]&RangeQ RealWorldMutableByteArray#SockAddrPtr SocketStatusMVarStmt[]StrictQTest[] TixModule[]TypeQ Type[]TypeRep[]URIMaybe>URI[]&URIAuthMaybeWord32[]Word8 ForeignPtrWord8Ptr Word8[]aArgDescraArgOrderJIa BlockTableWVUTTaBufferOponmlkjihgfedcba`aChan{zyxwvaComplex~}|aDualaEndoaFirstaFixeda ForeignPtraFunPtraGenC  UaIO3S R Q P           C ? > = < %  aIORefaIdentityaIntMap:              v Y X W V U T R R Q P O N M L K J  O *)('&  aLast aMVar a MatchResult10/aMaybe ' |   DCBAA@?aNodeMapUTSRQPONMLKJIHaP \[aProductzaPtr(    bVU2aQaQueue aRatioaReadP 4aReadPrec5aRequestaResponseaSeq   76    aSet     !     a StableNamea StablePtraSum0aTChan4321aTMVar:98765aTree?>=<aZipListIa[]I = * (                                    { i 7 6 5 4 3 2 1 0 /  #DCac! af     .)('&&%$am  {  UTtponmlkjjiihgfedat$ #             ; ~}a1m/ . - , + a2m. - , + a3m- , + a4m, + a5m+ bGenbIO  bIntMap     X W bPtrb[]I 8 3              bc!bf   9 -,+*('bmqmlbt   bufTy HandleStreambufType HandleStreamcGeneric'cIOc[]      cf closeReadPd[]    dmsre ForeignPtre[]   .-endReadPenvPtrf[]  g[] gm ht[]i[]3m GenericM'mtopenReadPr GenericQ'sepReadPstPutTextt BrowserState_t[] tok[]ty BrowserEvent^]\[tyBrowserEventType.ty HandleStreamtyNormalizeRequestOptionsYXWVtyRequest WtyResponsety StreamHooks,+*)vWeakBAvertexSCCvertex[]x[]2 QPONzebayxwvutsrqponnmlkjihgfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&&%$#"!  N          s@ml_][6d6wwa(,)mU gfedcba(,,,,,,)[]wfedcba(,,,,,)[]vedcba(,,,,)[]uamusParsecT[]dcba(,,,)[]t Header[]Char[]IntIntInt(,,)(,,)4TypeStrictName(,,)[]bIntInt(,,)[]k^]baa(,,)[]mlMLcba(,,)[]nkey[]keynode(,,)[]rqpodc(,)db(,)aBoxLabelHpcPos(,)[]\CharChar(,)[]QExpGuard(,)[]RExpName(,)[]`IntInt(,)[]ZYXWVIntb(,)[]NameName(,)[]aPatName(,)[]TypeStrict(,)QTypeStrict(,)[]Word8Word8(,)[]ba ConnErrorEitherIOu cba`aHpcPos(,)[]SaInt(,)[] S _^]\[aa(,)[]cKaeEithermVak(,)[]j i   jihakMap[] ba(,)[]& gfedbaEither[]zyxbaHeap[] |bagrm  SRQPba`_^]\[ZYXbatceInt(,)[]+edtcei(,)[],e'i(,)[]W V valkey(,)[]s wa(,)mTChar[]Char(,)[] HsImportSpec[]Bool(,)MaybeHsType[]HsQName(,)[]wvutTaGenInt(,)[]UaMVarInt(,)MVarIntCCharPtr(,)IntCWcharPtr(,) TixModuleChar[]EitherChar[]Char[](,)Char[]Char[]Map1()IOMaybe   2Char[] HandleStreamChar[]IOxChar[]MaybeA&  776654Char[]Request  Char[]Response Char[]Tree;Char[][]pAV= k88JIClauseQ[]ConQ[]DecQ[]DocPprM[]vExpQMaybe33ExpQ[] HsExportSpec[]MaybeHtml[][]Int[][]@MatchQ[]PatQ[]StmtQ[]Stmt[][]StringTree[]TypeQ[]Type[]QaAcceptMaybeaGen[]{aHandler[]aIntMap[] }aLPath[];:9aMaybe[]aOptDescr[]JIaPtrIOaQ[]aReadP[]aReadPrec[]aSCC[]aSet[]aTree[]' a[][]a[]mWa[]tuaftxwvam[]ammcamt{zyatcbLPath[]?>=<~dtcetmrIntbbb(,,)(,)[]JTypeStrictName(,,)Q[]asttokOperator[][] Intb(,)[]aIntIntb(,)[](,,,)CBA@?>=<ExpGuard(,)Q[]ExpName(,)Q[]PatName(,)Q[]TypeStrict(,)Q[] HsBangTypeHsName[](,)[]InputChar[](,)[]rbagaNodeMap(,)State10Char[]Char[](,)[]CPONMLChar[][][]VStmtQ[][] Intb(,)[]aIntIntb(,)[](,,,)[]sPatNameName(,)[](,)[]KaIdentity()Char[]ParsecT [kLkAk6k#kk kkjjjjjjjyjhj]jRjGj/j jiiiimi2i'iihhhhhvhghPhEh4h)hhgggggggmg^gOg@g5g*gggfffxf=ffeeeeeeeeerege\eQeBe7e,e!ee eeddddddddrdgdXdGdb'b baaaaaaaaamabaWaLa:a/a$aaaa````` `______l_V_@_*__^^^^t^;^^^]]]]]l]G]<]1]]\\\f\W\H\5\&\ \\[[[1[[ZZZ~ZoZXZ5Z&ZZZmXRXXX-WWVVaVNV{UhUYUNUCU(UUUTTSnSWSSSRRRRRRR_RHR1R"RQQQQQQQvQgQ\QEQ6Q'QQQQPPPVPCP0POOOOyOnOcOXOIO>OcNLNAN.NNNMMMMMwMSM9MMLLLL|L`LFL)LLLKKKKKKtKdKDK$KKKJJJJJUJ*JIIIIsI_I@I#IIHHHHsHVH6HHGGGGGGGGGvGeGJG4GGFFFFFFwF^FFF;F,F!FFFEEEEEEEEtEeEZEOEDE9E'EE EEDDDDDDwDlDaDVDKD@D1DDDCCCCCCCCzCiCTCCC8C'CCCBBBBBBBBpBeBVBKB@B5B%BBBBAAAAwAYANA;A(A A@@@[@<@1@@@@?????T?-?>>>>>>p>^>>>>>===w=V=<=1====<<<<<<<<~<\<@<1<<<<;;;;;p;];N;?;4;; ;::::::x:d:Y:N:C:8:-: :99999999l9]9F9-9999888888888~8i8T8I8>838$888877777777t7[7L7=72776666666666y6e6S6A6/66555555555t5i5Z5O5D525 5544444k4T4244333333h3Y3<3*3322222Z2)22111V1-1"11000~0M0>030$0/////w/l/a/C/$//...........u._.T.I.3...--------m-b-L-A-6-+--,,,,,,o,V,<,(,,+++~+c+H+.+++****h*T*:*&* *))))))))p)a)J)3)$))((((l(X(D(0(('''''''p'a'R'G'6'+'' '&&&&&&&&{&p&e&O&.&#&&&%%%%%%%%y%n%W%H%9%*%%%%$$$$$$$$$$$u$X$C$*$$ $##########q#f#W#H#9#*##"""""""x"`"H"="2"'"" ""!!!!!!!!!z!i!^!S!H!=!.!!!       g C 8 )  kTC#ziL' eE2iXM,}V=!rYJ1 wL6wVK4x_@pVD0C#wcL4u]E3!_EygA/tXF&mIdK,    n M ; %    ~ l Z D *       | f        t b 1      q J 0  pJ.qS9#nW5|jM; iO5 mWA/ ucM;n\4dR@${pXI>3$~`8&v]:o\I6lYF7,oJ?# pX@1" {dP3]7, xeR9& rP%M"oQ0kR9.# iAuT7 r[?!}`=tMB7`5zS@-qLkG&}]=zXAt]>*xmbWL:/hYN:$paH$ mXC8 pYJ;% ufWHzoD5v[P6iH2 |i^jOD9.~sh]A$kT=& {p\J8xfO=+{hF;0%mbWLA+xTI>3$ }ncX>$ |mB7 vk`5*uH6xaNC8-" {peZOD9.|qbWD9*q^qJ' }NC0 eZ@5oN;(׿ȿmI* Ѿ~gO/ؽmT;̼s`UC4ٻŻsh]lN) ϹĹzoQ:(ݸθyj[PA*ڷϷķxmYA- ۶жŶwdUF/$صqV?4%ҴyjK%سl]3زoW?%ֱwcI: ذɰvgXI2#߯ȯsMB' ٮƮpYG1ۭ̭rgQF, ۬ŬX=% ٫ʫpH+̪|jXF4ҩnV?4)ʨr`UJ8- ݧҧǧ|eC! ަ¦hYJ5  Υ~sh]RG<1&ФŤh]MB7(ܣʣlN0 ɢuj_TE:/$ߡԡwhWE:ʠt^SA6+ ֟ğcXE:+ ɞ|eN-"۝̝t^SH='ٜu\F; ٛxm\K6!ӚȚ~bG*љiS=$՘oUD ΗzhV;!nXB, {bK1 ͔r`DޓÓlB.˒gK̑{X<ѐtW;*ď~_PoJ; bK+̌dJ4 ڋɋ|qf[;zC g!sM(χS sK5ͅzbJ/ քxZ<ԃw^E$xmZO='ցt>, ׀̀ynXF%rSA2# ~~~~~~l~Q~F~;~0~%~~~}}}}}}}}}t}e}V}G}8})}}}|||||||||o|]|R|-|"|||{{{{{{{{r{S{D{5{*{{ {zzzzzzz{zgzKz7z,z!zzzyyyyyyyylyNy1y"y yxxxxxvxkxUx9xxwwww}wfwOw.wwvvvvvxvmvbvQv@v/vvvuuuuu}urugu\u=u&uuttttttttitUtFt/t$tt tssssssss{shs]sRsCs)ssssrrrrrrrfrWr4rr rqqqqqqvqkq`qHq5q*qqqppppp{pcpXpMpBp%pp pooooooro]oRoCo0oo oonnnnnnnunfnWn>n3n(nnnmmmmmmmbmAm-m"mmlllllllxlalRl@l5l*lllkkk{khkTk=k,kkjjjjjjjjjVjCj)jjiiiii{i`i:iihhhwhNh6hh hgggggggg{gjgYgIg8g'gggffffffffvfkfDf3f(ffeeeeeeeeqebeSeDe5e"eeddddvdEdddccccc|cqcXc ResultString+ 2  MonadContm MonadWriterm MonadWriterw MonadWriterm MonadWriterwf7MonadmKStreamsStreamtStringNStreammStreamsStreamtStringOStreammStreamsStreamtStringT MonadStatem MonadStates[\YZ> MonadStatem MonadStates MonadmMonadmWXUVDataaJDatad%$lnhjDataaIDatadvGenericQ MonadReaderm MonadReaderr (Split MonadReaderm MonadReaderrTypeablerGenericQAEqkey2Ordk23zOrdk POrdkAdeOrdk_OrdkJOrdk5Eqk OrdkOrdkOrdk:Ordk| String=Ordk Ordk Ordk  /OrdkSplitSplitSplitM'SplitSplitM0 Exceptione1 Exceptione2 IxiMArrayaMArrayeMArraye'MArraym IArrayaIArrayeIArraye'Ixil IArrayaIArrayeIxik IArrayaIArrayeIxiDatad Typeable1tDatadMonadm Typeable1tz Exceptioned  Exceptioneb a Exceptionex ExceptioneDataaDatad Typeable1tDataa MonadPlusmDataaMonadmArrowaOStrategyG H StrategyOVDynGraphgrArrowaArrowa!ShowaTestableprop\TypeableaTypeablebDataaOrdaDynGraphgr#StrategykMonadmV MonadPlusmTypeableaTypeablebUMonadmTypeableaTypeableb Monadm MonadmForestGDataaFDataa   Forest$'#&  MonadmMonadmMonadmMonadmMonadm RealaShowSn ShowS*MGenericQTypeableaTypeablebMonoidm TraversabletFoldabletMonoidm*HDatadKDatadGDatadMonadm}pDynGraphgr2 1 0 /  ApplicativefF.  ApplicativefE- xOrdk6 Foldablet Foldablet wOrdk4 Monadm3 Monadm FoldabletMonadmFoldabletMonadmMonadmMonadmNOrdkM%( Traversablet"!~E F Strategy> ? StrategyGHL Traversablet_Functorf Applicativef OrdaOrdb>)MonadmK IStreamsMonadmMonadmL JStreamsShowaTestableprop  ArbitraryaEqbShowa4Ordk2abOrdk ArbitraryaEqaShowa`KeyFoldablet    Ordk HOrdk3Eqk2GKey Ordk ]QoFoldabletRp /9r TypeableaTypeablebOrdkwxKeyX )KeyeGenericQyGenericQGenericT; GenericQStringStringFoldabletFoldablet`b{/` k&H5 FilePathStringFilePathStringStringString StringStringOrda7OrdaOrdk6Ordk3NStrategy$StrategyStrategyIxbStrategy  MonadPlusmGenericQtMonadm8FoldabletMonadm6Monadm TraversabletTnMonadm7Monadm5Monadm MonadPlusmTypeableaTypeablebMonadmTypeableaTypeableb  MonadPlusmGenericM MonadPlusmGenericMzMonadmGenericMDMonadFixmFMonadm+Monadm[  ApplicativefFoldabletZ  Applicativef TraversabletCDatadGenericFoldabletpStreammStreamsNumaOrdaStringNumaOrdaStringGenericQ;:Ordk9 Ordk Key  "'dGenericQcMonadmGenericQbGenericQf-Ordk,Result, ;     UW _   AGJ2 ; M'J G Stringk ReportProblem ReportStart#HDataaReadS KeyyKeyOKey@KeycKey^Key4IKey KeyKey KeyKey9Key<Key Key Key.Key4Result cIOErrorfV W X HTMLagString1c b <LeapSecondTable:LeapSecondTableLeapSecondTable:usTP #String  dq@: < &(StringwxStringrStreammStreamsStringx MonadCGImm MonadmMonadm    DataaDataaPEqtStreammStreamsStreamtStringStrategy;StringZStringString ShowSStringnStringRealaReadSReadS StringN V String,String+Monadm( StorableaOrdkStringGraphMgrGraphMmContextGraphgrContextGraphMgrGraphMmContextGraphgrContextNodeGraphgrCFunGraphgrCFunGraphgrContextNodeGraphgrCFunNodeGraphgrCFunNodeGraphMgrGraphMmContextQGraphgrContextGraphMgrGraphMmContext;GraphgrCFunNode:GraphgrCFunNode<GraphgrCFunNodeBGraphgrContextNodeDDynGraphgrContextDynGraphgrLEdge  uStreamxResult HasHeadersx+ HasHeadersx StreamxResultStringBDataxTypeableyStreamxStreamxResult MonadWriterm MonadWriterwMonadmTestabletDAssertionPredicabletStringc AssertionPredicablet AssertionStringLiftt AssertionPredicabletAssertionPredicate  Assertablet AssertionQ RegexContextsource1 RegexContexttarget RegexMakersourceRMonadm RegexContextsource1 RegexContexttarget RegexMakersource RegexMakerregex RegexMakersourceMonadm RegexMakerregex RegexMakersourceGenericQT MonadStatem MonadStatesStreammStreamsStreamtOStreamsResponse_StringStreamsRequest_StringResultStreamsRequest_StringResultMonadmStreamsResult RegexContextregex RegexContextsource RegexContexttarget RegexLikeregex RegexLikesource& RegexLikeregex RegexLikesource Monadm RegexContextregex RegexContextsource RegexContexttarget RegexLikeregex RegexLikesource MatchText RegexLikeregex RegexLikesource MatchArray" RegexLikeregex RegexLikesource MatchArray# RegexLikeregex RegexLikesource MatchText2 RegexOptionsexecOpt RegexOptionsregexXTypeableaTypeableb MonadPlusmGenericQz ]^[Ordk _OrdkcOrdk OrdkOrdk,Ordk Ordk Ordk\Integrali]IntegraliY^IntegraliW!"#$%&HTMLhtmlStringde$P U i   HTMLTABLEht1 HTMLTABLEht2k  HTMLTABLEhtRandoma RandomGeng  RandomGengRandoma RandomGeng RandomGeng_ RandomGeng RegexOptionsexecOpt RegexOptionsregex+ Typeable exception( )  ExceptioneD ? Exceptione  MonadErrore MonadErrorm- .  Exceptione7Dataa RegexMakercompOpt RegexMakerexecOpt RegexMakerregex RegexMakersourceMonadm RegexMakercompOpt RegexMakerexecOpt RegexMakerregex RegexMakersource^!IntegralbStrategyIntegralaStrategy)KStrategyYTypeableaGenericQStrategyIntegralaShowSNumaReadSNumar ShowaShowS RealFloataShowSIntegralaShowSStorableaOrdkU Showa RegexLikea RegexLikebNFDataa %sTypeableaTypeablebZIntegralbNuma[ FractionalaIntegralbrShowaTestablebTB C D HTMLaHTMLbMonadm RegexLikea RegexLikeb1OrdaJ m5IntegralbRealFracaIntegralaNumb FractionalbReala RIntegralbReala]Enumah RealFloataRealaLkOrdaJLN*Numa?MonoidaxIntegralaP FractionalaKFloatingaWX BitsafCEEqaShowaK ArbitraryaOrdaShowanOrdaRSVW]jqsOrdaQUYoEqaDataa*EqaEnumaMIntegralaRealFracaRationalb d EqaShowa Assertion RealFloataZUIntegralbRealayIntegrala RealFloata\ NumaNFDataa Fractionala^_degist!"(01Floatinga+EnumaBitsa=t TypeableaxTestableahTestablea RealFloata3Integrala HasResolutiona    H d e f Bitsa BitsaEnumaLNodeKey Storablea RealFloataEnumaWDataa,Bitsa DLGenericQE t DEFHTMLaBHpcHashaC TypeableaDataaA Dataa RealFloata:NumaIntegralaBitsa *DoneeNFDataaStrategyStrategyrEqaFoldabletYMonadm^Functorfx ApplicativefStorableaStorablea~sEqaZOrda+Eqa|zEqawEqaStorableaEnumaJ9 : ; ADDATTRSah ShowaStringPrettyaStringPpraStringVDataaStringForest Eqa uDynGraphgOrdaNodeMapMLDynGraphgOrdaNodeMapMdOrda-\Orda Orda Orda [l 4RealaRationalRuStorableaEqaStorableacEqaStorableabShowaDocPpraDocStreammStreamsGMonadm<=rTypeableaTypeablebKuTestablea\ShowaStorablea SampleVar ArbitraryaTestableac'  RealFloataIntegralbRealFracaw RealFloata RealFloata?@> F {$ % q y -vxI )FN HostAddressStringQ}  RT ~ String String1Rational ; POSIXTime=StringPString String =   &= String"  BufferTypea! Request_String <Stringu ShowSx~Q     {Doci String798String,/-.String<=('Rational>Pico ParseTimetReadSString FormatTimetString StringString ParseTimetStringK ParseTimetString?  ParseTimetString   6 String, Typeable exception0 1 2 ! Exceptiones PathPrettyaStringa`(DocString` K ZPathC[FHe7Yz .=9FN3String2String./StringGStringG HsContext^ HsContext HsContext HsContext{E] qLineD\ pColumn Line Column56String^  SourceName  SourceNameMonadm? Exceptione$[ ) ' StringStringString Result* / String& String)  %  ]HostName&A @  ServiceNameB  ProtocolName;  ServiceName StringFormVar[ BufferTypety ResponseCode MatchLength MatchOffset WrapError0 WrapError String StringIStringJString MatchLength MatchOffsetString WrapError2String WrapError MatchLength MatchOffset WrapError1 WrapErroraCString WrapErrorhCString WrapErrorgCString MatchArray WrapErrorfCString RegOffset WrapError }String StringY pProtocolNumbero ProtocolNamei ProtocolName  HostAddress FlowInfo HostAddress6ScopeID ProtocolNameString~Storablea|StorableayzStorablea{}StorableaStorableaStorableaxStorablea  #~ ="ExpQ6;String01StringStringef71cd8`dOccNamekModNamePkgNameStringOccNameStringVModNameStringPrettyaStringX Indent %  POSIXTime NetworkAddr NetworkName NetworkNamegModNamePkgNameStringDoc i BxDocA) -H CDoc &?Quasim (vwDecQTypeQ~eString! )PatQClauseQDecQ"ConQVarStrictTypeQConQ StrictTypeQ' FieldPatQPatQ $ExpQ! VarStrictType StrictType&FieldPat#FieldExpDecQTypeQ, .ITypeQ PatQ FieldPatQPatQDPatQ5ExpQ E'C@ExpQF StrictTypeQVarStrictTypeQDocjString#Doc{zw \45;6String=StringCharPosPatQExpQ RealFloataNuma )*]^fB  RealFloataQHIs v { | } ~ ^_`abLMl4Doc {Jt ;? |< J w StringWs2668 /inDataaStrategy "StrategyStrategy ReadaReadS Storablea O N P cExtractsources ShowaShowS RealFloata XKey Key2Enuma*BitsaRTn MXDoc Precedencemp  n String02.0Doc Precedence*Yb   5  IndentStringJ GraphgrRealbNodeGraphgrRealbNodePathGraphgrNodePathGraphgrNode&PicoNodeShowS(<((CDS ' ( ) l m n o p q `!"#ijkOkjliDoc PrecedenceConIndex 5\  .+StringMonadmMonadmyGraphMgrGraphMmNodeGraphMgrGraphMmNode#GraphMgrGraphMmNodeGraphMgrGraphMmDecompNodeGraphMgrGraphMmGraphgrNodexGraphgrNode~ GraphgrNodeGraphgrNodeRTree GraphgrRealbLRTreeNodeGraphgrLRTreeNodeGraphgrNodeGraphgrEdgeNodeGraphgrDecompNodeGraphgrz.] ' _ MonadCGImStringMonadCGImMonadIOmStringNodePathRTree8RealbNodeVoronoiRealbNodeVoronoiRealbNodeVoronoiRealbNodePathVoronoiLRTreeNodeLRTreeNodePathLRTreeNode$UNode^  PrecH o TypeQbStorableasDocDocG 4StreammStreamsDoc Precedence.t aKey Key)Key Key Key7 ! StorableaStorablea   Arbitrarya"GraphMgrGraphMmNodeStringIOErrorIOErrorIOError"*.0=LIOErrorIOErrorStringFilePathIOError FilePathIOErrorString IOErrorStringIOErrorFilePathIOError  IOError#+/1>MTFilePathIOErrorStringFEGStringXString2'8:;q&Va')&U $           S d e f g m n o       ! " $ % & C D E S T U r x n o p fghijklmnopqrstuvwTUV^_`   T huvw}~TUVdef{|}89:3  HsContext HsAsst?+  HsContext  HsContext}rxg")+0nay* hilmcp?KM LkVuEO&A%'$J]bT{Z  URL HostAddress  HostAddress HostNameHostNameW HasHeadersa HasHeadersaStringString4 HasHeadersa HeaderSetterSStringw MonadCGImStringString&Showa!%ac; f#"$ HPrintfTyperStringString+b 'StringM#Request_StringDoc% & "{ HostAddress ProtocolNumber ProtocolNumber#   $ tV (FieldExpDoc* MonadCGImMonadIOmMonadCGImMonadIOmIOErrori  StringPHString String=Typeableajhfg>Typeablea Doc)Z UVz { OP W sQ StringAXJConIndexMConIndex|StringyStringStringStringY g\String 9 0I MonadCGIm7 : String6 5 8 Stringk StringString6DataaConIndexj StringStringStringResultTestableaString               WrapErrorString WrapError WrapError`CString WrapErrorP RequestIDStringHR ? Callbacki o ShowSJ     Q WM O Q \ 3E # +,,7! ,-;<CDE  Doc StreammStreams FormatTimetString zStringStringoStringDecQStringTypeQString@ oString NetworkAddrQProtocolNumberProtocolNumber ^ProtocolNumber y z String String[  CString  CStringLen  Nl HtG G^(9|  v 3?@IJ# 98tK= P > ? h x y ^_ 29NSMonadCGIm (oS RS;+O_String  {}@p ShowSReadS p^ TestableaNuma[\I{ StringHIGN6 } ShowaStringRequestNormalizerStringz ShowaStringDoc Monadm MonadPlusmTestableaStringQuasimStringShowSStringString89StringFilePath DocQ U X Z }l  HasResolutionaStringD E StringString caProtocolNumberStringU |` a DoneFoldabletMonoidm  Typeable7t Typeablea Typeable7t  Typeable6t~ Typeablea Typeable6t}  Typeable5t| Typeablea Typeable5t{  Typeable4tz Typeablea Typeable4ty  Typeable3tx Typeablea Typeable3tw  Typeable2tv Typeablea Typeable2tFoldabletMonadmMonadm Traversablet ApplicativefFoldablet Applicativef TraversabletOmFoldabletOrdac FoldabletNumau  Typeable1t Typeablea Typeable1tG FoldabletFoldabletFoldablet MonadPlusm6 FoldabletMonadm4 Monadm Traversablet AlternativefFoldablet8  ApplicativefFoldablet7  Applicativef TraversabletFoldabletMonadm8DataaMonadmDatadMonadm Typeable1tY MonadPlusmTypeableaTypeableb MonadErrore MonadErrormYv_ MonadmMonadm MonadTranstXu^ MonadmMonadmTypeableaTypeablebMonadmQuasim MonadPlusm%Monadm' Monadm MonadWriterm MonadWriterwf Monadm MonadmGraphMgrGraphMmNode1GraphMgrGraphMmContextNodeGraphMgrGraphMmGraphMgrGraphMmGraphMgrGraphMmNodeGraphMgrGraphMmNodeGraphMgrGraphMmLEdgeGraphMgrGraphMmLNodeGraphMgrGraphMmEdgeGraphMgrGraphMmNodeGraphMgrGraphMmGDecompi MonadWriterm MonadWriterwprDynGraphgrNumbOrdbNodeDynGraphgrNumbOrdbNodeDynGraphgrNumbOrdbNodekrGraphgrNodeqGraphgrNodeGraphgrLEdgeNodeGraphgrNodeGraphgrNodeGraphgrNodeGraphgrNode0GraphgrContextNodeGraphgr\GraphgrEqaEqbGraphgrDynGraphgrEqbNDynGraphgr,DynGraphgrDynGraphgrNumbOrdb%DynGraphgr+Graphgr *0GraphgrNodeDynGraphgrNodeDynGraphgrGraphgrNode.GraphgrNodeGraphgrRealbLRTreeGraphgrLEdgeGraphgrLNodeGraphgrEdgeGraphgrNodeGraphgrGDecompDynGraphgrNumbOrdbNodeJGraphgShowaShowbStringKGraphgShowaShowbStringVDynGraphgOrdaNodeMapMUDynGraphgOrdaNodeMapMGraphgOrdab Applicativefljhfa ApplicativefQ Applicativef` Applicativefm Alternativef  Alternativef AlternativefUghCategorycatwxCategorycatTypeableaTypeablebRTypeableaTypeableb Dataa Typeable2t Dataa Typeable1tT Typeable2t Typeable2t'S Typeable1t Typeable1t'-IxiMArrayaMArrayeMArraym8 IArrayaIArrayeIxiIxiMArrayaMArrayeMArraymIArraybIArrayeIxiMArrayaMArrayeMArraymIArrayaIArrayeIxiMArraybMArrayeMArraym)IxiMArrayaMArrayeMArraym IxiMArrayaMArrayeMArraym"IxiMArrayaMArrayeMArraymIArrayaIArrayeIxi IArrayaIArrayeIxiI IArrayaIArrayeIxi IArrayaIArrayeIxi. IArrayaIArrayeIxiiArrowa7  ArrowChoiceayArrowaS ArrowChoiceaPArrowaOArrowac ArrowPlusa  ArrowChoicea ArrowChoicea ArrowApplya! ArrowaArrowa  ArrowLoopaListAssertablet Assertion%j   HTMLTABLEht[NumiZIntegralaMonadmMonadmStorableam ShowaShowSStorableaPnOrda,d Numa`MonoidaFK F    GHIHTMLa) ( ' & D% C$ Eqa|q EqaMR Eqag OrdaEqav-Q pEqaTI BDynGraphgOrda+ wDynGraphgOrdaNodeMapMODynGraphgOrdaNodeMapMFOrda1Eqa<EPpraDoc AcceptableaStorableau CxtCxt Cxtj CCxtCxtDoc4V q  HostName ServiceNameCxtCxtCxtQTypeQConQCxtQ 4DynGraphgrNumbOrdbPath/:CRPath{GraphMgrGraphMmNodeGraphMgrGraphMmNodeGraphMgrGraphMmNodezGraphgrNode/GraphgrNode-GraphgrNodeGraphgrRealbNodeVoronoiDynGraphgrRealbNodeVoronoiPathString StringSGraphMgrGraphMmEdgeNodeRGraphgrEdgeNodeGraphMgrGraphMmNodeGraphMgrGraphMmNode.  jo5>;SQP  HasHeadersagMDocK [CallbackStringLeapSecondTableStringStringt ShowSStringStringStringCWStringStringCStringString CWStringLenString CStringLenStringBTestabletString] PrintfTyperString'HTMLhtmlString EqaShowa AssertionStringT StringTestableaStringStreamaFilePathReadaStringLIsStringaStringErroraStringString ( tString4String^StringStringStringString SourceName  BufferTypetyStringHStreambufTypeString String Stringa StringStringStringString StringHostNameStringqHostName StringHostNameString 8StringW FilePathAaString79StringQPkgNameStringPOccNameStringCModNameStringStringWDStringjString:3 StringmnString>w iStringStringOFilePathMixEntryStringHIStringUniqJStringColumnLine SourceNamekStringStringString BufferTypetyStringHStreambufTypeString}NodeString  FilePathFilePath?IOErrorString4String !&= :?i  c     9  p q r * + , - . / ; < = !"#pStringHABC{|}[\]fghuvwCDE012   String _`aStringURLURL$;Z[  QRSQRSpqrString@StringStringString6StringBStringbString_IOErrorString}StringString StringStringStringString /0wiFilePathStringString  AssertionStringString|}~$%ABNOFilePath StringKL StringMonadmStringQuasimString,MonadmStringMonadCGImMonadIOmStringMonadCGImStringMonadIOmStringMonadCGImStringMonadCGImStringMonadCGImReadaStringMonadCGImStringpMonadCGImStringString8Stringf456StringURLURL{StringPString0 `abString JKLStringStringSTFilePathP MonadCGImStringMonadCGImString  String StringStringEFGString StringStringStringzStringCharPosString Q R x y +,./0123FilePathStringS T Z[FilePathString4 StringStringNumaFilePathStringNumaFilePathStringFilePathString ProtocolName ServiceNamecB FilePathStringFilePathFilePathStringFilePathStringVResultString h j >sStringFilePathString FilePath=  ProtocolName ServiceName NetworkAddr NetworkName HostAddressHostNamek ProtocolNameProtocolNumberStringA String=>FilePathString01:;FilePathStringRealFracaReadSReadaReadSNumaReadSODataaReadSReadSReadSReadaReadS!StringStringHStreamtyFilePathResultStringTRequest_StringStringkString}String StringlExpQString6DocString!StreammStreamsStringEMonadmStringStreammStreamsjStreammStreamsString:String)ReadaStringLString String*+./0StringrStringString NumaStringNumaString NumaStringNumaString String/ NumaStringReadaStringStringM HostAddressString ProtocolName ServiceNameFilePath NetworkName0FilePath|HostName StringFilePath ProtocolNameProtocolNumberFilePathWXjFilePath |~]StringL FilePath  AssertionStringwStringdFilePathStringpFilePath9StringuFilePath String  StringCWStringStringCStringStringStringStringFilePathStringzResultString CWStringLenString CStringLenStringHStreamtyFilePathResultString4ResultStringString456789FilePathString23FilePath   "&3V XYa F ProtocolNumberString MonadPlusm 5 Monadm 3 MonadmoW %String] [StringStringRStringMonadCGImMonadIOmString9< String\]FilePath StringBResultStringAResultString5ResultStringString&StmtQ OperatorTableZForestString Orda  f 6CxtQTypeQWGuardQStmtQXExpQStmtQ ExpQStmtQrPatQExpQPatQ BodyQClauseQDecQPatQ hzExpQDecQStmtQDecQExpQ]TBodyQ_ (]gzJDoc StreammStreams OrdkRealbLRTreeNodePath Orda 8    DynGraphgrContext Ordkey OrdkeyOrdkeyGraphVertexOrdkeyGraphVertex> DynGraphgOrdaNodeMapM?DynGraphgOrdaNodeMapMDynGraphgrLEdgeDOrdk0Eqk;' HTMLaHTMLbNFDataaStrategyOrda= sDynGraphgOrdaNodeMapM nExpQDocDynGraphgrLNodeAGraphMgrGraphMmLEdgeLNode@GraphgrLEdgeLNodeLNode.9BKeynDynGraphgrEdgeGraphgrNodeGraphgrEdgeNumbOrdbNodeEdgeUEdge,w HsContextQ Showa MixEntryDom\SMonadIOmHeadersStringyMonadmHeadersStringStringw String"String3NumbOrdbNodeMonadmefcd   -Ixix  Forest[String #s] PStreams\ OStreamspStreamsResultStringResultStringResultString(SMonadmMonadmabWUVMonadm_`yE+  Orda~> L y ShowaStringOrda~Lv Orda=AYu48\5 I  r^ g 3^+IxiIxixqstString8Stringr ResponseCodeC!Monadm HStreamtyResultHStreamtympon7StringRequest_StringResult HeadersReadSA N )IZ ReadS  %'@ M  StringBIntegrala RealFloataRational FractionalaRationalRationalhRationalRationalm RationalRational RationalRational!14RationalDocRational\]MonadmMonadmZ[YQuasim% |TypeQf StrictTypeQTypeQ ~ExpQRangeQPatQPatQTypeQ$PatQ ExpQPatQStmtQExpQPatQBodyQDecQMatchQPatQ>BodyQDecQPatQW ExpQMatchQ)ExpQExpQTypeQExpQStmtQExpQRangeQExpQGuardQ ExpQRangeQExpQRangeQ % wExpQ u tuExpQExpQExpQBodyQExpQ CxtQDecQk DConQCxtQDecQConQCxtQDecQCxtQDecQTypeQyConQNStorableaDStorableaMStorableavvuOStorableaL StorableaEStorableaStorableatStorableaqv@ rStorableaA s. RawBufferCStorableaStorablebw+3K N O M P ,-jhCWStringStringQ CString!CStringdfCStringStringx{XDoc&Doc DocStringDoc< = O Y FGKLDoc 4 9 DocDocShowtStreammStreamsStreamt StreammStreams@MonadmStreammStreams SourceNameZ ~MMonadmStringMonadmString StreammStreams StreammStreams $&{|}~StreammStreamsStreammStreams[ FNMonadm_StreammStreamsStreammStreamsStreammStreamsStreammStreamsMStringStreams SourceNameIShowaStreams'Streams SourceName String> StreammStreamsRequestNormalizerStringtDynGraphgOrdaDynGraphgOrdaLNodeKOrdaLNodeJOrdaLNodevDynGraphgOrdaDynGraphgOrdaLNodeNOrdaLNodeMOrdaLNodeDynGraphgOrda>OrdaLEdgerDynGraphgOrdaDynGraphgOrda<OrdaLEdgepDynGraphgOrdaStringStringO @_  RealFloataShowS0R S T zString`HostName ServiceNameString@StringM String{ExpQ^_`abIOrdk  Ordk}x ShowaShowkString= K Xt[w}KuOrdkEqaOrdk Ordk<@37~ String!edb( c2 SampleVar SampleVar) SampleVar SampleVar  HKey {Keyv ShowaString; I KeyVrZvKeyzIsEqa :>15~] IxiMArrayaMArraye-IxiMArrayaMArraye  AdjNode}Typeable exceptionz`  ExceptioneABEF5 7 lIOErrorb {: QuasimMonadIOm~,WCD6 c  @./  ~'_ ] Exceptione^IOError`  Assertionl AssertionStringGraphgrRealbLRTreeOrda)OrdaOrdaOrdaOrdaOrda W(  H Stringa NHStreamty, HStreamtyResult+ HStreamtyResultHStreamtyResult HStreambufTypeResultHStreambufTypeResultHStreambufTypeHStreambufTypeResult HStreambufTyResult*StringNetworkNodeGenericQGenericDF:=StringString 3 8 Bp xy v K_o N ojwStringpvX SourceNameZ uv StringEG;<>?String klmnStreammStreamsShowaTestablebMonadmMonadmGraphMgrGraphMmGraphgrGraphMgrGraphMmFinalizerEnvPtrFinalizerEnvPtr FinalizerPtr FinalizerPtru*tIxi  P syOrda5OrdaOrdaOrdaOrdaOrda!OrdaOrdaOrdaOrdaOrdaOrdaOrda}(ResultResultv|{mAJ RealFloata RealFloataP RealFloata.1'$ zMonadmHeadersHeaders MonadIOm|a yCGIa `CGICGIbWa_`dStringYc^[\]XZString ResultResultResultResult S RequestIDVTStringRM7ShowaShowSShowaString/h  <GraphVertexGraphVertexGForestGraphVertexN GraphVertexF ForestGraph#ForestGraphnEdgeGraphFGraphTableX Graph4String3String)('&CContextContextNodelsContextHDynGraphgrContextrContextNodeContextLEdgeContextNodeContextLNodeDynGraphgOrdaNodeMapM=DynGraphgOrdaNodeMapMDocoDynGraphgrEqbLEdgeDynGraphgrLEdgeQ ResponseCodeStringGraphRep ResponseData%&CollectSplitIxiIxjMArrayaMArrayeMArraymXIArrayaIArrayeIxiIxjIxiMArrayaMArrayeMArraymIxiMArrayaMArrayeMArraymIxiMArrayaMArrayeMArraymIArrayaIArrayeIxi IArrayaIArrayeIxiIxiMArrayaMArrayeln# MOrdaRandoma RandomGengRandoma RandomGengHIxaVIxaIxaIxaqDynGraphgOrdaNodeMapMRandomaRandomaDocx StrictTypeDocDynGraphgrLNodeExtractsourcemDynGraphgrEdgejBoundsEdgeGraphStringi CWStringLenString" CStringLeneg CStringLenString23ParserStringExtractsourcea RegexOptionsexecOptZ RegexOptionscompOpteMonoidaFloatingaErroraBoundeda7- C HostAddress gh?@ 5 BU~abcdefghijklmnopqrstuvwxyz{|Labcd"EF |G 2 >LYdU( - . 8 k  " op)* ABCDEFGHIJKL0 X W O  EBmxul B\0 7 ij $%IJcd)*:;C2 RegOffsetYy PrecedenceKPrecT &Y+t/012  Em % 567tuv3"@k@Uh(  0 1 2 @ A B B C D 2<=>!"#6U~q   3  RK'` : VWv|}OV b4 47c   ()*+,-./0123456789:;<=>?@AFGHIJLMNOPQRWXYZ[\jklmnopqrst{ _`r - 3 e   [ efhi    [\ ]^[\e f XY$%ProtocolNumber{  6 3  # $ N CDST  #% MonadStatem MonadStates MonadReaderm MonadReaderr MonadPlusmeMonadCGImQuasim: MonadCGImMonadCGImiMonadCGImGraphMgrGraphMmh>? 9 MonadCGImStringMonadCGImStringMonadCGImString#MonadIOmStringMonadCGImStringMonadCGImMonadCGImStringMonadCGImMonadCGImMonadCGImMonadCGImGraphgr Alternativef<Categorycat"  ArrowZeroaArrowa ArrowApplya&-9NH y     NP5String]^ ZStringUEdgexReadarReadaStringNumaq1RString TypeQHPPatQShowS Vl TvDoc<@Monadm sShowtStreammStreamsStreamt-4MonadmHMonadm6;Monadm or}`|8StreammStreamsD$StreammStreams59Monadm; wOrda,String2 PReadaRandomaA'|(< POSIXTimes/1:e.~58*lkn%&.01 *3d F! M* o+,-67=?AStringHostNametzFilePatheString9:FilePathxStringy;=A TVX?StringLStringStringStorablea. SampleVarStorableaOrda:<G@ SUW>8StringStringKStringStringpYY TokenParser YqZ[Z LanguageDef ArbitraryaGraphMgrGraphMmNodeGraphMgrGraphMmNodeGraphgrGraphMgrGraphMmNodeGraphMgrGraphMmContext FinalizerPtrL Ordah BufferTypebufType  StringqgStringbrfjoBB HostAddress6AACDKKZZ}~--55::dd{{  ==UU]]bbgo  ""&&..07::==AAGGJJRRXX\\llooxx     " " $ $ ' ' H H M P R X ] ] _ _ c c nh j n o y y        $ 0 1 6 7 9 : L M ] ] g g m n q s |     ) ) = > V V q q w w     / / 6 6 ? A C C O O m m u u | |   & & - - : : H H L L \ \ n n q q | |  qP &&MO``ii  7799;;@AHIORTYijllrtww||((,,23==FFXX[[mmooqqww}}&'F  , , # $ 2 2       & ( < < J J z {   s s  ((XXccee~%(  55IInovv %))1   ( ( + + 1 1 b b 9 9 E F f f k l v z 1GGgg++CDFk*,66WX_almooqqww#&&()29>] ] } 4 4 8 8 e e t t   " " ) ) 5 5 N O  , , 5 6 V V ~ ~ ++0099}}00vv44??JKz{  (*55@LUUmmsszz||~~ **45:@CCRR``ffmmppuu}}  ::NNTUYYefiimmos  %&}**<=GHTT[^knrx  % ' / 2 > @ H H W W Z ^          % % ( ( . . ; ; @ A F F H J Q Q V V Z \     ' ( + 7 F F K K R R _ ` f f h h j k m m p s          * 3 4 8 8 ; M ~ ~ 3^     + + . 4 : : = = D D K K Q w  -177<<CCRRXX^^jm  $$55MU]_eehjlluuyy||  ==   468>FVVXX^_bbefiikknpruww  !$$&&((**--/14488::<<>>HHJKMOSX[^``ccffhilnp|I   !"&'*-/02<>?AACGJKPSUUWWZ[aaggilpprru 019:CCFHQRUVYY\_ddfhjmp{} ""$%(-0249==BFHJNNUUWWYY[[]]_acprrxn!#%*,.07:;=>@ACCHIKKPSUVXXZZ]`bcijmmpqxx{}      # ( , , 7 7 : : = = @ @ E J O T X X ] ] ` f i k o p s s u u w { }         # % ' ' + + / / 1 1 5 8 : : = = ? @ B E G H M M [ \ ^ b e o t u x { }            ! ! # $ & 7 ; < > > B B I M R R V W ` ` e f h h k k m o q q s s u y |           * 0 0 3 4 7 7 > > @ @ C F H M ^ a p p w w y y |            2 4 4 8 = ? C J J P Q W ^ a a c c e g j j l w z z | |        $*,1:>AADEGGVWY`bbefhippy     "#ݒ#&&*,/5;;BBEFJLORT^hwzz|    $))19;>  "#&&),/02477==DDKLOPSTXX`fiikluuxy&&((--00559:AIKTW]or{{  %%*-//45=@FFKLQShinorsx|~!"$&002268PPRSUVXgiikksszz}}w~~  z||@     * * , , 5 5 7 7 > ? E F I J O P T T f k t x        # $ ' ' . / 1 1 : ; @ F P P T T X Y ^ ` c h k l t u x { ~ ~           # % ) * 3 4 ; < > > B B G H J M P t v v z { e       # % ( ( * * / / 9 : = > @ @ F F L L O O X Y ] ] g h p p r r | |  ' ' * , 3 4 6 7 < = E F I I L O Q R V V ` a c f k t y $''-.67>?BBMR]^gjllqqyy{|~~7  )*4589;;?[]_iiruzz""11  "#%&)+--/3DDGGVYggjjmoqquwyy||!$$'(+16MOORSWWY[`dopuvzz<??ABGGJKPPZlooqrvvhyy~5;>EEPPTVXX[[^^bbfgj  $%*+..88AAHHLMOPTTV[`acdnnpqtwzz~~  $$)+-/45779=@AEGJLNNPPRRTTV]_cgjqxzz}}     1 1 5 7 9 9 ; = C H J J M N P T \ \ _ _ b d r u z            " $ $ ' ' / / 1 3 6 6 9 9 < A D E K N Q Q [ \ ^ ` c d i o q u x      $ & * / / 1 1 4 4 8 8 ; < @ y { { } }          ! " $ % ) , 5 8 > A M z ~ ~   ##%&)+׮\0099FGLMUX\]aagmssvw|}  $$&&11:lqqss{|~~ !4466;;??ACEGJKMSX[^arty %%()$$&144::FGKMOQghnnyy}!#%%==??AAIJVW__ggiioprr~~ ,2245::DHQQSSeeggjm{{$&*+55ݴ<QSSUVYY^^aaegjmvv    ..07:;==@AEGJJMMRRV^bcehklpprrttxx       / 5 8 < E F J J Q T Y {            . . ; ; B B H H Y Y ` ` f f }     " " $ $ ( ( 0 7 9 , 2 4 7 7 C C E F J K t t { { ~ ~        ! " & ( * * 7 7 ; ; @ @ F G L O Q Q V V b g } ~  ##&&88:>NP'@[]``eem  ##446699Z_nn<=CCEFMS`z~~+9!'-14488AAGGMTVWggiikkttww|~&((*189<JNOVWeehilnxy~~  <AACGLLUVZZ__nnrsvvyy~~!"$&M**024577::<<@@CCEEPQSSUUYYegiillo}      $%0056::>>QQSSVW[[^^bbddffhhrrvv}}!#%+-.8=@ADDLLPSUY[^bchhkqwxzzr         7 A A E F H H J J L T ` a d e i i p p           : > > N N Q Q S S V V \ \ _ _ b d g o w w 8 > ? B B R R V V X X [ [ ^ b g g l l q q t w { { } }        ' ( , , . 0 2 5 7 8 < < > > H M Q Q S Y _ a n n p r y y | |           % % 0 1 4 4 7 7 9 9 ? F H H J J L M O O Q Q X Z ] _ f f u u 1AACDKM`Tmss||~  "#))//11Fkq|   ',0356:;AACCEFJJLLRTXX[[]almst}  %&(*;>    ""$$,,//35BCFFMWmott"&&((,,..0066=>CCKKMOSSWW_`ffhiknyy  "$$&)/039BLUUYsvv}}$&/2::<<@@BBOWYY\^``fglmp{   ""&*,-0066;=AADDGGKLQRWW[[^^`addffhiosuu{{}~   '+-.1166@DGGIIOTWXZZ^^``ddjjpprsvvzz        ( ( , , 2 2 5 5 9 9 @ B H J P X ^ ^ ` a e e g g i i p q v v } ~         % ' ) 8 I J O     ! ! $ $ ' ( 2 2 4 7 ; < G H K M S S V V Z Z a a d e g g k k r r t w ,         % % ' ' . 1 4 4 8 8 : : < < @ @ R ] ` a o p }           ( ) . 2 4 4 7 7 ; ; > > D D F G O O Q Q S x   ""%%++-147?EQ`NORTVXZ[__ccefjlruwwyy~ ##3356H_cehjqqssx| gpqtt    ;>!''*+--78::<<DESSUWddfgii  <DDOOVVXXbcxxz|  #%&12FFVV]]xx}}  $%**//22559;RRw__aduuy  ##%&++07MNQQTTWX[\eekloo            # ' 0 0 @ Z g h n o }        $ $ ' ' ) ) 5 5 = = ? ? D D I I N N U U Z [ ^ a o o      " " ) * / / 1 1 9 : C C M M O O S Y [ [ i i         J J f f u u } ~  //4577:>JJMOQRcgjjllppssG 2245@AMRUUXY]^hjo| $$1134==RSaanqxx  $$**89;>  +,..35@BTTZ^eeggiikmsszz')+-0033??ABKKXXZZaaggiimnw|   **1266@@EEOV]]__agiimmooqquw  $$'(,,/8::==EFIJNNPPTUXX^^bbefkkmmppw  %&))++55<=@AGGILQQ_`eeooqqyz||? G I K T X X [ [ k k     % % ( ( . . 8 8 ; ; @ @ G H DQ Q S S U V [ \ g g l l n n u u y y { { ~ ~            $ $ & & ) ) 4 5 8 8 < = C C I M R R Y [ _ ` e e h j m m s s x x    % % ' ' 0 0 ; < F F ` a j j l l n n x y } }       i    % % 7 7 : : ? ? B B R R ` a } ~     $$'(459>@AEGMMQR__bbjkppx!$$'(..2378;;=?QUXY__eejjmnvv|~@   4479;;=>DDFFJKNNPRUUZ\iilmzz  $$&'11::<<Q1 1 i o w w   : > K K b b w w G G d d n n q r $ $ ` ` ,,LPRRU`bbssww""33==QRUUXYgj  ,,56<=MRVVmmooqqww    ""$%((+,//4577ADFFUVZZ^_e  !").44::>>CCEEKMQQUV``ffhinnu|!"$$&)+-0034?@EFLL\lvvyy=~~ +,0288<<??BBDHQQXY\\^^``fgllpprrttwwzz||   !.0048DJPPTT[[^^`addllrrww~~   b# ( + , 2 2 5 5 @ B G H K K P T X X ] ^ b c e e g g i k o p y { } ~     % ' ' * * , - 2 4 @ @ H H M M S T ^ ^ b d g g l l n n t u w |      ! ! ( ( * * 2 2 4 4 7 7 ; = H H J M O O R S Y [ ` ` d e i i m m o y       . . 0 0 4 4 6 6 8 8 < > @ A F G N N Q Q U U W W ] ] _ a q r u u x x |           , , 1 1 4 4 7 = K K U W \ a f f u w     ""%%*+002PRRVXZ\efkkrswxz  !!##'(003388<?CDGGKY[_afhjm    !!'599;;==DFILOUX\bgiimmoqttvw{#'')>PPWWaaxxz|,1277F  $$**1166>>QQSSVVbbgg  , , . . 1 1 : : ] ] b c j j o o y y | ~   5 8 ? ? B B I J M M ` ` c d f f v v   # $ & * 5 5 7 7 A B K K M M \ ] ` ` f g q q v w y y   ! ! ' ( 3 4 G G j j o o z |           , , 8 = @ @ I J N N Q Q ] ^ f f x x 1:=BBRR__fgppyy  *l"#*,HHWX[[hhmmooqqss$ww|  !$))29   ,-<<KK[[`alloq~~  ,,>>@APPSSUUddjj{{      ) , @ @ C F P T } ~       ' ' * * 8 8 R S a d t u x {        - / 7 7 ; < ? ? A B ~        * * @ @ D D T T Z ]    ) ) + + 8 = U W [ [  ""%%28<<@AEEffrswwyyGGcdqq{{   !&EFORYZ^^tt**    ##&'00EGTT\]iiss||  228:<=CDYY[]``knvv    $ $ ' ' 0 0 5 5 Q T f f    $ , , 3 3 6 6 = > Q Q S S \ \ n n | |     3 3 6 6 8 8 = = F F H I Y [ e e i i m m r r  6 6 [ [ e h u u x y } }   > > V V x x { |      66JM()11BBKY[_aehjptww{{ ==@[]^llxx!#}} Zggiikkmprrwx|| "$$&'))-05:<=ABDDIIKKPPV"$).36688::==OVXY[[]]_dfginq|~ ""$%'(0388:=??AAEFKNRRTUWY[^cfjmoqssuuxx{}"%(*+-CEGJLPPRRTTVY[]_hmmptvxzz}}                # ' * * , , . . 1 2 5 7 9 9 ; = @ @ #B K O T ] ] b e g j n o q s w { } }            # & ( ( 1 1 3 3 6 6 8 : = > D E H H L Z ^          ! # # & * - / 1 2 4 5 8 8 < < > ? B C F H Q t v x } }   &          # # & ( * , 1 1 5 7 9 : > G I M T T Z ] c c j 7 ; ; = = ? ? A C G G I J M R V V Z Z \ ^ ` ` c f i j o p r w { ~     "$&,01359>@ADMPPRRVWYbdgjmoquuxy|(,EJ`cd*?gjm~  #,,..11368:?[]^jwyz   &*;>  ))/055<<BBHITTVW_`mnssvvyy~~!"$&**..;>@COVXX[[ccj  ""$$'(//::==DFPPXYkkoqww}}5/  '(*/>>BBEFUUaaddhhpsyz      " " $ $ ' ' . . 1 2 @ A H H K K ^ ^ g g q s v v ~ ~    4 6 7 M M V V ^ _ f h j k | |       # $ - / 5 6 ? ? S S Y Y Z2\ a d d f g m m { {     ' ' . . N N Q Y e i k        " , , 0 1 3 3 D D H J L N Q Q \ ^ f f i j  "",266<<CDFFIILMSSUX__uu|} '(,,/05::DHIlnptww   :;??CCHIMN]_aaix !#'')*;>!!%%@@CGQVZZ\lx|~~ '(22::QQUUbbhmq}  $%'(005699==??MMPQWY[[^^ddffhhkkrrwwu: "$*1166UU^^``bbfipprrvv||   ( + , 5 5 7 7 > ? H H L T W W Z ] ` a e e g g i i p p | |       * + ? ? I J L L Y Y g h t {         $ $ ( ( 2 2 : > =K K T W e e m m r r        ! ! * * . 0 5 5 G G c d j j n t    # ' * * 0 0 4 4 : : M M U Y c c  ##/066==DDLMPPRRT`bceejmosxx||@I ./GGQRUUXYgjss~~   !#0355<=ABMRYZsszz   <=  !!//DDbboo"#%&**TT[]kmoo   ! ! * * I I O P T T n o   : : > > @ A P P c d         ' ' ) ) F F R S d d     < < c d j j l l n n $ + + -F?7 7 ? ? H H L L Q Q ] ^ $$''..<<>>CCFGMMiiss  --@AQRUUXYjj    ((77FF::,.36::@ADDFFKMTTWWZ^fgiikkqszz #$').02355<<?@DDOSZ[ggiilmorv .02;>Ohjqssuuwwyz~KK    !!&&+,./89;<?HLLOPRRTVYY\^cdggnqswzz||  "$&*+1147;;@AEGIJMPVV[\^`bcfhklqry}pN         ( * * , , . . 1 1 7 7 9 : @         ! # % & ) 3 6 7 9 9 = = ? ? B B E E K K M M O b g g j l n o q v |           # $ ( ( 4 5 : Q          ! # ' ' ) + 0 1 3 4 ; > K K N O Q d j                % ' * , , / / 3 3 9 9 ; ; = = ? C F G I I N O Q Q ] ^ c f i j n q {    $$'',,46=>FGLRUX\\^_ccllox{{T   &'+.4466:DQRUUX_jjllrtwwzz~~"#113477<>@Z`ahwzz|((**W<<F>*zl\J:,tbTD0 |hV@&r^H8~jVD,tfTB2$vd@pZ8~`F*t6J*V*~^:r2nR0bD$dD&`D" Z:rP2sQ- mL,z`-^B$`@& ~^DmG' s>,sU1q]:h.pR0ʾf<,d@(μdD׻ɻwYG ׺lT4nZ?+Ÿy_I ַ~Z<vJ&Ƶn@(ԴxV2ڳrF(вf: jL*X< ^Hܮz\ խiK-׬{_'ëqH(Ъ|T4 ȩn>¨lR6ҧ{gM3u]G3ԥtHޤ~^<ܣhN0բuW;!ݡa=Ϡ}Y;џw]E)ڞuO;' mU=#ۜwU5ǛmQ)ݚwK3ϙkQ9#{W0ɗ[9 ʖx\0֕g3ՔgA%ٓyUe'?ːY-ӏpV:֎jT8Սc3׌t\8ŋm5pT8f<̈bD& ·dP4ֆ^"܅ąv\<&ބȄlV8  ؃z^B(΂hF# Ձs_I5݀X< d@ ~~~x~X~,~~}}}}l}P}2} }||||D|{{{t{H{ {zz|zJzzyyyLy yxxxVx&xwww\w8wwvvvvvxv\v$vvuuu`u8uuttttdtBttssss|s`sDs&ssrrr|r`rJr6r"rrqqqqqyq_qCq!q qppppSp'poooo}o]oAo/oonnnnrnZn@nnnmmmYm=m+m mlllllilGl lkkk|kZk0kkjjhjFj.jiiiiizi^i:iihhhhhhhph`hHh(hhgggg~ghgNg4gggffffnfJf2fffeeeeleTe>>>U>%>====u=a=A=%==<<<i<M<'<<;;;};I;-; ;:::g:M:+::9999_9?998888Y8188777`7F7"7766y6S665555y5Q535 54444m4K4%4333333k3S3=3%3 3222222J2.221111l1P12110000l0P0200///|/`/4///....S.'.---s-Y-;-,,,,M,3,,++++c+?+**o*5**))){)[);) )((}([(A(%( (''''s'S''''&&&m&C&&%%%g%A%#%$$$$o$I$-$$###_#)#""""]"1""!!!!e!A!'!!   y Q 5  ]+e7 }Q%sIK!W?%uU1}iI)iQ9! wY7gC' mW=qG3Z> fH*V2jB* lL*    ~ d >      V (     x P     n D      l N .  b.NzV@ t\< ~`<$rT<r>"jR8lJ* hTk9zN$lN4hH$ b>&tZD"|VBzN*b>" `6 pFtP0|X@$|^H* ~bJ0|^D,nT>zd<$pV$ dF(|`J,R0}]EiO) Y1uY;k5V4jJrV<\J6y_E)]'kK)]9aK5 oS#k; U=uY?s8zV.Z6\ vR,`:t:xL(zX.jJ$xT8`B&tD*pLfL(jF^D.xX2 pP8 rZ<fF$dN2~hD*ؿz\' ۾iC%ӽc?üwe;%˻s]=aCݹǹpV6˸w_C'ٷ÷{eM5׶iI'ߵmU=˴e< ̳m<޲f>ұ^6hL(ƯdL6~jT<(ح|V.hF. ƫn8ʪnJU1ߨoC+ ŧkM)צcE- ǥk?ͤw]$ȣjH, Ƣd>f?#kCşsa4ܞfT0~fN.؜nF(ޛ~jXB*ܚƚr>$ęrX:ƘrX>"ڗnL* ܖnP0ޕƕx\@Ȕ}K1{WE+ ђwYG3Y7ӐmO3ǏsS;ˎaE#эqS;#݌Ōu]E- ŋmI1ˊyM5ω{[C%ӈxV.އkK-ņiC!Յ]3ׄY=ÃoS9Ղ{[?ρeGǀ`>vZ<~~~~h~L~~}}}}J}0}}||n|V|<|&||{{u{U{3{ {zz{zOzzyyymyIy#yxxxxxax/xxwwwhwLw0wwwvvvfvLv2v vvuuuuvuVu>>>e>C>%>>===y=_=A===<<<<i<E<)< <;;q;G;1;;:::::>::9999a9I9)998888y8_85887777c7E7+7 76666s6S6366555w5M5-55444W45443333k3?33222Y292221111Z121 100l0800///i/;//....c.?. .----e-;--,,,,_,3,,++++m+O+-++****u*K*5**))))i)?)!)((((b(B(*(('''''p'Z':''&&&&&v&\&<&&&%%%%j%F%,%%$$$$t$D$*$ $####t#F#0##"""""f"F"$""!!!!`!|V>`6jL. `2zV6{cO) |\@xT6~X@_5s[7 R4p\D.qS7yM7lH~R* z^B$z`B,pR2jJ,\:vN(tZ4 d8xP&vR,T \z:FzX6 ,f:oE%sQ' y_?weK3iM)^0P*a1s]?m[?qO/ kU7kAiG+ uW9![A{U;!uYA% oYA_A#qI)eE%}iUAo[?+yY5}YA!ɿ]'ݾwG[[;˻e;%˺a;׹eI)ѸO!ɷ[E+ɶmCɵo;ٴgI!ϳmM'gU1ױyGɰqW/u]5Ů\DoW;+ Ϭ{[9 ѫkG% êx<"ԩjBȨlD ڧzP4Φl>ʥjTkMݣw]A%âmM%ߡmM1ߠz\6؟ğj<ȞrP.ҝr^L<*~?=~?=E~?!~?D~=?2~=?C~:C~:B|||T|||7 ||e||G6 |>y|>5 ||Awxyz{|} zonedtimezone zonedTimeZone@zonedtimetoutczonedTimeToUTC?zonedtimetolocaltimezonedTimeToLocalTime> zonedtime< ZonedTime<=zlibYZlibDvzlibE zipwithm_ zipWithM_4 zipwithmzipWithM3 zipwith7zipWith72 zipwith6՞zipWith61 zipwith5zipWith50 zipwith4 zipWith4/ zipwith3)zipWith3F. zipwithHzipWithE, - :;uziplistvZipList* + zip7zip7) zip6zip6( zip5zip5' zip4͟zip4& zip3zip3D% zipzipC# $ 89t zigzagmode% ZigZagMode7 zerowidthtextH zeroWidthText6 zeroarrowj zeroArrow" yieldyield! yellowyellow 5xorxor xhtmlȠXHtmlBxhtmlCxdfwithxdfWith<xdfswithxdfsWith;xdffwith"xdffWith:writetix>writeTix4 writetchan\ writeTChans writestref| writeSTRef 3writesamplevarwriteSampleVar2writertšWriterTopqrwriterWriterAklmn writemode WriteMode writelist2chan8writeList2Chan1 writeioref\ writeIORef writehistory~ writeHistoryj writefile writeFileB  /0i writechanѢ writeChan. writeblock writeBlock  writearray writeArray-writable2writable wraptestNwrapTesthwrapperiwrapper, wrappedmonad WrappedMonad wrappedarrow WrappedArrow wrapmonadͣ WrapMonad wrapmatchall wrapMatchAllg wrapmatch wrapMatchf wraperror- WrapErrorbcde9 wrapcount[ wrapCounta wrapcompile{ wrapCompile` wraparrow WrapArrow wrapWrap@wordsɤwordsA +_ wordptrtoptr wordPtrToPtr wordptrWordPtr wordpriml- WordPrimL)] wordPrimL*^word8^Word8 word64uWord64 word32Word32 word16Word16 wordWord? withstorablearraywithStorableArray( withstatet withStateT[\ withstate* withStateYZ withsocketsdoP withSocketsDo@ ' withsockaddr} withSockAddr&withrwstwithRWSTWXwithrwswithRWSUV withreadertަ withReaderT% withreader withReader$ withprogname! withProgName withpoolAwithPool#withnewsockaddrdwithNewSockAddr"withmvarwithMVar!withmanywithMany withforeignptrŧwithForeignPtr withfilewithFile withcwstringlen withCWStringLen withcwstring1 withCWStringwithcstringlenWwithCStringLen withcstring| withCString withcontt withContTwithcontwithContwithcastringlenܨwithCAStringLen withcastring withCAStringwithbrowserstate+withBrowserState withbinaryfileUwithBinaryFile witharraylen0| withArrayLen0 witharraylen withArrayLen witharray0é withArray0 witharray withArraywithargswithArgs withwithwindows.Windows> windowbitsK WindowBitsQRSTwildpWildP OwildPPwidthwidth   widgetΪwidget   whitespace whiteSpaceNwhitewhite  whereindent5 whereIndent where_clauseX where_clauseMwhentwhen weekdateWeekDate= wednesday Wednesday weak«Weak< waitqsemn߫ waitQSemNwaitqsemwaitQSemw2cw2cvspace(vspace  vrightcurlyI VRightCurly voronoisetj voronoiSet8voronoiVoronoi7vor'vor'LvorvorKvoidĬvoidvlink٬vlink viewrViewR viewr viewlViewL viewl vi2ViverticesHvertices vertexbVertex versiontags versionTags versionbranch versionBranch versioníVersion; version vectorvector vcatvcatJvart'VarTHvarTIvarsymOVarSymvarstricttypeqoVarStrictTypeQG varstricttype VarStrictTypeE varStrictTypeFvarpήVarPCvarPDvarnameVarNameBvaridVarIdvariant'variant variableBvariable varifVarIAvare~VarE?varE@valuevalue valignȯvalign  validhtmltags validHtmlTags validhtmlitagsvalidHtmlITags validhtmlattrsBvalidHtmlAttrs validavalid valdzValD=valD>utilsUtils89:utilUtil7utctozonedtimeܰutcToZonedTime utctotaitime utcToTAITime<utctolocalzonedtime-utcToLocalZonedTimeutctolocaltimeofday_utcToLocalTimeOfDayutctolocaltimeutcToLocalTimeutctimetoposixsecondsutcTimeToPOSIXSeconds;utctimeUTCTime utctdaytime utctDayTimeutctday#utctDay utcdaylengthB utcDayLength:utc]utcut1tolocaltimezut1ToLocalTimeusingusingusgrUSGr6usernamecompletionfunctionزusernameCompletionFunction9 userinterrupt  UserInterrupt  usererrortype9 userErrorType usererrors\ userErrors usererror{ userError?usercookiefilteruserCookieFilter userijuserusemapڳusemap useascstringlenuseAsCStringLen  useascstring2 useAsCString  usageinfoW usageInfo urlencodevarsy urlEncodeVars urlencode urlEncode  urldecode urlDecode urlURL  uriuserinfo uriUserInfo uritostring) uriToString uritoauthoritystringTuriToAuthorityString urischeme} uriScheme uriregname uriRegName uriqueryuriQuery uriportյuriPort uripathuriPath urifragment  uriFragment uridefaultto0 uriDefaultTo uriauthtostringWuriAuthToString uriauthport} uriAuthPort uriauthority URIAuthority uriAuthority uriauthնURIAuth uriURI6 uppercaseletterUppercaseLetter upper5upper8updfmOupdFM5 updatewithkeym updateWithKey updatetix updateTix updatestate updateState7updateposstringݷupdatePosString6 updateposchar  updatePosChar5updateparserstate7updateParserStateupdateminwithkeydupdateMinWithKey updatemin updateMin updatemaxwithkeyupdateMaxWithKey updatemax߸ updateMax updatelookupwithkey updateLookupWithKey updateflow8 updateFlow4updateatVupdateAt updatepupdate updadjlist updAdjList3upathUPath4unzip7ʹunzip7 unzip6unzip6 unzip5unzip5 unzip4unzip4 unzip3*unzip3> unzipEunzip=  unwrapmonadq unwrapMonad unwraparrow unwrapArrow unwordsunwords< 3unusedregoffsetߺunusedRegOffset2 unusedoffset unusedOffset/012until/until;unstiflehistoryOunstifleHistory.unsafeuseascstringlenunsafeUseAsCStringLenunsafeuseascstringunsafeUseAsCStringunsafethawiouarrayunsafeThawIOUArray- unsafethaw  unsafeThaw unsafetake* unsafeTake unsafetailJ unsafeTail unsafesttoiol unsafeSTToIOunsafeperformiounsafePerformIO:unsafepackmalloccstringɼunsafePackMallocCStringunsafepackcstringlenunsafePackCStringLenunsafepackcstringfinalizer:unsafePackCStringFinalizerunsafepackcstringqunsafePackCStringunsafepackaddresslenunsafePackAddressLenunsafepackaddressӽunsafePackAddress unsafeiotost unsafeIOToST,unsafeinterleavest*unsafeInterleaveST+unsafeinterleaveio^unsafeInterleaveIO unsafeindex unsafeIndex unsafehead unsafeHead unsafefreezeʾ unsafeFreezeunsafeforeignptrtostorablearrayunsafeForeignPtrToStorableArrayunsafeforeignptrtoptrAunsafeForeignPtrToPtr unsafefinalizepunsafeFinalize unsafedrop unsafeDrop unsafecreate unsafeCreate unsafecoerceڿ unsafeCoerce unsafeUnsafe45)unsafe* unreserved0 unreserved unqualLUnQual unpackfamilyj unpackFamily unpackunpack ( unordlist unordList unodeUNode'unlinesunlines9 &unlessunless unlab)unlab% unknownerrorF unknownError unixsocketh UnixSocket8 universaltime UniversalTimeunit_tycon_nameunit_tycon_name unit_tycon unit_tycon unit_con_name unit_con_nameunit_conunit_conunit4unit1uniqueJUnique3 uniqdUniq$ unionwithkey unionWithKey unionwith unionWith unionswith unionsWith unionsunions unionby unionBy union%union ungtJunGTungq^unGQungmrunGM ungettchan unGetTChan# ungetchan unGetChan ungeneric' unGeneric'unfoldtreem_bfunfoldTreeM_BF unfoldtreem unfoldTreeM unfoldtree4 unfoldTree unfoldrnRunfoldrN unfoldrqunfoldr "unfoldforestm_bfunfoldForestM_BF unfoldforestm unfoldForestM unfoldforest unfoldForest unexpected unexpected!unexpect6UnExpect unescapestring\unEscapeString undir{undir underscore Underscore underline underline  underflow Underflow undefinedelementUndefinedElement  undefined1 undefined7uncurryMuncurry6 unconsjuncons uncgitunCGITunboxedUnboxed2unblockunblock ~ulistulist {|}ugrUGruglydeathtransfer)uglyDeathTransferzufoldmLufoldMufoldcufolduedgeyUEdgeudfs'udfs'0udfsudfs/udff'udff'.udffudff-udecompUDecompucyclemucycleMucycleucycleucontext2UContextuarrayLUArrayytyvaridTyVarIxtysyndTySynDvtySynDwtypesTypes01 typereptycon typeRepTyCon typerepkey typeRepKey typerepargs typeRepArgs typerep-TypeRep typeqETypeQu typeofdefaultg typeOfDefault typeof7typeOf7 typeof6defaulttypeOf6Default typeof6typeOf6 typeof5defaulttypeOf5Default~ typeof5 typeOf5} typeof4default,typeOf4Default| typeof4MtypeOf4{ typeof3defaultntypeOf3Defaultz typeof3typeOf3y typeof2defaulttypeOf2Defaultx typeof2typeOf2w typeof1defaulttypeOf1Defaultv typeof1typeOf1u typeof,typeOft typeable7G Typeable7s typeable6e Typeable6r typeable5 Typeable5q typeable4 Typeable4p typeable3 Typeable3o typeable2 Typeable2n typeable1 Typeable1m typeableTypeable/l type4Typek t tyconuqnameW tyconUQnamej tyconstringy tyConStringi tyconmodule tyconModuleh tyconiTyConIstyconTyCong twotwof twinsTwins.tvarTVar-tupp$TupPq tupPr tupletypenameS tupleTypeNamep tupletvTupleTn tupleTo  tupledataname tupleDataNamem tuple_tycon_nametuple_tycon_namel tuple_tycon tuple_tyconktuple_con_name"tuple_con_namej tuple_conE tuple_conituple_Tuple,tupetTupEgtupEhtuesdayTuesdaye ttttd def trytaketmvar tryTakeTMVar trytakemvar tryTakeMVarc tryputtmvar tryPutTMVar tryputmvar> tryPutMVarbtryjust[tryJustb c atrycgi|tryCGIa `trytry_ ` ]^_truncatetruncate5trivialtrivial^ triedtried\treehtml treeHtml] [ treecolors. treeColorsZtreeHTree*+\ trcctrc, traverse_{ traverse_[ traversetraverseZ traversable Traversable)Y transposeg transposeGX transpose transposeV W XY transitional, Transitional( transclosM TransClos'transgTrans& traceshow traceShowU traceTRACEWTrace%traceT trtrS TUV toweekdate toWeekDate toutctime toUTCTimeR toupper#toUpperQ touchstorablearrayHtouchStorableArrayStouchforeignptrutouchForeignPtrP totitletoTitleO torational toRational4topsort'topsort'+topsorttopSortN topsort* toplevelbox TopLevelBoxR toordinaldate< toOrdinalDatetomodifiedjuliandayhtoModifiedJulianDayQtolowertoLowerM tolisttoListG H I J K L )tokenstokensP tokenprimex tokenPrimExO tokenprim tokenPrimN tokenparser@ TokenParserLMtokenhToken#$JtokenKtojulianyearanddaytoJulianYearAndDaytojuliantoJulian tointeger toInteger3tohtmlfromlisttoHtmlFromListF GHItohtml4toHtmlE DEFtohpcposZtoHpcPosCtohashttoHashB togregorian toGregorianA toforeignptr toForeignPtr@ toexception toExceptionD ?toenumtoEnum2todyntoDynC todsec&todSec>todmin>todMin=todhourWtodHour<todmTODB toconstrtoConstrA toclocktime toClockTime@ tochunkstoChunks;tocalendartimetoCalendarTime? tobooltoBool: toasclist# toAscList; < = > to_hpj_docN to_HPJ_DoctmvariTMVar" tixmoduletixs tixModuleTixs9 tixmodulename tixModuleName8 tixmodulehash tixModuleHash7 tixmodule TixModule56tixTix!34titlecaseletter;TitlecaseLetter: title[title9 012timezonesummeronlytimeZoneSummerOnly/timezoneoffsetstringtimeZoneOffsetString. timezonename timeZoneName-timezoneminutestimeZoneMinutes,timezone2TimeZone*+timetotimeofdayYtimeToTimeOfDay) timetolive~ TimeToLive8 timeoutTimeout timeout7 timeofdaytotimetimeOfDayToTime(timeofdaytodayfractiontimeOfDayToDayFraction' timeofday& TimeOfDay%&timedifftostringOtimeDiffToString6 timediffsTimeDiff4 5 timeTimetimetildepTildeP#tildeP$tildeTilde"thursdayThursday3 throwtothrowTo0 1 2 !%throwsocketerrorifminus1retrymayblockV%throwSocketErrorIfMinus1RetryMayBlock throwsocketerrorifminus1retrythrowSocketErrorIfMinus1Retrythrowsocketerrorifminus1_throwSocketErrorIfMinus1_/ throwsocketerrorthrowSocketErrorthrowioBthrowIO- .  throwifnullh throwIfNull throwifneg_ throwIfNeg_ throwifneg throwIfNegthrowif_throwIf_throwifthrowIf throwerror throwErrorthrowerrnopathifnull+throwErrnoPathIfNullthrowerrnopathifminus1_bthrowErrnoPathIfMinus1_throwerrnopathifminus1throwErrnoPathIfMinus1throwerrnopathif_throwErrnoPathIf_throwerrnopathifthrowErrnoPathIfthrowerrnopath%throwErrnoPaththrowerrnoifretrymayblock_YthrowErrnoIfRetryMayBlock_throwerrnoifretrymayblockthrowErrnoIfRetryMayBlockthrowerrnoifretry_throwErrnoIfRetry_throwerrnoifretrythrowErrnoIfRetry throwerrnoifnullretrymayblock8throwErrnoIfNullRetryMayBlock throwerrnoifnullretryvthrowErrnoIfNullRetry throwerrnoifnullthrowErrnoIfNull  throwerrnoifminus1retrymayblock_ throwErrnoIfMinus1RetryMayBlock_ throwerrnoifminus1retrymayblock.throwErrnoIfMinus1RetryMayBlockthrowerrnoifminus1retry_qthrowErrnoIfMinus1Retry_throwerrnoifminus1retrythrowErrnoIfMinus1Retrythrowerrnoifminus1_throwErrnoIfMinus1_throwerrnoifminus1throwErrnoIfMinus1 throwerrnoif_> throwErrnoIf_ throwerrnoifc throwErrnoIf throwerrno throwErrno throwdynto throwDynTo, throwdynthrowDyn+ throwcgithrowCGI* throwthrow( ) threethree' threadwaitwrite:threadWaitWrite& threadwaitreadcthreadWaitRead% threadsafe Threadsafe threadsafe threadmaybe' threadMaybe'( threadmaybe threadMaybe' threadlist' threadList'& threadlist' threadList% threadkilledI ThreadKilled# $ threadidqThreadId" threaddelay threadDelay! threadThread$thetypethetype thetitlethetitle thestylethestyle thespan@thespan themenufthemenuthemapthemap thelinkthelink thehtmlthehtml thefortheforthedivthediv thecode4thecode theclass[theclass thebasethebase theadtheadthawthawthTHth tfoottfoot textfield textfield  textdetailsJ TextDetailstextareaitextarea textTexttext  testresult TestResult testoptions TestOptionstestokTestOktestlistTestList testlabel: TestLabel testfailedY TestFailed testexausted{ TestExausted testcasepaths testCasePaths testcasecount testCaseCounttestcaseTestCasetestbittestBit testaborted  TestAbortedtestable?Testable test[TesttestterminalappearanceterminalAppearanceterminalTerminaltemplate-haskelltemplate-haskelltelltelltealteal tdyeartdYear tdsec6tdSec tdpicosecP tdPicosec tdmonthltdMonth tdmintdMin tdhourtdHour tddaytdDay tdtd tcpTCPtchanTChan tcclsname TcClsNametbody.tbodytarrayMTArraytargetitarget tanhtanh1tantan0 takewhile takeWhile/   taketmvar takeTMVartakemvartakeMVar takeinput takeInput takefilename; takeFileNametakeextensionsetakeExtensions takeextension takeExtension takedrive takeDrive takedirectory takeDirectory takebasename takeBaseNametake%take.    taitoutctimeY taiToUTCTimetailsvtails tailtail- taiepochtaiEpochtaiTAItagtag tableTable table tab?tabsysunexpecterrorbsysUnExpectError sysunexpect SysUnExpect synthesize synthesizesyntaxSyntaxsymbolSymbol symbolsybsyb swaptmvar' swapTMVarswapmvarDswapMVar surrogatea Surrogate supysup sundaystartweeksundayStartWeek sundayafter sundayAftersundaySunday sumSum sum, sucm#sucM#sucgt8sucGT"succfmOsuccFM!succesucc+suc'ysuc'sucsucsubtractsubtract* subsequences subsequences subregexsubRegex submitsubmit  subforest$ subForest sub<sub style\Stylez{style |}~ stuffchar stuffCharstuarraySTUArrayysttoiostToIOxstronglyconncomprstronglyConnCompR stronglyconncomp stronglyConnComp strongBstrong uvwstrmsgfstrMsg stripprefix stripPrefix stringtok StringToktstringtohtmlstringstringToHtmlString s stringtohtml stringToHtml pqr stringrep% StringRep stringliteralG stringLiteralostringlkStringLmstringLnstringestringEl stringconstr StringConstr stringbufferopstringBufferOp stringString   ) istringjkstrikeKstrikeh stricttypeqh StrictTypeQg stricttype StrictType strictTypefstricttolazyststrictToLazySTstrictbufferopstrictBufferOp strict Strict  estref@STRef d streamsockete StreamSocketstreampermparserStreamPermParserc streamhooks StreamHooks streamdebuggerStreamDebugger streamStream strattr&strAttr `abstrategyMStrategy_ strategiesk StrategiesstrStr^ storablearray StorableArray]storableStorable stmtqStmtQ\stmtStmt[stmSTMstm stiflehistory; stifleHistorystepXstepZstdoutnstdout stdinstdin stdgenStdGen stderrstderr stdcallStdCallXstdCallY stateuser stateUserWstatetStateTstateposCstatePosV stateinpute stateInputUstateState QRST starttoken startTokenPstartstart OstarmstarMstarstarstamp&stamp stackoverflowD StackOverflow N stableptrn StablePtr stablename StableNameMstSTLsseqsSeqKsrclocSrcLocIJsrclinesrcLineH srcfilename srcFilenameG srccolumn< srcColumnFsrcTsrc CDEsquaresvsquaresBsqrtsqrt(sptreespTree  splitwith splitWith @A splittyconapp splitTyConApp ?splitsearchpathsplitSearchPath=>splitrequesturiJsplitRequestURI< splitregexo splitRegex splitpath splitPath:; splitparm splitParMsplitparsplitPar splitminfm splitMinFMsplitmin splitMin splitmember( splitMember splitmISplitM splitlookupf splitLookup splitfmsplitFM splitfilename splitFileName89splitextensionssplitExtensions67splitextensionsplitExtension45 splitdrive) splitDrive23splitdirectoriesSsplitDirectories01splitatzsplitAt' ./splitSplitsplit ,-splengthspLengthspecial Special+sparking(sparking*spar@sPar)spanendWspanEnd (spanrspan& &'spacingcombiningmarkSpacingCombiningMark spacingspacing%spacesspaces$ spacehtml  spaceHtml !"#space/Space space spYSPsp sourceposx SourcePos  sourcename SourceName  sourceName  sourceline sourceLine  sourcecolumn sourceColumn sortbyCsortBy sortYsort  somewherez somewhere something something someexception SomeException somesome somaxconn sOMAXCONN sol_socket sOL_SOCKET soerror8SoError sockettypeU SocketType sockettohandleysocketToHandle socketstatus SocketStatus socketport socketPort% socketpair socketPair socketoption SocketOption socketconnection/socketConnection socketQSocket$ socket sockaddrunix SockAddrUnix  sockaddrinet6 SockAddrInet6  sockaddrinet SockAddrInet sockaddrSockAddr snocsnoc  snd4snd# smallchunksizeUsmallChunkSizesmalltsmall   skipspaces skipSpaces skipmany1 skipMany1skipmanyskipManysizeofsockaddrbyfamilysizeOfSockAddrByFamilysizeofsockaddrAsizeOfSockAddrsizeofasizeOf sizefmysizeFMsizedsized sizesize  siswritable sIsWritable sisreadable sIsReadable sislistening! sIsListening sisconnectedE sIsConnected sisboundesIsBound sinh}sinh" singleton singleton singlesinglesinsin! simpletable simpleTable  simplematch& simpleMatchsimplehttp_debugMsimpleHTTP_debug simplehttp_t simpleHTTP_  simplehttp simpleHTTP silversilver sigpSigPsigPsignumsignum  significand  significand signalqsemnB signalQSemN signalqsemc signalQSemsige}SigEsigEsigdSigDsigD shutdownsend ShutdownSend shutdownreceiveShutdownReceive shutdowncmd ShutdownCmd shutdownbothA ShutdownBoth shutdownashutdown showweekdate showWeekDate showversion showVersion~ showtreewith showTreeWithz { | } showtreeshowTreev w x y showtextl showtextl showtable: showTable showstyperep[ showsTypeRepu showstring} showStringt showstable showsTable showsprec showsPrecs showsigned showSignedshowsShowSq showsr showpath* showPath showparenG  showParenp showordinaldateo showOrdinalDateshowoct showOct showname'  showName'showname showName showlitchar  showLitCharo showlistwith  showListWithn showlist, showListm showjulianyearanddayX showJulianYearAndDay showjulian  showJulian showintatbase  showIntAtBaseshowint showIntshowhtmlfragment showHtmlFragmentshowhtml showHtmlshowhex7 showHex showgregorianW  showGregorian showgfloatz  showGFloat showfloat  showFloat showfixed  showFixedl showffloat  showFFloatshowerrormessages showErrorMessages showefloat(  showEFloat showcountsH  showCounts showcookieh  showCookieshowcontenttype showContentTypek showconstr  showConstrj showchar showChari show Show g showh shiftr shiftRf shiftl0 shiftLe shiftG shiftd shape] shapec sgr} SGrsforce sforcesetuncaughtexceptionhandler setUncaughtExceptionHandlerb setstreamhooks setStreamHooksa setstdgen setStdGen` setstatus9 setStatus_ setstateVsetStatesetstartuphook|setStartupHooksetspecialprefixessetSpecialPrefixes setsourcename setSourceName^  setsourceline setSourceLine] setsourcecolumn9setSourceColumn\ setsocketoptionosetSocketOption[ setserviceentrysetServiceEntryZ setresponseversionsetResponseVersionsetrequestversionsetRequestVersionsetredisplayfunction&setRedisplayFunctionsetreadlinenameUsetReadlineNamesetproxyxsetProxyY setprotocolentrysetProtocolEntryX setprompt setPrompt setposition setPositionsetpointsetPointsetpermissions&setPermissionsW setparserstateNsetParserState setouthandlery setOutHandlerV setnetworkentrysetNetworkEntryU setmaxredirectssetMaxRedirectsT setmaxerrorretriessetMaxErrorRetriesS setmaxauthattempts(setMaxAuthAttemptsR setinputNsetInputsetinhibitcompletionzsetInhibitCompletion sethostentry setHostEntryQ setheaders setHeaders setheader setHeaderP setexecopts setExecOptsseteventhandler-setEventHandlerO seterrorposS setErrorPosseterrormessage}setErrorMessage seterrhandler setErrHandlerN setendsetEnd seteditor setEditor setdebuglog setDebugLogM setcurrentdirectory-setCurrentDirectoryL setcookiesV setCookiesK setcookiefilter{setCookieFilterJ setcookie setCookieI setcompletionqueryitemssetCompletionQueryItemssetcompletionentryfunctionsetCompletionEntryFunctionsetcompletionappendcharacterJsetCompletionAppendCharactersetcompleterwordbreakcharacterssetCompleterWordBreakCharacterssetcompleterquotecharacterssetCompleterQuoteCharacterssetbolsetBOLsetbitsetBitH setbasicwordbreakcharactersIsetBasicWordBreakCharacterssetauthoritygensetAuthorityGenG setauthoritiessetAuthoritiesF setattemptedcompletionoversetAttemptedCompletionOversetattemptedcompletionfunction setAttemptedCompletionFunctionsetallowredirects[setAllowRedirectsE setallowbasicauthsetAllowBasicAuthD setSetC serviceprotocolserviceProtocolB serviceport servicePortA servicename ServiceName> ? serviceName@ serviceentryK ServiceEntry< = servicealiasesuserviceAliases; serviceService  serverport serverPort: servername serverName9 sequenceq sequenceQ sequencea_ sequenceA_8 sequencea0 sequenceA7 sequence_N sequence_ 5 6 sequencesSequencesequence 3 4 seqtriple seqTripleseqpairseqPair seqpacket SeqPacket2 seqlistnth seqListNthseqlistnseqListNseqlist:seqListseqarrSseqArrseqhSeq1 seq  september September0 sependby1 sepEndBy1~sependbysepEndBy}sepby1sepBy1|sepbysepBy{sep!sepzsendto:sendTo/ sendtimeout[ SendTimeOut. sendlowwater~ SendLowWater- sendhttp_notifysendHTTP_notify, sendhttpsendHTTP+ sendfdsendFd* sendbufto  sendBufTo) sendbuffer, SendBuffer( sendancillaryO sendAncillary' sendlsend& semisep1semiSep1ysemisepsemiSepx semicolon SemiColonsemisemivwselectedselected% select&select$ seekmodeLSeekMode# seekfromendk SeekFromEnd" sectionrsectionRusectionlsectionLtsecondstodifftimesecondsToDiffTimesecondsecond! searchpathseparatorsearchPathSeparator searchableH searchable scrollingg scrolling  scriptname scriptName scriptscriptscopeidScopeID  scm_rights sCM_RIGHTS sclosesClose schemes%Schemesscheme>scheme sccSSCC scc scanr1uscanr1  scanrscanr  scanl1scanl1  scanlscanl  s scalefloat  scaleFloatsaturday+ Saturday satisfyF satisfyr samplevarj  SampleVarsample sample safety Safetyqsafe Safeosafeprwst RWSTklmnrws !RWSghijrwhnf0!rwhnf runwritertK! runWriterTef runwritern! runWritercd runtimeerror! runtimeError runtesttt! runTestTT runtesttext! runTestTextruntests!runTests runstuarray" runSTUArray runstatet2" runStateTabrunstateS"runState_` runstarrayu" runSTArrayrunst"runST^runrwst"runRWST\]runrws"runRWSZ[ runreadert" runReaderT runreader# runReaderrunq!#runQYrunpt:#runPTrunparserwithmode\#runParserWithMode runparsert# runParserT runparser# runParserX runparsect# runParsecTrunp#runPrunlistt#runListT runkleisli$ runKleisli runio4$runIOWruninunboundthread[$runInUnboundThread runinboundthread$runInBoundThread runidentity$ runIdentity~rungt$runGT runerrort$ runErrorT}runcontt%runContT|runcont%runCont{runcgit8%runCGITz runcgienvfpsW% runCGIEnvFPSyruncgiu%runCGI run_%run_Vrun%runxUrules%rules uvwrtssupportsboundthreads%rtsSupportsBoundThreads rtree&RTree rspreason,& rspReasont rspheadersK& rspHeaderssrspcodeh&rspCoderrspbody&rspBodyqrquri&rqURIprqmethod&rqMethodo rqheaders& rqHeadersnrqbody&rqBodymrparen'rparenlTrowspan 'rowspan ijkrowsC'rows fghroundd'roundrotater|'rotateR rotatel'rotateL rotate'rotate rootpath'RootPath rootlabel' rootLabel rnf'rnfe rightsquare( RightSquaredrights5(rights rightparenQ( RightParenc rightcurlyq( RightCurlyb rightarrow( RightArrowaright(Rightright ribbonsperline(ribbonsPerLine`reverse(reverse^_Srev))rev[\]reuseconnectionS)ReuseConnection reuseaddrw) ReuseAddrreturnq)returnQR returninorder) ReturnInOrderZ returncode) ReturnCodeMNOPQreturna*returnAreturn *returnYretry?*RetryXretrieveheaders_*retrieveHeadersW retesubreg* retEsubregL retespace* retEspaceK reterange* retErangeJ reteparen* retEparenI reteescape* retEescapeH retectype+ retEctypeG retecollate=+ retEcollateF retebrack]+ retEbrackE retebrace{+ retEbraceD retbadrpt+ retBadrptC retbadpat+ retBadpatBretbadbr+retBadbrAresult+Resultresponseparseerror,responseParseErrorVresponsenextstepH,ResponseNextStepUresponsefinishr,ResponseFinish responseend, ResponseEnd responsedata, ResponseDataT responsecode, ResponseCodeSresponse_string-Response_StringRresponse(-ResponsePQ respondhttpK- respondHTTPNO resolutiont- resolutionresize-resize resetterminal- resetTerminal@ reseterrno- resetErrnoMreset-resetHIJKLreservedopnames!.reservedOpNamesG>? reservedopN. reservedOpF= reservednamesu. reservedNamesE;<reserved.reservedD: requriauth. reqURIAuthC requireorder. RequireOrderB requesturi/ requestURI requestsent)/ RequestSentrequestnormalizerQ/RequestNormalizerA requestmethod{/ RequestMethod@ requestMethod requestid/ RequestID requestheader/ requestHeader requestdata/ RequestData?requestcontenttype0requestContentTyperequestcontentlengthQ0requestContentLengthrequestacceptlanguage0requestAcceptLanguagerequestacceptencoding0requestAcceptEncodingrequestacceptcharset0requestAcceptCharset requestaccept1 requestAcceptrequest_stringE1Request_String>requestf1Request<=requestreqarg1ReqArg; reportstart1 ReportStart: reportproblem1 ReportProblem9report1report89reply 2Reply7 replicatem_'2 replicateM_ replicatemH2 replicateM replicateg2 replicate568 replaceheader2 replaceHeader4replacefilename2replaceFileName23replaceextension2replaceExtension01replacedirectory$3replaceDirectory./replacediffarrayT3replaceDiffArray-replacebasename3replaceBaseName+,replace3replace*repeat3repeat)7 repconstr3 repConstr rendertag4 renderTag rendertable#4 renderTable renderstyleE4 renderStyle(renderhtmlwithlanguager4renderHtmlWithLanguage'renderhtmlfragment4renderHtmlFragment$%& renderhtml'4 renderHtml' renderhtml4 renderHtml!"#render 5render  renamefile<5 renameFilerenamedirectorya5renameDirectoryrename5rename6 removefile5 removeFileremovedirectoryrecursive5removeDirectoryRecursiveremovedirectory5removeDirectory removedel#6 removeDel remoteuserB6 remoteUser remotehostb6 remoteHost remoteaddr6 remoteAddrrem6rem relativeto6 relativeTo relativeseek6 RelativeSeek relativefrom6 relativeFromrel7relreify57reify5 regoffsetS7 RegOffset4 regexlikeq7 RegexLike3regexec7regexec012 regexcontext7 RegexContext/ regex-posix7 regex-posix regex-compat8 regex-compat regex-base$8 regex-baseregex?8Regex+,-. reflectk8Reflect redisplay8 redisplay*redirect8redirectred8red recvtimeout8 RecvTimeOut recvlowwater8 RecvLowWaterrecvlen9recvLenrecvfrom69recvFromrecvfdT9recvFd recvbuffromq9 recvBufFrom recvbuffer9 RecvBuffer recvancillary9 recvAncillaryrecv9recv recupderror9 RecUpdErrorrecupde:RecUpdE(recUpdE) recselerrorN: RecSelError recSelErrorrecp:RecP&recP'recoverq:recoverQ recovermp: recoverMprecover:recover%recmgt' ;recMGT' recmgt$;recMGT recip;;recip receivehttpW; receiveHTTP  recconerror; RecConError   recConError reccone;RecConE#recConE $recc;RecC!recC" realtofrac< realToFracrealpart6<realPart reallocbytesV< reallocBytes reallocarray0{< reallocArray0 reallocarray< reallocArrayrealloc<reallocrealfrac<RealFrac realfloat< RealFloatreal=Real readwritemode-= ReadWriteMode readtmvarO= readTMVar readtixk=readTixreadtime=readTimereadtillempty2=readTillEmpty2readtillempty1=readTillEmpty1 readtchan= readTChan readstref> readSTRef readstime3> readsTime readsprecQ> readsPrec readsignedt> readSigned readsamplevar> readSampleVar reads_to_prec> readS_to_Prec reads_to_p> readS_to_Preads>ReadSreads readprec_to_s0? readPrec_to_S readprec_to_pV? readPrec_to_Preadprecw?ReadPrecreadPrec readparen? readParen readp_to_s? readP_to_S readp_to_prec? readP_to_Precreadp @ReadPreadoctp'@readOctPreadoctB@readOctreadmvar]@readMVarreadmodey@ReadModereadmix@readMixreadln@readLn readlitchar@ readLitCharreadlistprecdefault@readListPrecDefault readlistprec#A readListPrecreadlistdefaultJAreadListDefaultreadlistmAreadListreadlineAReadlinereadLinereadlinereadkeyAreadKey readiorefA readIORefreadioAreadIOreadintpBreadIntP readintegerMputMVarputcharXMputCharzputrMPUTputpushcurrentcontextMpushCurrentContext pushcontextlM pushContextLpurpleMpurpleypureMpurex punctuateN punctuatepunc4NPuncw ptrtowordptrTN ptrToWordPtrv ptrtointptrwN ptrToIntPtruptrNPtrtptextNptextpstrNPStrpseqNpseqspsNPSproxyNProxyqr protonumberO protoNumberp protoname;O protoNameoprotocolnumber^OProtocolNumbermn protocolnameO ProtocolNamel protocolentryO ProtocolEntryjkprotocolOProtocol protoaliasesO protoAliasesipropertyPPropertygpropertyhproperfractionBPproperFractionpromotecPpromotefproguri}PprogURIeproductPProductabproductcd processidP ProcessIDprocessgroupidPProcessGroupID privateuseQ PrivateUse` printftype3Q PrintfType_ printfargRQ PrintfArg^printfmQPrintfprintf]printQprint\ primtyconiQ PrimTyConI primhtmlcharQ primHtmlChar[primhtmlRprimHtmlZprime&RprimeYprim;RPrimprettyprintwithmodebRprettyPrintWithModeprettyprintstylemodeRprettyPrintStyleMode prettyprintR PrettyPrint prettyPrintprettyhtmlfragmentRprettyHtmlFragment prettyhtml'+S prettyHtml'X prettyhtmlLS prettyHtmlWprettytSPrettypretty preorderfS preorderFpreorderSpreorder prelude_modS prelude_modpreludeSPreludeprefixTPrefixVpredfm2TpredFMpredHTpred precedencebT Precedenceprec|TPrecprecpre'Tpre'preTpreU ppsemicolonT PPSemiColonpprvarstricttypeTpprVarStrictTypepprtyapp"UpprTyApp pprstricttypeCU pprStrictTypepprpatbUpprPat pprparendtypeU pprParendTypepprname'UpprName'pprnameUpprName pprmaybeexpU pprMaybeExppprmUPprMpprlitVpprLitpprlib0VPprLibpprintHVpprint pprinfixexpiV pprInfixExp pprfunargtypeV pprFunArgType pprfixityV pprFixity pprfieldsV pprFieldspprexpVpprExppprcxtWpprCxtpprbodyWpprBodyppr_sig7Wppr_sigppr_listRWppr_listpprmWPprppr ppoffsideruleW PPOffsideRule ppnolayoutW PPNoLayoutpplayoutWPPLayoutppinlineWPPInLinepphsmodeXPPHsMode postrequest:X postRequestT postorderf[X postorderF postorderzX postorderpostfixXPostfixpostXPOST posixtimeX POSIXTimeposixsecondstoutctimeXposixSecondsToUTCTimeposixdaylengthYposixDayLengthposix>YPOSIXPosixposaYPosportrait|YPortrait portnumberY PortNumberRSportnumYPortNumQportidYPortIDportYport popcontextlZ popContextL popcontext6Z popContextpooledreallocbytes^ZpooledReallocBytespooledreallocarray0ZpooledReallocArray0pooledreallocarrayZpooledReallocArray pooledreallocZ pooledReallocpoolednewarray0[pooledNewArray0~poolednewarray<[pooledNewArray} poolednew_[ pooledNew|pooledmallocbytes[pooledMallocBytes{pooledmallocarray0[pooledMallocArray0zpooledmallocarray[pooledMallocArrayy pooledmalloc \ pooledMallocxpool(\Poolw polymatchmF\ polymatchM polymatche\ polymatchpoly~\Polypolar\polarP pokesockaddr\ pokeSockAddrv pokeelemoff\ pokeElemOffO pokebyteoff\ pokeByteOffN pokearray0] pokeArray0u pokearray9] pokeArraytpokeR]pokeMplusptri]plusPtrL pkgstring] pkgStringpkgname]PkgNamepicosecondstodifftime]picosecondsToDiffTimespico]PicoKpi^piphase^phaseJpfail)^pfailqrpermuteE^Permuteopermutep permutationsu^ permutationsI permparser^ PermParsern permissions^ PermissionsGHpermissionerrortype^permissionErrorTypemperm _Permperformtestcase0_performTestCasel performtestV_ performTestk performgcv_ performGCF peeksockaddr_ peekSockAddrj peekelemoff_ peekElemOffEpeekcwstringlen_peekCWStringLeni peekcwstring` peekCWStringhpeekcstringlen-`peekCStringLeng peekcstringR` peekCStringfpeekcastringlenx`peekCAStringLene peekcastring` peekCAStringd peekbyteoff` peekByteOffD peekarray0` peekArray0c peekarraya peekArraybpeekapeekCpatternmatchfail;aPatternMatchFail@AB`a patriciatreesa PatriciaTreepatqaPatQ_pathtranslatedapathTranslated?pathseparatorsapathSeparators]^ pathseparatorb pathSeparator[\pathinfo)bpathInfo>pathAbPathYpath<=ZpatgelbpatGEXpatgbPatGVpatGWpaterrorbpatErrorUpatbPatTpasswordbpassword;PQRSpass cpass parzipwith#c parZipWithO partripleBc parTripleNpartitionwithkeygcpartitionWithKey9:partitioneitherscpartitionEithers8 partitionc partition234567M parseversionc parseVersion1 parseutilsd ParseUtilsparseurireference>dparseURIReference0parseuriauthorityldparseURIAuthorityLparseuridparseURI/ parsetimed ParseTimeJ parseTimeK parsetestd parseTestIparsetaiutcdatfileeparseTAIUTCDATFile parserzero.e parserZeroH parserreturnPe parserReturnG parserplusre parserPlusF parserfaile parserFailE parseresulte ParseResultCDparseresponseheadeparseResponseHeadBparserequesthead fparseRequestHeadAparserelativereference>fparseRelativeReference. parserbindjf parserBind@parserfParser>?parseokfParseOk<= parsemonadf ParseMonadparsemodulewithmodefparseModuleWithMode; parsemodule#g parseModule: parsemodeCg ParseMode6789 parseheaderspg parseHeaders5 parseheaderg parseHeader4 parsefromfileg parseFromFile23 parsefilenameg parseFilename01 parsefailedh ParseFailed./ parseerror6h ParseError-,-parsect_hParsecT*+parsecontenttypehparseContentType, parsecmaph parsecMap)parsechParsec(parsec parseandbindh parseAndBindparseabsoluteuri iparseAbsoluteURI*parseabsoluteURI+parseWiparse'parspiParS%parS&parpairiparPair$parmapiparMap# parlistnthi parListNth"parlistniparListN! parlistchunk j parListChunk parlist+jparList parflatmapHj parFlatMapparensiffjparensIfparensjparens) parbufferj parBufferpararrjparArrparamjparam(parallelkParallelparallelparagraphseparator6kParagraphSeparator' paragraph]k paragraph&parkpar%pagemodekPageModepacksockettypekpackSocketType$ packfamilyk packFamily#packcstringlenlpackCStringLen" packcstring+l packCString!packJlpack pglP p  overflowlOverflow  outputnothingl outputNothingoutputnotfoundloutputNotFoundoutputmethodnotallowedmoutputMethodNotAllowedoutputinternalservererrorJmoutputInternalServerError outputfpsxm outputFPSoutputexceptionmoutputException outputerrorm outputErroroutputmoutput outdegreem outdegreeoutdeg'noutdeg'outdeg/noutdegout'Enout'outXnout otherwisetn otherwise othersymboln OtherSymbolotherpunctuationnOtherPunctuation othernumbern OtherNumber otherlettero OtherLetteros!oos orthodoxpaschalmoonBoorthodoxPaschalMoonorthodoxeasterooorthodoxEasterorpoorPorientoOrientorelseoorElse ordlistoordList  ordinaldateo OrdinalDateordgammapOrdGAMMAordbeta6pOrdBETAordalphaQpOrdALPHAordhpOrd ord orpor optionspOPTIONS optionmaybep optionMaybeoptionalpoptionaloptionqOptionoptionoptgroupLqoptgroupoptdescrpqOptDescroptargqOptArgopstartqopStartopprecqopPrecopletterqopLetter operatortabler OperatorTableoperator,rOperatoroperator opentempfilebr openTempFile opentcpportr openTCPPortopentcpconnectionropenTCPConnection openstreamr openStreamopensocketstreamropenSocketStreamopenpunctuation%sOpenPunctuationopenfileHsopenFileopenconnectionjsOpenConnectionopenbinarytempfilesopenBinaryTempFileopenbinaryfilesopenBinaryFile oobinlines OOBInline onsideindentt onsideIndent onexception)t onExceptiononeofItoneOfoneof onelinemodett OneLineModeontonolivetoliveolisttolist oldexceptiont OldExceptionold-timeuold-timeokuOkokodd2uoddoctoberHuOctoberoctdigitcuoctDigitoctaluoctal occstringu occStringoccnameuOccNameobjectuobjectnumericuNumeric numeratorv numeratornum(vNumnulluri>vnullURInullptrXvnullPtr nullhookstv nullHooks nullfunptrv nullFunPtrnullforeignptrvnullForeignPtrnullvnull nubbywnubBynub&wnubnowrap;wnowrapnovemberYwNovember notstrictvw NotStrict notStrict notmemberw notMember notimediffw noTimeDiffnothingwNothing notfollowedbyx notFollowedBynotelem;xnotElem notconnectedrx NotConnected notassignedx NotAssignednotxnot nosockettypex NoSocketTypenoshadexnoshadenoscript ynoscript normuseragent5y normUserAgent normforproxyZy normForProxy normdoclose}y normDoClose normcustomsy normCustomsnormalizetimediffynormalizeTimeDiffnormalizerequesturiynormalizeRequestURInormalizerequestoptions-zNormalizeRequestOptionsnormalizerequestdznormalizeRequestnormalizepathsegmentsznormalizePathSegmentsnormalizehostheaderznormalizeHostHeadernormalizeescapeznormalizeEscape normalizecase{ normalizeCase normaliseA{ normalisenormalgeb{normalGEnormalg{NormalGnormalGnormalc{NormalCnormalCnormalb{NormalBnormalBnoresize|noresizenorep0|NoRepnoproxyH|NoProxynopreca|noPrecnontermination|NonTerminationnonTerminationnonstrictrelativeto|nonStrictRelativeTononspacingmark|NonSpacingMarknonodesm!}noNodesMnonodes<}noNodesnonexhaustiveguardserrorg}nonExhaustiveGuardsErrornoneof}noneOfnomsg}noMsgnominaldifftime}NominalDiffTime nomethoderror} NoMethodErrornomethodbindingerror1~noMethodBindingErrornolayoutY~NoLayoutnohtmls~noHtmlnohref~nohrefnoframes~noframesnoedges~noEdgesnodesm~nodesMnodesnodes noderangem+ nodeRangeM noderangeJ nodeRangenodemapmgNodeMapMnodemapNodeMapnodelayNoDelaynode'node'nodeNode nocompression NoCompression nocomponents+ noComponents nobufferingN NoBufferingnobindslNoBindSnoBindSnoargNoArg no_of_tests no_of_testsnmergeioԀnmergeIOnmapnmapni_numericserv NI_NUMERICSERVni_numerichost2NI_NUMERICHOST ni_nofqdnU NI_NOFQDN ni_namereqdu NI_NAMEREQDni_dgramNI_DGRAMnfdataNFDatanextānext newunique݁ newUniquenewtypedNewtypeDnewtypeD newtmvario. newTMVarIOnewtmvarLnewTMVar newtchanioj newTChanIOnewtchannewTChannewstrefnewSTRef newstdgenł newStdGen newstableptr newStablePtr newsamplevar  newSampleVarnewqsemn*newQSemNnewqsemEnewQSemnewpos^newPosnewpool{newPool newnodesm newNodesMnewnodesnewNodes~newnameσnewName}newmvarnewMVar newlistarray  newListArraynewline+newline|newiorefJnewIORefnewforeignptrenvnnewForeignPtrEnvnewforeignptr_newForeignPtr_ newforeignptr newForeignPtrnewerrorunknownnewErrorUnknown{newerrormessagenewErrorMessageznewemptytmvarioGnewEmptyTMVarIOy newemptytmvaro newEmptyTMVarxnewemptysamplevarnewEmptySampleVar newemptymvar… newEmptyMVar newdiffarray newDiffArraynewcwstringlen newCWStringLen newcwstring1 newCWString newcstringlenU newCStringLen newcstringx newCString newcookie newCookienewchannewChannewcastringlen؆newCAStringLen newcastring newCAString newarray_ newArray_ newarray0; newArray0newarrayXnewArraynewsneww networkname NetworkName networkName networkfamilyʇ networkFamily networkentry NetworkEntrynetworkaliasesnetworkAliasesnetworkaddressAnetworkAddress networkaddrf NetworkAddrnetworkNetworknetworknestedcommentsnestedCommentsuvnestedatomicallyNestedAtomicallynestedAtomically nestdepth3 nestDepthtnestLnests neighbors'j neighbors'r neighbors neighborsq negotiate negotiatenegate‰negate nearestpath߉ nearestPath nearestnode nearestNode nearestdist# nearestDistnavy>navynaturalorfloat`naturalOrFloatpnaturalnaturalonameuNameUn namespace NameSpacemnamesՊNameSlnameqNameQk namemodule nameModulejnamel%NameLinameis<NameIsh nameinfoflagZ NameInfoFlagnamegwNameGg nameflavour NameFlavourfnamebasenameBase~ename΋Namezcdname{|}mzeromzero mythreadid myThreadIdmyrecv8myrecvmvarNMVarymunch1hmunch1xmunchmunchwmultiplemultipletuvmtlmtlmsumΌmsummstreeatmsTreeAtmstreemsTreemstMSTmspath.msPathmrsubsFmrSubsb mrsublista mrSubListamrmatch}mrMatch`mrbeforemrBefore_mraftermrAfter^mrȍMR]mplusۍmplus movebytes moveBytess movearray moveArrayr monthlength3 monthLength\monthdayRMonthDaymonthanddaytodayofyear|monthAndDayToDayOfYear[monthMonthmonoidMonoid mondriandefێ mondrianDefqZmondrianmondrianpYmondaystartweek%mondayStartWeekXmondayFMonday monadtransb MonadTranso monadplus MonadPlusmonadioMonadIOnmonadfixMonadFixm monadcontՏ MonadContWmonadcgiMonadCGIlmonadMonadkmodule>Moduleij modstring] modStringVmodnameyModNameU modjuliandate ModJulianDateh modifystref modifySTRefg modifystate modifyStatef modifymvar_ modifyMVar_e modifymvar& modifyMVard modifyiorefG modifyIORef modifyioerrork modifyIOErrorcmodifymodifyTmodifiersymbolModifierSymbolmodifierletterґModifierLettermodifiedjuliandayModifiedJulianDaybmodeMode`modeamod'<mod'modOmod mkweakptrg mkWeakPtr_ mkweakpair mkWeakPair^ mkweakioref mkWeakIORefmkweakĒmkWeak] mkugraphmߒ mkUGraphMSmkugraphmkUGraphR mktyconapp mkTyConAppmktycon7mkTyConmktMmkT\ mkstringtypeh mkStringTypemkstringconstrmkStringConstrmkstdgenmkStdGenmksocket̓MkSocketmkSocket mkrequest mkRequest[mkregexwithoptsmkRegexWithOptsmkregex=mkRegexmkrecconstrorupdatecmkRecConstrOrUpdateZmkrmkRYmkqueueMkQueuemkQueuemkqmkQXmkpolarԔmkPolar mkpkgname mkPkgNameQ mkoccname mkOccNameP mknoreptype. mkNorepTypemknodesmMmkNodesMOmknodes_imkNodes_NmknodesmkNodesMmknodemmkNodeMLmknode_mkNode_KmknodeѕmkNodeJmknameumkNameUImknamelmkNameLH mknameg_v  mkNameG_vG mknameg_tc? mkNameG_tcF mknameg_d^ mkNameG_dEmknameymkNameWDmkmpmkMpV mkmodname mkModNameC mkmapgraph˖ mkMapGraphBmkmmkMU mkioerror mkIOErrorT mkinttype mkIntType mkintconstr: mkIntConstr mkhtmltable\ mkHtmlTablemkheader{mkHeaderSmkgraphmmkGraphMAmkgraphmkGraph@mkfunty̗mkFunTy~ mkfloattype mkFloatType} mkfloatconstr mkFloatConstr|mkedgesm/mkEdgesM?mkedgesJmkEdges>mkedgemdmkEdgeM=mkedge}mkEdge< mkdatatype mkDataType{mkcookieMkCookiezmkconstrӘmkConstrymkapptymkAppTyx mixentrydom  MixEntryDomRmixentry+MixEntryQ mixcreateH mixCreatePmix`MixNOminviewwithkeyminViewWithKeyvwminviewminViewrstuminutestotimezoneڙminutesToTimeZoneMminusptrminusPtrqminusMinusLminprec0minPrecKminmemorylevelQMinMemoryLevelIJ:; minimumby minimumByopminimumminimumlmnGH9minfmКminFMminboundminBoundminminkmidnightmidnightFmidday5middayEmicroLMicrojmgt`MGTmfmgsmfmgmfixmfixDmfmfmethodMethod?@78methodiABCmetametah<=> messagestring messageString;6 messageeq6 messageEq5messagecompareYmessageCompare4messagezMessage9:23mergeiomergeIOgmergeerrorreplyœmergeErrorReply8 mergeerror mergeError71mergeall mergeAllmerge"mergemenu7menuf456memsetYmemset3memptyqmemptye memorylevel MemoryLevel/012-./0memcpy_ptr_baoffѝmemcpy_ptr_baoff.memcpymemcpy-memcmp memcmp,memchr#memchr+member;memberabcdmem\MemmcontextsMContext,mconcatmconcat` maybewith maybeWith* maybetolistʞ maybeToList_ mayberead maybeRead) maybepeek maybePeek(maybenew%maybeNew'maybe>Maybe]maybe^mayiMay\maxviewwithkeymaxViewWithKeyZ[maxviewmaxViewVWXY maxsegmentԟ MaxSegmentU maxprecedence maxPrecedence&+maxmemorylevel"MaxMemoryLevel$%)*maxlistenqueueVmaxListenQueueT maxlengthy maxlengthS!"# maximumby maximumByQRmaximumàmaximumNOP (maxfmmaxFM maxflowgraph maxFlowgraphmaxflow20MaxFlow2maxflowKMaxFlowmaxFlowmaxconstrindexymaxConstrIndexMmaxboundmaxBoundmaxmaxL mathsymbolϡ MathSymbolK matchtext MatchText' matchtest  matchTest& matchresult, MatchResult% matchresponseP matchResponse matchregexallv matchRegexAllJ matchregex matchRegexImatchqMatchQ$ matchoncetextآ matchOnceText# matchonce matchOnce" matchoffset MatchOffset!matchm7matchM  matchlengthX MatchLength matchcounty matchCount matcharray MatchArray matchanym matchAnyMmatchanyգmatchAny matchalltext matchAllTextmatchallmatchAllmatch.MatchmatchmarshaliMarshalmarrayMArraymaroonmaroonH markuptag markupTagG markupcontentߤ markupContentF markupattrs markupAttrsE marginwidth% marginwidthD marginheightP marginheightCmarchuMarchB mapwritert mapWriterT mapwriter mapWriter mapwithkey֥ mapWithKey@A mapstatet mapStateT mapstatemapState  mapsnd8mapSndmaprwstQmapRWST  maprwsnmapRWS mapreadert mapReaderT mapreader mapReadermappendɦmappend? mapmonotonic mapMonotonic>mapmaybewithkeymapMaybeWithKey<=mapmaybe6mapMaybe9:;mapm_WmapM_78mapmtmapM56maplisttmapListT mapkeyswith mapKeysWith4mapkeysmonotonicڧmapKeysMonotonic3mapkeysmapKeys2 mapindices mapIndicesmapfst6mapFst mapexceptionT mapException01 maperrort} mapErrorTmapeitherwithkeymapEitherWithKey./ mapeither˨ mapEither,-mapconttmapContT mapcontmapCont maparray"mapArray  mapandunzipmB mapAndUnzipM+mapaccumwithkeyimapAccumWithKey)* mapaccumr mapAccumR&'(   mapaccumlé mapAccumL#$%mapaccummapAccum!"mapMapmap  manytillWmanyTill manyaccum| manyAccummany1many1manymanymallocforeignptrbytesmallocForeignPtrBytesmallocforeignptrarray0mallocForeignPtrArray0mallocforeignptrarrayRmallocForeignPtrArraymallocforeignptrmallocForeignPtrmallocbytestringmallocByteString mallocbytes֫ mallocBytes mallocarray0 mallocArray0 mallocarray mallocArraymalloc9malloc makevalidT makeValidmaketokenparser|makeTokenParsermakestablenamemakeStableNamemakerelativetocurrentdirectorymakeRelativeToCurrentDirectory makerelative makeRelativemakeregexoptsmAmakeRegexOptsM makeregexoptsh makeRegexOpts makeregexm makeRegexM makeregex makeRegex main_nameȭ main_namemain_modmain_mod magnitude magnitudelsuc'lsuc'lsuc1lsuclrtreeGLRTreelpre'^lpre'lpreslprelpathLPathlparenlparenlpLPlowercaseletterԮLowercaseLetterlowerlowerlossofprecisionLossOfPrecisionloop'@loop'loopUloop lookupindext lookupIndex lookupheader lookupHeaderlookupfmlookupFMlookupѯlookup     lookahead lookAheadlooklook longestchain9 longestChain logcgiWlogCGIlogbasetlogBaselogloglocationlocationlocaltoutctimeofday̰localToUTCTimeOfDaylocaltimetoutclocalTimeToUTClocaltimetout1!localTimeToUT1localtimeofdayIlocalTimeOfDay localtimel LocalTimelocaldaylocalDaylocalboxLocalBoxlocalƱlocal loc_start loc_start loc_package loc_package loc_module) loc_module loc_filenameO loc_filenameloc_endrloc_endlocLoclnodeLNodelitpLitPlitPliteLitElitElit Lit listtomaybe* listToMaybelisttFListTlistTlistpwListPlistPlistitemListItemlistifylistifylistensسlistenslistenonlistenOn listening Listeninglisten+listenlisteFListElistElistassertablexListAssertable listassert listAssert listarray listArraylist_tycon_nameߴlist_tycon_name list_tycon list_tyconlist_cons_name(list_cons_namelistFListlink^linklingerxLinger linetohtml lineToHtml linestohtml linesToHtml lineseparator LineSeparatorlineslines linepragmas7 linePragmas linelengthX lineLength linebuffering{ LineBufferinglineartransferlinearTransferlineLinelimitLimitlimelimeliftm5liftM5liftm4(liftM4liftm3@liftM3liftm2XliftM2liftmoliftMliftioliftIOlifta3liftA3lifta2liftA2liftaͷliftAliftLiftliftlibua libUAlibLibli.lilexwhilePlexWhilelextabjlexTablexplexP lexnewline lexNewline lexlitchar lexLitCharlexerոLexerlexerlexemeLexemelexeme lexdigits& lexDigits lexcontextE LexContextlexcharblexCharlexxLexlexlevelslevelslevelnlevelnlevelѹlevel letternumber LetterNumberletter letterlets&LetSletS letindentQ letIndentletejLetEletElesplesp lengtharray0 lengthArray0length_of_testsӺlength_of_testslengthlengthlegend$legend leftsquareL LeftSquareleftsglefts leftparen LeftParenleftmodeLeftMode leftcurly LeftCurly leftarrowٻ LeftArrowleftappleftAppleft Leftleftledge/LEdgeleapsecondtableOLeapSecondTablelcmmlcmlbracklbracklbracelbracelbftlbftlazytostrictstּlazyToStrictST lazybufferop lazyBufferOplazyLazylayoutJLayoutlayoutlastlLastlast languagedef LanguageDeflanguageLanguagelangLanglang landscape3 LandscapelameLLamElamElam1eslam1E labuedges labUEdges labnodesm labNodesMlabnodes̾labNodeslabnode'labNode'labmlabMlabelslabelslabel1Label}label~ labedgesmj labEdgesMlabedgeslabEdgeslab'lab'lablabkw_whereɿKW_Where| kw_unsafe KW_Unsafe{kw_typeKW_Typezkw_thenKW_Thenykw_safe6KW_Safex kw_qualifiedU KW_Qualifiedwkw_ofrKW_Ofv kw_newtype KW_NewTypeu kw_module KW_Moduletkw_letKW_Lets kw_instance KW_Instancer kw_infixr KW_InfixRq kw_infixl" KW_InfixLpkw_infix?KW_Infixokw_inXKW_Inn kw_importr KW_Importmkw_ifKW_Ifl kw_hiding KW_Hidingk kw_foreign KW_Foreignj kw_export KW_Exportikw_elseKW_Elsehkw_doKW_Dog kw_deriving4 KW_Derivingf kw_defaultU KW_Defaultekw_datarKW_Datadkw_classKW_Classckw_caseKW_Casebkw_asKW_AsakleisliKleislikin248'kin248'kin248kin248 killthread+ killThreadkeyssetHkeysSetkeysckeyskeyboardkeyboard^_`keyKey keepalive KeepAlivejustJustjuneJunejulyJulyjulianmonthlength julianMonthLengthjulianCJulianjoinpath]joinPath\] joindrive~ joinDriveZ[joinjoin javastyle javaStyleYjanuaryJanuaryixmapixmapXixIxiterateiterateWitalics>italicsTUVitagaitagQRS isvaliderrno isValidErrnoPisvalidisValidNOisusererrortypeisUserErrorTypeM isusererror isUserErrorLisurireferenceisURIReferenceisuri8isURIisupperPisUpper isunreservedo isUnreservedisunescapedinuriisUnescapedInURI istotalorder isTotalOrderKistcpconnectedtoisTCPConnectedToissymbol isSymbol issuffixof) isSuffixOfIJ issubsetofU isSubsetOf issubmapofby{ isSubmapOfBy issubmapof isSubmapOfisstringIsStringisstrictIsStrictGisStrictH isspaceword8 isSpaceWord8F isspacechar89 isSpaceChar8EisspaceXisSpaceissimplesisSimpleissignedisSigned isseparator isSeparatorissearchpathseparatorisSearchPathSeparatorCD isreserved  isReservedisrelativereference2isRelativeReference isrelative[ isRelativeAB ispunctuation isPunctuationispropersubsetofisProperSubsetOfispropersubmapofbyisProperSubmapOfByispropersubmapofisProperSubmapOfisprint6isPrint isprefixofS isPrefixOf?@ispermissionerrortypeisPermissionErrorType>ispermissionerrorisPermissionError=ispathseparatorisPathSeparator;< isoctdigit isOctDigitisnumber3isNumber isnothingP isNothing isnoreptypep isNorepTypeisnohtmlisNoHtml89:isnegativezeroisNegativeZeroisnanisNaNismarkisMarkismapismap567islower*isLowerisletterEisLetter isleapyearc isLeapYear4islatin1isLatin1isjustisJustisjulianleapyearisJulianLeapYear isipv6address isIPv6address isipv4address isIPv4address isinfixof2 isInfixOf3 isinfiniteY isInfiniteisindexvisindex2isillegaloperationerrortypeisIllegalOperationErrorType1isillegaloperationisIllegalOperation0isieeeisIEEE ishexdigit isHexDigitisfullerrortypeBisFullErrorType/ isfullerrorh isFullError.isextseparatorisExtSeparator,-iseoferrortypeisEOFErrorType+ iseoferror isEOFError*iseofisEOF isemptytmvar isEmptyTMVar isemptytchan9 isEmptyTChanisemptysamplevaraisEmptySampleVar) isemptymvar isEmptyMVar(isemptymisEmptyM isemptyfm isEmptyFM isemptychan isEmptyChan'isemptyisEmpty&isdrive(isDrive$%isdoesnotexisterrortypeVisDoesNotExistErrorType#isdoesnotexisterrorisDoesNotExistError"isdigitisDigitisdenormalizedisDenormalizediscurrentthreadboundisCurrentThreadBound iscontrol* isControl isconnectedtoL isConnectedTo isconnectedp isConnectediscommutablebyisCommutableBy! iscommutable isCommutable ischarIsCharisbottomisBottomisassociativebyisAssociativeBy isassociative> isAssociative isasciiupperc isAsciiUpper isasciilower isAsciiLowerisasciiisAsciiisalreadyinuseerrortypeisAlreadyInUseErrorTypeisalreadyinuseerrorisAlreadyInUseErrorisalreadyexistserrortype=isAlreadyExistsErrorTypeisalreadyexistserroruisAlreadyExistsError isalphanum isAlphaNumisalphaisAlphaisallowedinuriisAllowedInURI isalgtype isAlgType isabsoluteuri" isAbsoluteURI isabsoluteE isAbsoluteirrefutpaterrornirrefutPatErroriouarrayIOUArray iotodiffarray IOToDiffArrayiorefIORefiomodeIOMode ioexception IOExceptionioesetlocationAioeSetLocation ioesethandleg ioeSetHandleioesetfilenameioeSetFileNameioeseterrortypeioeSetErrorTypeioeseterrorstringioeSetErrorString ioerrortype  IOErrorType ioerrors)ioErrorsioerrorDIOError ioError  ioegetlocationioeGetLocation  ioegethandle ioeGetHandleioegetfilenameioeGetFileNameioegeterrortypeioeGetErrorTypeioegeterrorstring'ioeGetErrorStringioarrayKIOArrayioactionfioActionio|IO invariant invariantinttokIntTok inttodigit intToDigitintsetIntSetintrepIntRep intptrtoptr+ intPtrToPtrintptrHIntPtr~intprimlbIntPrimLintPrimLintmapIntMap} intersperse intersperse{|intersectionwithkeyintersectionWithKeyyzintersectionwith intersectionWithwx intersectionL intersectionstuv intersectby{ intersectByr intersect intersectq internals InternalsinternalInternal intercalate intercalateopinteract0interactmnintegral`Integralintegerl|IntegerLintegerLintegerinteger intconstr IntConstrlintattrintAttrkint8Int8jint64)Int64iint32?Int32hint16UInt16gintiInt~fint instances Instances|} instanced InstanceD instanceDinsnodesinsNodesinsnodeinsNode insmapnodesm& insMapNodesM insmapnodes_J insMapNodes_ insmapnodesm insMapNodes insmapnodem insMapNodeM insmapnode_ insMapNode_ insmapnode insMapNode insmapedgesm insMapEdgesM insmapedges insMapEdges insmapedgem9 insMapEdgeM insmapedgeZ insMapEdge insidehpcpos| insideHpcPosinsertwithkey'insertWithKey'e insertwithkey insertWithKeycd insertwith' insertWith'b insertwith insertWith`ainsertlookupwithkey?insertLookupWithKey^_ insertheaderso insertHeadersinsertheaderifmissinginsertHeaderIfMissing insertheader insertHeaderinsertbyinsertBy]insertinsertWXYZ[\insedges6insEdgesinsedgeQinsEdgeinsginsinrangeinRangeV inputvalue inputValue inputfilename inputFilenameinputcontenttypeinputContentTypeinputInputinputUinn'?inn'innRinninlineperformiopinlinePerformIOinitsinitsST initialquote InitialQuoteR initialpos initialPos initialize initializeinitinitPQinfoqFInfoQinfo_Info{infixr}InfixRinfixpInfixP~infixPinfixnInfixN}infixlInfixL|infixeInfixEzinfixE{infixc)InfixCxinfixCyinfixappWinfixAppwinfixtInfixOuv inet_ntoa inet_ntoaN inet_addr inet_addrM inductive InductivezindicesindicesindexoutofboundsIndexOutOfBoundsKL indexconstrD indexConstrJindex`indexGHItindepIndepyindepindentIndentindegreeindegreeFindeg'indeg'sindegindegr incsourceline incSourceLineEqincsourcecolumnIincSourceColumnDp inaddr_anyz iNADDR_ANYC in6addr_any iN6ADDR_ANYB importspecs importSpecsimportqualifiedimportQualified importmodule  importModule importloc+ importLocimportfGImportFoimportasfimportAsimpl~ImplximagpartimagPartAimageimage@illegaloperationerrortypeillegalOperationErrorTypeiframeiframeidom&iDom identstart@ identStartmn identletteri identLetterklidentityIdentityw identifier identifier?jidentIdent>idid<=iarrayIArrayv hwaitforinput; hWaitForInput;hunitYHUnittuhughespjvHughesPJs huffmanonly HuffmanOnlyhi httpversion httpVersion httpresponse HTTPResponse httprequest  HTTPRequest httpequiv) httpequiv:httpNHTTPqrhtmltreejHtmlTree9htmltagHtmlTag8 htmltable HTMLTABLE5 HtmlTable67 htmlstring HtmlString4htmlnodeHtmlNode3htmlleafHtmlLeaf2 htmlelement@ HtmlElement1htmlattr_HtmlAttr/0htmlAttrhtmlHTML,Htmlo-.htmlphtellhTell+ hswildcard HsWildCardhsvaropHsVarOp hsvarname: HsVarNamehsvarTHsVarhsunsafemHsUnsafe hsunitcon HsUnitConhsunguardedrhsHsUnGuardedRhshsunguardedaltHsUnGuardedAlt hsunbangedty HsUnBangedTyhstyvarHsTyVar hstytuple6 HsTyTuple hstypesigT HsTypeSig hstypedecls HsTypeDeclhstypeHsTypehstyfunHsTyFunhstyconHsTyConhstyappHsTyApp hstuplecon HsTupleConhstupleHsTuplehstreamtoconnection<hstreamToConnection*hstreambHStream)hssymbol}HsSymbol hsstringprim HsStringPrimhsstringHsStringhsstmtHsStmt hsspecialcon HsSpecialConhssafetyHsSafetyhssafe/HsSafe~hsrightsectionOHsRightSection}hsrhsnHsRhs| hsrecupdate HsRecUpdate{ hsrecdecl HsRecDeclz hsrecconstr HsRecConstryhsqvaropHsQVarOpx hsqualtype HsQualTypevw hsqualifier, HsQualifieruhsqopHHsQOpthsqname`HsQNameshsqconop{HsQConOpr hspwildcard HsPWildCardqhspvarHsPVarphsptupleHsPTupleohsprecHsPRecnhspparenHsPParenmhspnegHsPNeglhsplit7HsPLitkhsplistPHsPListj hspirrpatl HsPIrrPati hspinfixapp HsPInfixApph hspfieldpat HsPFieldPatg hspatfield HsPatFieldf hspatbind HsPatBindehspatHsPatdhspaspat!HsPAsPatchsparen<HsParenbhspappUHsPAppahspacemhspace(`hsopHsOp_ hsnewtypedecl HsNewTypeDecl^hsnegappHsNegApp]hsnameHsName\hsmoduleHsModuleZ[hsmatchHsMatchXY hsliteral8 HsLiteralWhslitRHsLitV hslistconl HsListConU hslistcomp HsListCompThslistHsListShslexhsLexR hsletstmt HsLetStmtQhsletHsLetP hsleftsection HsLeftSectionOhslambda1HsLambdaNhsivarKHsIVarM hsithingwithi HsIThingWithL hsithingall HsIThingAllKhsirrpatHsIrrPatJ hsintprim HsIntPrimIhsintHsIntH hsinstdecl HsInstDeclG hsinfixdecl HsInfixDeclF hsinfixapp? HsInfixAppE hsimportspeca HsImportSpecD hsimportdecl HsImportDeclBChsifHsIfAhsidentHsIdent@hsiabsHsIAbs?hshowhShow' hsguardedrhss  HsGuardedRhss> hsguardedrhs/ HsGuardedRhs<= hsguardedaltsX HsGuardedAlts:; hsguardedalt HsGuardedAlt89 hsgenerator HsGenerator7hsfunconHsFunCon6 hsfunbind HsFunBind5hsfracHsFrac4hsforeignimport HsForeignImport3hsforeignexportJHsForeignExport2 hsfloatprimp HsFloatPrim1 hsfieldupdate HsFieldUpdate/0 hsexptypesig HsExpTypeSig. hsexportspec HsExportSpec-hsexpHsExp,hsevarHsEVar+hsetposn/hSetPosn& hsethingwithO HsEThingWith* hsethingallr HsEThingAll) hsetfilesize hSetFileSize%hsetechohSetEcho$ hsetbuffering hSetBuffering#hsetbinarymodehSetBinaryMode"hsephsep(g hsenumfromto; HsEnumFromTo'hsenumfromthentocHsEnumFromThenTo&hsenumfromthenHsEnumFromThen% hsenumfrom HsEnumFrom$hsemodulecontentsHsEModuleContents#hseekhSeek!hseabsHsEAbs" hsdoubleprim/ HsDoublePrim!hsdoKHsDo  hsdefaultdeclh HsDefaultDeclhsdeclHsDecl hsdatadecl HsDataDecl hscontext HsContexthsconsHsConshsconopHsConOp hsconname HsConName hscondecl0 HsConDeclhsconNHsConhscnamefHsCName hsclassdecl HsClassDecl hscharprim HsCharPrimhscharHsCharhscaseHsCase hsbangtype HsBangType hsbangedty HsBangedTyhsasst1HsAsst hsassocrightO HsAssocRight  hsassocnoner HsAssocNone  hsassocleft HsAssocLeft hsassocHsAssoc hsaspatHsAsPat hsappHsApphsaltHsAlthruncgihRunCGIhreflang1hreflanghrefQhref hreadyshReadyhrhr hputstrln hPutStrLnhputstrhPutStrhputcharhPutCharhputbufnonblockinghPutBufNonBlockinghputbuf@hPutBuf hputarray\ hPutArrayhputuhPutf hprintftype HPrintfTypehprintfhPrintfhprinthPrinthpcposHpcPoshpchashHpcHashhpchpcnhourstotimezone8hoursToTimeZone hotlinkurl] hotLinkURLhotlinkcontentshotLinkContentshotlinkattributeshotLinkAttributeshotlinkHotLink hotlinkhostnameFHostName  hostName  hostfamilyz hostFamily  hostentry HostEntry hostaliases hostAliases hostaddresses hostAddresses hostaddress6 HostAddress6 hostaddress- HostAddress hostAddresshost]hosthopefultransfer|hopefulTransferhook_writeblockhook_writeBlock hook_readline hook_readLinehook_readblockhook_readBlock hook_close hook_close hlookahead9 hLookAhead hiswritableZ hIsWritablehistorymaxentrieshistoryMaxEntriesehistoryisstifledhistoryIsStifleddhisterminaldevicehIsTerminalDevice hisseekable hIsSeekable hisreadable& hIsReadablehisopenDhIsOpenhiseof]hIsEOF hisclosedx hIsClosedhiddenhiddenhgetposnhGetPosnhgetnonblockinghGetNonBlockingchgetline hGetLinehgetecho/hGetEcho hgetcontentsO hGetContentsbhgetcharhGetCharhgetbufnonblockinghGetBufNonBlocking hgetbuffering hGetBufferinghgetbufhGetBuf hgetarray  hGetArrayhget%hGetahflushGhFlush hfilesizeb hFileSizehexdigithexDigit` hexadecimal hexadecimal_heightheightheapsortheapsort heapoverflow  HeapOverflowheap-Heapm headersetterM HeaderSetterheaderslHeadersl headername HeaderNameheaderHeaderheaderheadHEADhead^hdrwwwauthenticate#HdrWWWAuthenticate hdrwarningK HdrWarninghdrviagHdrViahdrvaryHdrVaryhdrvaluehdrValue hdruseragent HdrUserAgent hdrupgrade HdrUpgradehdrtransferencodingHdrTransferEncoding hdrtrailer/ HdrTrailerhdrteJHdrTE hdrsetcookieg HdrSetCookie hdrserver HdrServer hdrretryafter HdrRetryAfter hdrreferer HdrRefererhdrrangeHdrRange hdrpublic HdrPublichdrproxyauthorization2HdrProxyAuthorizationhdrproxyauthenticategHdrProxyAuthenticate hdrpragma HdrPragmahdrnamehdrNamehdrmaxforwardsHdrMaxForwards hdrlocation HdrLocationhdrlastmodifiedHdrLastModifiedhdrifunmodifiedsinceGHdrIfUnmodifiedSince hdrifrangeq HdrIfRangehdrifnonematchHdrIfNoneMatchhdrifmodifiedsinceHdrIfModifiedSince hdrifmatch HdrIfMatchhdrhost HdrHosthdrfrom HdrFrom hdrexpires=  HdrExpires hdrexpect\  HdrExpecthdretagx HdrETaghdrdate HdrDate hdrcustom  HdrCustom hdrcookie  HdrCookiehdrcontenttype HdrContentTypehdrcontenttransferencoding# HdrContentTransferEncodinghdrcontentrangeX HdrContentRange hdrcontentmd5  HdrContentMD5hdrcontentlocation HdrContentLocationhdrcontentlength HdrContentLengthhdrcontentlanguage HdrContentLanguagehdrcontentencoding7 HdrContentEncodinghdrcontentbasec HdrContentBase hdrconnection  HdrConnectionhdrcachecontrol HdrCacheControlhdrauthorization HdrAuthorizationhdrallow HdrAllowhdrage HdrAgehdracceptlanguage> HdrAcceptLanguagehdracceptencodingl HdrAcceptEncodinghdracceptcharset HdrAcceptCharset hdraccept  HdrAccepthclose hClosehcat hcat]hastrailingpathseparator hasTrailingPathSeparator hasresolutionP  HasResolutionhasloopp hasLoop\ haskellstyle  haskellStyle[ haskelldef  haskellDefZ haskell-src  haskell-srckhaskell haskellY hashunique hashUnique hashtable8 HashTablej hashstring[ hashStringhashstablenamehashStableNamehashinthashInt hasheaders HasHeadershashHash hasextension hasExtension~hasdrivehasDrive|}hang3hang{X handlestreamS HandleStreamihandlesocketerrorhandleSocketErrorhandlerHandler handleposn HandlePosn handlejust handleJustzhandleexceptioncgihandleExceptionCGIy handleerrorsC handleErrorshandleaHandlehandlexh6h6uvwh5h5rsth4h4opqh3h3lmnh2h2ijkh1h1fgh gzipwitht8 gzipWithTe gzipwithqV gzipWithQd gzipwithmt gzipWithMc gziporzlib GZipOrZlibWgzipGZiphVgzipbgvdoutgvdOutgvdingvdIngvdGVDggunfoldgunfoldgui(gui_`aguardqIGuardQ^UguardedbgGuardedB\SguardedB]T guardbinbox GuardBinBox[guardGuardZRguard gtypecount gtypecountYgtGTXgsizegsizeWgshow'gshowVgsel<gselQgroupbySgroupByTUPgroup{groupRSOgrevgrevNgregorianpaschalmoongregorianPaschalMoonMgregorianmonthlengthgregorianMonthLengthQgregorianeaster'gregorianEasterLgreenGgreenPgreadagreadOgrayvgrayN graphviz' graphviz'KgraphvizGraphvizfgraphvizJ graphufold graphUFoldgraphrepGraphRep graphrec' graphRec'graphrec4graphRec graphnodesm0T graphNodesM0 graphnodesmw graphNodesM graphnodes graphNodesgraphmGraphMIgraphfromedges'graphFromEdges'graphfromedgesgraphFromEdges graphfilterm$ graphFilterM graphfilterG graphFilter graphdff'g graphDff'graphdffgraphDffgraphGraphdeHgr1gr1GgrGrEFgqGQM gnodecount gnodecountLgmaptgmapTgmapqr,gmapQrgmapqlDgmapQlgmapqi\gmapQigmapqsgmapQgmapmpgmapMpgmapmogmapMogmapmgmapM gmapaccumt gmapAccumTK gmapaccumqr gmapAccumQrJ gmapaccumql gmapAccumQlI gmapaccumq8 gmapAccumQH gmapaccummX gmapAccumMGgmaprgmapDgmGMFglobalglobalECglengthglengthD gfoldlaccum gfoldlAccumCgfoldlgfoldlgfoldgfoldB gfindtype! gfindtypeB getzonedtimeB getZonedTimeA getziplistd getZipListgetversion_text_regex_posixgetVersion_Text_Regex_Posix@getversion_text_regex_basegetVersion_Text_Regex_Base?getvarwithdefault getVarWithDefaultgetvars1getVarsgetvarJgetVargetuserdocumentsdirectoryugetUserDocumentsDirectorygetuncaughtexceptionhandlergetUncaughtExceptionHandlergettixfilenamegetTixFileName> gettimezone getTimeZone=getterminalname5getTerminalNameAgettemporarydirectoryegetTemporaryDirectorygetsumgetSum getstdrandom getStdRandom getstdgen getStdGengetstategetState<@ getsrcloc  getSrcLoc;getspecialprefixes0getSpecialPrefixes?getsocketoption]getSocketOption getsocketname getSocketNamegetserviceportnumbergetServicePortNumbergetserviceentrygetServiceEntrygetserviceentries getServiceEntriesgetservicebyport:getServiceByPortgetservicebynamefgetServiceByName getsearchpath getSearchPath9:getsgets> getrevedges getRevEdgesgetresponseversiongetResponseVersion8getresponsebody!getResponseBodygetrequestversionMgetRequestVersion7 getrequestt getRequestgetproxygetProxygetprotocolnumbergetProtocolNumbergetprotocolentrygetProtocolEntrygetprotocolentriesgetProtocolEntriesgetprotocolbynumberCgetProtocolByNumbergetprotocolbynamesgetProtocolByName getprompt getPrompt= getprogname getProgName getproduct getProduct getposixtime getPOSIXTime< getposition  getPosition6;getpointB getPoint:getpermissionsd getPermissions getpeername  getPeerName getpeercred  getPeerCredgetpath getPathgetparserstate getParserState59 getoutstream! getOutStream8getopt'3!getOpt'4getoptL!GetOptcgetOpt3 getoffsidet! getOffside2 getnodes'! getNodes'getnodes!getNodesgetnode!getNodegetnetworkentry!getNetworkEntrygetnetworkentries"getNetworkEntriesgetnetworkbynameF"getNetworkByNamegetnetworkbyaddrr"getNetworkByAddr getnameinfo" getNameInfogetmultiinputfps"getMultiInputFPS getmultiinput" getMultiInputgetmodjuliandate#getModJulianDate1getmodificationtimeA#getModificationTime0getmaxredirectss#getMaxRedirectsgetmaxerrorretries#getMaxErrorRetriesgetmaxauthattempts#getMaxAuthAttempts getmatrix# getMatrix/ getlpathnodes$ getLPathNodesgetlpath:$getLPath getlinebuffer[$ getLineBuffer7getline{$getLine.getlibraryversion$getLibraryVersion6getlast$getLast getinstream$ getInStream5 getinputsfps% getInputsFPS getinputs1% getInputs getinputnamesS% getInputNames getinputfpsw% getInputFPSgetinputfilename%getInputFilenamegetinputcontenttype%getInputContentTypegetinput%getInput,-4getinhibitcompletion(&getInhibitCompletion3gethtmlelementsW&getHtmlElements gethostname}& getHostName gethostentry& getHostEntry~gethostentries&getHostEntries} gethostbyname& getHostByName| gethostbyaddr' getHostByAddr{gethomedirectory<'getHomeDirectoryz getheadersb' getHeaders+getfirst'getFirsty getexecopts' getExecOpts2geterrno'getErrno*getenvironment'getEnvironmentxgetenv(getEnvwgetend(getEnd1getelems2(getElems)getdualM(getDualv getdistancek( getDistancegetdirectorycontents(getDirectoryContentsugetcurrenttimezone(getCurrentTimeZone(getcurrenttime(getCurrentTime'getcurrentdirectory!)getCurrentDirectoryt getcputimeJ) getCPUTimes getcookiesj) getCookiesrgetcookiefilter)getCookieFilterq getcookie) getCookiep getcontext) getContext getcontents) getContentsno%&0getconst&*getConstmgetcompletionqueryitemsQ*getCompletionQueryItems/getcompletionappendcharacter*getCompletionAppendCharacter.getcompleterwordbreakcharacters*getCompleterWordBreakCharacters-getcompleterquotecharacters+getCompleterQuoteCharacters, getclocktimeP+ getClockTimelgetcharo+getCharkgetchancontents+getChanContents$ getcgivars+ getCGIVars#getbrowserstate+getBrowserStatej getbounds, getBounds" getbodyfps", getBodyFPSigetbody?,getBodyhgetbasicwordbreakcharactersm,getBasicWordBreakCharacters+getauthoritygen,getAuthorityGenggetauthorities,getAuthoritiesfgetauth,getAuth!getattemptedcompletionover-getAttemptedCompletionOver* getassocsI- getAssocs getargse-getArgsegetappuserdatadirectory-getAppUserDataDirectorydgetany-getAnycgetalltextsubmatches-getAllTextSubmatches)getalltextmatches.getAllTextMatches(getallsubmatches<.getAllSubmatches'getallowredirectsi.getAllowRedirectsb getallmatches. getAllMatches&getall.getAlla getaddrinfo. getAddrInfo`get.GETget%geq /geq genunodes$/ genUNodes$gentokenparserG/GenTokenParser#genrangem/genRange_genpat/genpat" genparser/ GenParser ! genlnodes/ genLNodesgenlanguagedef/GenLanguageDef generictake 0 genericTake^ generict'@0 GenericT'generict]0GenericTgenericsplitat0genericSplitAt]generics0Genericsbgenericreplicate0genericReplicate\genericr0GenericR genericq'1 GenericQ'genericq#1GenericQ genericm'@1 GenericM'genericm]1GenericM genericlength~1 genericLength[ genericindex1 genericIndexZ genericdrop1 genericDropYgenericb1GenericBgeneric'2Generic' generic 2Generic generate;2generateXgeneralcategory^2GeneralCategoryVgeneralCategoryWgen2GenUgelem2gelemgdepth2gdepth gdecomp2GDecompgcount2gcount gcd3gcdgcast23gcast2Tgcast103gcast1SgcastG3gcastRgather^3gather gammau3GAMMAg3b3g3bg33g3fusion3Fusiona funresultty3 funResultTyQfunptr3FunPtrPfundep4FunDepfunDepfund.4FunDfunDfunctorW4FunctorO functions{4 Functions`function4Function_fun_tycon_name4fun_tycon_name fun_tycon4 fun_tycon fullrender4 fullRender fullerrortype5 fullErrorTypefuchsia?5fuchsiaNfstpairfstlistd5fstPairFstListfst5fstMfsep5fsep fromweekdate5 fromWeekDatefromtor5FromToRfromToRfromtoe6fromToE fromthentor(6 FromThenToR  fromThenToR fromthentoec6 fromThenToE  fromthenr6 FromThenR  fromThenR  fromthene6 fromThenE fromsundaystartweek6fromSundayStartWeek fromstring7 fromStringL fromrational37 fromRationalfromratR7fromRatfromrj7FromRfromRfromordinaldate7fromOrdinalDatefrommondaystartweek7fromMondayStartWeek frommaybe7 fromMaybeKfromlistwithkey8fromListWithKeyIJ fromlistwithB8 fromListWithGHfromlistf8fromListABCDEFfromjust8fromJust@fromjulianyearandday8fromJulianYearAndDay fromjulian8 fromJulian fromintegral 9 fromIntegral frominteger-9 fromInteger fromhpcposN9 fromHpcPos fromgregorianq9 fromGregorian fromgraph9 fromGraphfromforeignptr9fromForeignPtr fromexception9 fromException?fromenum:fromEnumfrome:fromE fromdynamic;: fromDynamic>fromdynY:fromDyn=fromdistinctasclist:fromDistinctAscList9:;< fromconstrm: fromConstrM8 fromconstrb: fromConstrB7 fromconstr: fromConstr6 fromchunks; fromChunksfrombool:;fromBoolfromasclistwithkey`;fromAscListWithKey45fromasclistwith;fromAscListWith23 fromasclist; fromAscList./01friday;Friday- frequency; frequency,freeze<freeze freestableptr9< freeStablePtr+freepoolZ<freePoolfreehaskellfunptr<freeHaskellFunPtr*free<freeframeset<Frameset^frameset) frameborder< frameborder(frame=frame'fragment2=fragment& fractionalP= Fractionalfourj=four%formvar=FormVar$ formtorequest= formToRequest# formencode= formEncode" formdecode= formDecode!formattimediff>formatTimeDiff  formattime4> FormatTime formatTimeformatcharacteri>formatCharacterformatcalendartime>formatCalendarTimeformat>Format]form_>forM_form>FormforMformforkos0?forkOSforkioH?forkIOforimpda?forImpDforever?foreverforest?Forest foreignptr? ForeignPtr\foreignd?ForeignDforeign?Foreign[force@forceforallt-@ForallTforallTforallc\@ForallCforallCforall@forAllfor_@for_for@forfont@font foldwithkey@ foldWithKey  foldrmAfoldrM  foldrchunksA foldrChunksfoldr1'=Afoldr1' foldr1ZAfoldr1 foldr'Afoldr'foldrAfoldrfoldmapdefaultAfoldMapDefaultfoldmapBfoldMapfoldm_BfoldM_foldm1BfoldMfoldlmHBfoldlM foldlchunkseB foldlChunksfoldl1'Bfoldl1'foldl1Bfoldl1foldl'Bfoldl'foldlCfoldlfoldable8CFoldableZfoldTCfoldfmtolist|CfmToListfmapeCfmapE fmapdefaultC fmapDefaultfmapCfmapflowinfoCFlowInfofloor Dfloorfloattok"DFloatTok floattodigitsCD floatToDigitsfloatrepdDFloatRep floatrangeD floatRange floatradixD floatRadix floatprimlD FloatPrimL floatPrimLfloatingDFloating floatdigitsE floatDigits floatconstr9E FloatConstrfloatUEfloatflipvEflip flattensccsE flattenSCCs flattensccE flattenSCCflattenEflattenfixstEfixSTfixitydirectionFFixityDirectionfixity4FFixityfixio[FfixIOfixedqFFixedYfixFFixXfixfirstFFirstfirst finitemapF FiniteMapWfindwithdefaultFfindWithDefaultfindsubstrings(GfindSubstrings findsubstringSG findSubstringfindminwGfindMinfindmaxGfindMax findindicesG findIndices findindexG findIndex findheader.H findHeaderfindexecutableRHfindExecutable findcookievH findCookie findconncloseH findConnClosefindHfind finalquoteH FinalQuotefinallyIfinally finalizerptr(I FinalizerPtr finalizerfreeMI finalizerFreefinalizerenvptruIFinalizerEnvPtrfinalizeforeignptrIfinalizeForeignPtrfinalizeIfinalize filterwithkeyI filterWithKeyfilterm JfilterMfiltered(JFilteredfilterNJfilter filepathJFilePathUfilepathV fileoffsetJ FileOffsetfilenamecompletionfunctionJfilenameCompletionFunctionfilemodeKFileModefileid8KFileIDfieldsetRKfieldset fieldpatq{K FieldPatQfieldpatKFieldPatfieldPat fieldexpqK FieldExpQfieldexpKFieldExpfieldExpfglLfglTfebruary0LFebruaryfdsocketLLfdSocketfdbLFdfcatxLfcatfamilyLFamilyfailwithLfailWithfailuresLfailures failparseL failParsefailMfailfaceMfaceextt6MextT extseparatorRM extSeparatorextractuMExtractextractextrMextRextqMextQextmpMextMpextmMextMextbMextBext1tNext1Text1rNext1Rext1q,Next1Qext1mBNext1Mext0WNext0exprkNExprRSexpqNExpQexportfNExportFexponentNexponent expectentityN ExpectEntityexpectNExpectexpboxOExpBoxexp,OExpexpexitwithPOexitWith exitsuccessoO ExitSuccess exitSuccess exitfailureO ExitFailure exitFailure exitexceptionO ExitExceptionexitcodeOExitCodeexitPExitQ execwritert+P execWriterT execwriterPP execWriterexecuteqPexecute executableP executable execstatetP execStateT execstateP execStateexecrwstPexecRWSTexecrwsQexecRWS execoption>Q ExecOption  execnoteolQ execNotEOL execnotbolQ execNotBOL execblankQ execBlankexdev ReXDEV exclamation'R Exclamation~ exceptionGR ExceptionP}exampleoRExampleO examinetixR examineTix| ewouldblockR eWOULDBLOCK{ everywheremR everywhereMz everywherebutR everywhereButy everywhere'S everywhere'x everywhere8S everywherew everythingXS everythingvevenrSevenevaluateSevaluateu evalstatetS evalStateT evalstateS evalStateevalrwstSevalRWSTevalrwsTevalRWSeusers4TeUSERStetxtbsyMTeTXTBSYs etoomanyrefslT eTOOMANYREFSr etimedoutT eTIMEDOUTqetimeTeTIMEpestaleTeSTALEoesrmntTeSRMNTnesrchTeSRCHmespipeUeSPIPElespUespesocktnosupport7UeSOCKTNOSUPPORTk eshutdown[U eSHUTDOWNjescapeuristringUescapeURIString escapeuricharU escapeURIChar escapestringU escapeStringerrortUErrorThierrorsVerrorsg errorreset"V ErrorReseterrorpos@VerrorPosef errorparsejV ErrorParse errormiscV ErrorMisc errormessagesV errorMessagesderrorisunknownVerrorIsUnknownc errorclosedV ErrorClosed errorcalls W errorCalls errorcall?W ErrorCallaberroriWErrorIJKLMN`errorerrnotoioerrorWerrnoToIOError_errnoWErrno]^erremoteWeRREMOTE\errXerr erpcmismatchX eRPCMISMATCH[erofs:XeROFSZeremoteRXeREMOTEYeremchglXeREMCHGXerangeXeRANGEWequalsXEqualsUequalsV equalfilepathX equalFilePathSTequalXequaleqYEqH eprototype!Y ePROTOTYPEReprotonosupportFYePROTONOSUPPORTQeprotogYePROTOP eprogunavailY ePROGUNAVAILO eprogmismatchY ePROGMISMATCHN eprocunavailY ePROCUNAVAILMeproclimYePROCLIML epochtime Z EpochTimeKepipe&ZePIPEJ epfnosupportCZ ePFNOSUPPORTIeperm`ZePERMH eopnotsupp{Z eOPNOTSUPPGeokZeOKF eoferrortypeZ eofErrorTypeEeofZEOFBCeofDenxioZeNXIOA environment[ EnvironmentG enumfromto0[ enumFromToenumfromthentoT[enumFromThenTo enumfromthenz[ enumFromThenenumfrom[enumFromenum[Enumenotty[eNOTTY@enotsock[eNOTSOCK? enotempty[ eNOTEMPTY>enotdir\eNOTDIR=enotconn6\eNOTCONN<enotblkQ\eNOTBLK;enosysj\eNOSYS:enostr\eNOSTR9enosr\eNOSR8enospc\eNOSPC7 enoprotoopt\ eNOPROTOOPT6enonet\eNONET5enomsg]eNOMSG4enomem]eNOMEM3enolink3]eNOLINK2enolckL]eNOLCK1enoexece]eNOEXEC0enoent~]eNOENT/enodev]eNODEV.enodata]eNODATA-enobufs]eNOBUFS,enfile]eNFILE+ enetunreach] eNETUNREACH* enetreset^ eNETRESET)enetdown<^eNETDOWN(endserviceentry_^endServiceEntryendprotocolentry^endProtocolEntryendo^Endoendnetworkentry^endNetworkEntry endhostentry^ endHostEntryendby1_endBy1&'endby1_endBy$%enctypeQ_enctype!"# encodefloat{_ encodeFloat enclosingmark_ EnclosingMark enametoolong_ eNAMETOOLONG  emultihop_ eMULTIHOPemsgsize`eMSGSIZEemptysamplevar$`emptySampleVaremptyrD`EmptyRemptyn\`emptyNemptymt`emptyMemptyl`EmptyLemptyfm`emptyFMemptydef`emptyDef emptyattr` emptyAttremptyaEmptyempty emphasizeta emphasizeemlinkaeMLINKemfileaeMFILEemapaemapemacsaEmacseloopaeLOOP elinit belInit elgets#belGets elfilter=belfilterelemsVbelems{|}~  elemindicesb elemIndicesyz  elemindexendb elemIndexEndx elemindexb elemIndexvwelemfmcelemFMelementscelementsuelemat9celemAttelemOcelem~qrseksimplecekSimpleeklistcekListekfusedcekFusedeithercEitherF|oeither}peisdirceISDIReisconndeISCONNeio*deIOeinval?deINVAL eintrVdeINTR einprogressrd eINPROGRESS eilseqdeILSEQ eidrmdeIDRM ehostunreachd eHOSTUNREACH ehostdownd eHOSTDOWN eftypedeFTYPE efiltereefilterefbig0eeFBIG efaultGeeFAULT eexist_eeEXIST edquotweeDQUOT edomeeDOM editoreEditor editlineeEditLine EditlineDeditlineEedirtyeeDIRTY edgesm fedgesMedges"fedgesnedge;fEdgem edestaddrreq[f eDESTADDRREQ edeadlkzfeDEADLK econnresetf eCONNRESET econnrefusedf eCONNREFUSED econnabortedf eCONNABORTED ecommfeCOMM echildgeCHILD ebusy(geBUSY ebadrpc@geBADRPC ebadmsgZgeBADMSG ebadfrgeBADF eastergEasterCealreadygeALREADY eagaingeAGAIN eafnosupportg eAFNOSUPPORT eadvgeADV eaddrnotavailh eADDRNOTAVAIL eaddrinuse7h eADDRINUSE eaccesSheACCES e6ghE6le3'xhe3'e3he3e2bighe2BIG e12hE12ke'he'ehe dyntypereph dynTypeRepjdyngraphiDynGraph dynexceptions&i dynExceptionsi dynexceptionKi DynExceptionhdynapplykidynApplygdynappidynAppfdynamiciDynamicBedynidyn duptchanidupTChandupchanidupChan dummysocketoption__jDummySocketOption__ddual7jDualbcdtermPjdterma dropwhilevj dropWhile{_` droptrailingpathseparatorjdropTrailingPathSeparator dropfilenamej dropFileName dropextensionskdropExtensions dropextensionBk dropExtension dropdrivehk dropDrive dropkdropz\]^ drawtreekdrawTree[ drawforestk drawForestZ doublequotesk doubleQuotes  doubleprimll DoublePrimL  doublePrimL  doublecolonWl DoubleColon doublearrowyl DoubleArrow doubleldouble dotdotlDotDot dotldot  dontroutel DontRouteYdonelDone dominatorsm DominatorsAdom3mdomdoindentJmdoIndent doesnotexisterrortypesmdoesNotExistErrorType doesfileexistm doesFileExistXdoesdirectoryexistmdoesDirectoryExistWdoemDoE doE docnDoc ~dlist(ndlistV divmod'LndivMod'UdivmodendivMody dividebyzeron DivideByZeroST div'ndiv'Rdivndivxdiscardndiscard disabledndisabled directoryo Directory? directory@dir7odir dijkstraNodijkstra digittointlo digitToIntQdigitodigit } diffutctimeo diffUTCTime diffuarrayo DiffUArray difftimeoDiffTime differencewithkey pdifferenceWithKeyOPdifferencewith:pdifferenceWithMN differencebp differenceIJKLdiffdayspdiffDays diffclocktimespdiffClockTimesH diffarrayp DiffArray diffabsolutetimepdiffAbsoluteTime|diffqDiff> diehorribly1q DieHorribly dfswith'PqdfsWith'dfswithkqdfsWithdfsm'qdfsM'dfsmqdfsMdfsgtqdfsGTdfs'qdfs'dfsqDFS=dfsGdffwith'qdffWith'dffwithrdffWithdffm+rdffMdff'?rdff'dffRrdffFdeviceidmrDeviceID derefweakr deRefWeak derefstableptrrdeRefStablePtrEdenormalrDenormalCD denominatorr denominatorB demandings demanding delnodesm4s delNodesM{delnodesQsdelNodeszdelnodemmsdelNodeMydelnodesdelNodex delmapnodesms delMapNodesMw delmapnodess delMapNodesv delmapnodems delMapNodeMu delmapnode t delMapNodet delmapedgesm/t delMapEdgesMs delmapedgesRt delMapEdgesr delmapedgemtt delMapEdgeMq delmapedget delMapEdgepdelledgetdelLEdgeo delfromfmt delFromFM deletemint deleteMin>?@A deletemaxu deleteMax:;<=deletefirstsbyKudeleteFirstsBy9 deletefindminru deleteFindMin5678 deletefindmaxu deleteFindMax1234 deletecookieu deleteCookie0 deletebyudeleteBy/deleteatvdeleteAt.delete/vDELETE delete()*+,-deledgesivdelEdgesndeledgevdelEdgemdelvdel deg'vdeg'ldegvdegkdefoptvdefOpt deflistvdefList' deflatedwDeflated ijdefineCwdefine& defaultwindowbitsrwDefaultWindowBits ghdefaultuseragentwdefaultUserAgent defaultstrategywDefaultStrategy efdefaultprotocol xdefaultProtocol$%defaultparsemode;xdefaultParseMode defaultnormalizerequestoptionsyxdefaultNormalizeRequestOptions defaultmodex defaultMode defaultmemorylevelxDefaultMemoryLevel cd defaulthints y defaultHints#defaultgraphsize5ydefaultGraphSizedefaultgetrequest_cydefaultGETRequest_" defaultgetrequestydefaultGETRequest! defaultfixityy defaultFixity bdefaultexecoptydefaultExecOptadefaultdecompressparams zdefaultDecompressParams _`defaultcookiefilterbzdefaultCookieFilter  defaultconfigz defaultConfigdefaultcompressparamszdefaultCompressParams ]^defaultcompressionzDefaultCompression [\defaultcompopt3{defaultCompOptZdefaultchunksize]{defaultChunkSizeYdecq}{DecQ Xdecompresswith{decompressWith Wdecompresswindowbits{decompressWindowBits UVdecompressparams|DecompressParams| } ~  QRSTdecompressbuffersize]|decompressBufferSizez { OP decompress| decompressx y MNdecomp|DecompL decodeinput| decodeInputw decodefloat| decodeFloatw decimalnumber} DecimalNumberdecimal>}decimalv Kdecember]}Decemberdect}Decu J debugstream} debugStream debughtml} debugHtmlt debugbytestream}debugByteStream debug_tests~ debug_testss debug~Debug<deadlock9~Deadlockq r ddefa~ddefn o p dayofyeartomonthandday~dayOfYearToMonthAndDayIdayfractiontotimeofday~dayFractionToTimeOfDaym day~Dayl datatyperep dataTypeRep datatypeof/ dataTypeOf datatypenameQ dataTypeNamedatatypeconstrsxdataTypeConstrsdatatypeDataTypedatatoqadataToQaH datatopatq dataToPatQG datatoexpq dataToExpQFdatarepDataRepdataname-DataNameEdatagramIDatagram datadbDataDj CdataDk DdataconiDataConIi B datacast2 dataCast2  datacast1̀ dataCast1 dataData; dashpunctuation DashPunctuation dag4')dag4'Adag4>dag4@dag3'Sdag3'?dag3hdag3>d3'{d3'=d3d3<d1'd1';d1d1: cyclicsccŁ CyclicSCCcycle߁cyclevh 9cyc3cyc38cxtqCxtQg 7cxt+Cxte 5cxtf 6 cwstringlenV CWStringLend cwstringuCWStringc cwcharCWcharb customCustoma cushortCUShort` curry؂curryucurrencysymbolCurrencySymbolculongCULong_ cullong4CULLong^ cuintptrOCUIntPtr] cuintmaxkCUIntMax\ cuintCUInt[ cucharCUCharZ ctyearctYearctyday˃ctYDayctwdayctWDaycttznamectTZNamecttzctTZcttype+ctType ctsubtypeF ctSubtypectsec`ctSec ctpicosecz ctPicosec ctparameters ctParametersctmonthctMonthctmin҄ctMinctisdstctIsDSTctimeCTimeY cthourctHourctday0ctDay cstringlenK CStringLenX cstringhCStringW cssizeCSsizeV csizeCSizeU csigatomic CSigAtomicT cshortυCShortS cscharCSCharR createmixentrydom createMixEntryDomQ createdirectoryifmissing?createDirectoryIfMissingcreatedirectoryrcreateDirectorycreateandtrim'createAndTrim'P createandtrim† createAndTrimO createcreateN cputimeprecisioncpuTimePrecisioncputime&CPUTime:cptrdiffACPtrdiffM cpidYCPidL countsoCountsI J countsK countcountE F G H 34coshÇcoshtcosևcoss copyright copyrightB C D copyfilecopyFile copybytes4 copyBytesA copyarrayR copyArray@ copykcopy> ? 2coordscoords; < = cookievalue cookieValue: cookiesecure݈ cookieSecure9 cookiepath cookiePath8 cookiename' cookieName7 cookieexpiresN cookieExpires6 cookiedomainw cookieDomain5 cookieCookie93 4 convertedtohandleЉConvertedToHandleconttContT1 2 controlControlcontinue)Continue0 contextmEcontextM1context'aContext'context|Context8/context0 contenttype ContentTypecontentencodingՊContentEncodingcontentcontent- . / containers$ containers7cont>ConT) -Cont6* + conT, .consymxConSym( consumedConsumed& ' constrtype constrType constrrepӋ ConstrRep constrRep constrindex constrIndex constrfixity% constrFixity constrfieldsI constrFieldsconstrgConstrconst~Constconstrcons'cons'% ,conscons# $ +conqConQ" *conpConP (conP! ) connerror# ConnErrorconnecttocgiscriptJconnectToCGIScript connecttoq connectToqconnectorpunctuationConnectorPunctuation connectionč Connection connected ConnectedconnectCONNECT connect conjugate( conjugateconindexEConIndexconid^ConId configsizey configSize configmaxtest configMaxTest configmaxfailŽ configMaxFail configevery configEveryconfigConfigconeConE &conE 'condmgt'GcondMGT'condmgtbcondMGTcondezCondE $condE %condboxCondBox condbinbox CondBinBox concurrent Concurrent45 concatmap concatMapp  # concathtml< concatHtml   concatdconcato  "conCon ! compresswith compressWith  compresswindowbitscompressWindowBits compressstrategycompressStrategy compressparamsRCompressParams    compressmethodcompressMethod  compressmemorylevelϑcompressMemoryLevel   compresslevel compressLevel compressionstrategy?CompressionStrategy compressionlevelzCompressionLevel  compressbuffersizeĒcompressBufferSize  compresscompress   compoption  CompOption  componentsd components compnosub compNoSub compnewline compNewlinecomplexComplex3completionmatches completionMatchescomplete2complete complementbitS complementBit complementv complementcompilerversioncompilerVersion compilername” compilerNamecompilecompilecompignorecasecompIgnoreCase compextendedD compExtendedcompeqCompE compE  compblank compBlankcompatɕCompat2 comparing comparingcomparecomparencompactcompact commentstartA commentStart commentsicomments commentline commentLine  commentend commentEnd  commasep1ؖ commaSep1 commasepcommaSep commaComma comma combineEcombine  combinatorj Combinator01columnColumn colspancolspan colsҗcols colorcolor colon Colon colon collect<Collectcollectcolgroupdcolgroup colcol coffCOff coerceCoerce/codebaseΘcodebase codecode coarbitrary coarbitrarycmode-CMode clr595Dclr595clr528']clr528'clr528vclr528clr508'clr508'clr508clr508clr489'clr489'clr489ڙclr489clr486'clr486'clr486 clr486clr479'%clr479'clr479>clr479closepunctuation`ClosePunctuationclosedClosedclosecloseclongCLong clocktime͚ ClockTime clocktick ClockTick clockClock.cllongCLLong clickmap6clickmap cleartix^clearTix clearhistory~ clearHistoryclearbitclearBitclearclear cldoubleԛCLDouble clauseqClauseQ clause Clause clause classopiBClassOpI  classindente classIndent classifyclassifyclassiClassI classdClassD classD classClass()*+,- ckversion ckVersionckvalue/ckValueckpathHckPathckname`ckNameckdomainzckDomain ckcomment ckCommentcjmpbufCJmpBuf citeʝcite cisciscintptrCIntPtr cintmaxCIntMax cint0CInt cinoDCIno chunkoverheada chunkOverheadchunkedtransferchunkedTransfer chunkChunkchunkchstale̞chStalechrealmchRealmchrChr chrchqopchQopchopaque6chOpaquechoosePchoosechoiceqichoiceQ choicempchoiceMp choicechoice chnonceßchNonce checkvaldef checkValDef checkunqual checkUnQual checkrevdecls' checkRevDecls checkprecI checkPrec checkpatternj checkPattern checkinvariantcheckInvariantcheckinstheadercheckInstHeader checkexprݠ checkExpr checkedchecked checkdataheader'checkDataHeader checkcontextN checkContext checkclassheadervcheckClassHeader checkclassbodycheckClassBody checkbox¡checkbox checkbolcheckBOL checkassertion checkAssertion check+check chdomainHchDomaincharsetcCharsetcharposCharPos charparser CharParser charliteral charLiteral charlߢCharL charL charisrepresentablecharIsRepresentable character> Character char8XChar8&'charqChar#$% char chanChan" challengẹ Challenge chalgorithm chAlgorithm chaldigest  ChalDigest chalbasic, ChalBasicchainr1Hchainr1 chainrichainr chainl1chainl1 chainlchainl cgivars̤cgiVars cgitCGIT cgiresult CGIResult cgirequestbody/cgiRequestBody cgirequestW CGIRequest} ~  cgioutput CGIOutput| cginothing CGINothing{ cgiinputs cgiInputsy z cgigetߥcgiGetx cgiaddheader cgiAddHeaderw cgiCGI v cgi!cfun<CFuncfposQCFposu cfloathCFloatt cfileCFiles centercenterr censorcensor cellspacingϦ cellspacingo p q cellpadding cellpaddingl m n cell$cellk ceiling?ceilingmcdoubleYCDoublej cdevpCDevi cclockCClockh ccharCCharg ccallCCalle cCallf  catmaybes catMaybescategoryCategory catchjust catchJustd catchio_CcatchIO_c catchio^catchIOb catchesxcatches~ catcherror catchErrorcatchdyncatchDyn}catchcgiϨcatchCGI|a catchcatchlz{` cat cat_  caststuarray+ castSTUArray^ caststableptrtoptrUcastStablePtrToPtrycastptrtostableptrcastPtrToStablePtrxcastptrtofunptrcastPtrToFunPtrwcastptrԩcastPtrv castiouarray castIOUArray] castfunptrtoptrcastFunPtrToPtru castfunptrC castFunPtrtcastforeignptrgcastForeignPtrscastchartoccharcastCharToCChar\ castcchartocharcastCCharToChar[ cast٪castr casesensitive caseSensitiveZ casescasesY caseindent7 caseIndentX caseeRCaseEV caseEW caption}captionqS T U canonicalizepathcanonicalizePathpcallconvЫCallconvR callcccallCCcallbackreadcharcallbackReadCharcallbackhandlerinstallBcallbackHandlerInstallcallbacklCallbackcalendartimetostringcalendarTimeToStringo calendartime CalendarTimemncalendarCalendarc_strlenc_strlenQ c_reverse c_reverseP c_minimum; c_minimumO c_maximumY c_maximumN c_intersperse{ c_intersperseM c_free_finalizerc_free_finalizerL c_countǭc_countK c2wݭc2wJ c'c'cCc bytestring ByteString lG H I  bytestring bytecountj ByteCountF buttonbuttonC D E bulletbulletk@ A B buildtime̮ buildTime? buildgrbuildGrbuildgbuildGjbuildexpressionparser(buildExpressionParser> buildRbuild buffertypem BufferTypei bufferops bufferOpshbufferopBufferOpfg buffermodeϯ BufferModee buf_tostr buf_toStrd buf_splitat buf_splitAtcbuf_span-buf_spanbbuf_snocIbuf_snocabuf_islinetermkbuf_isLineTerm` buf_isempty buf_isEmpty_buf_hputbuf_hPut^ buf_hgetlineϰ buf_hGetLine]buf_hgetcontentsbuf_hGetContents\buf_hgetbuf_hGet[ buf_fromstr: buf_fromStrZ buf_emptyZ buf_emptyY buf_concaty buf_concatX buf_append buf_appendWbsdBSDbrowsertimestampѱbrowserTimestampV browserstate BrowserStateUbrowserrequesturi"browserRequestURITbrowserrequestidObrowserRequestIDSbrowsereventtype{BrowserEventTypeQbrowserEventTypeR browserevent BrowserEventOP browseraction BrowserActionNbrowserBrowserbrowsebrowseM broadcast6 BroadcastLbreaksubstringYbreakSubstringK= breakendbreakEndJ< breakbyte breakByteIbreakbreakkGH: ; bracketsbrackets8 9 bracketonerrorbracketOnErrorEF7 bracket_?bracket_CD6 bracketbbracketAB5 bracesbraces3 4 brbr@0 1 2 boxlabelŴBoxLabel/ boundsߴBounds?bounds. boundedBoundedjboundBound>bottom3bottom- bordercolorP bordercolor=* + , borderyborder<' ( ) boolBoolboldbold;$ % & bodyqеBodyQ# bodyBody body: ! " blueblue9 blocktable5 BlockTable blockquoteY blockquote8   blockedondeadmvarBlockedOnDeadMVar567  blockedindefinitely̶BlockedIndefinitely234  blockedblocked1 blockbuffering'BlockBuffering0blockFblock./ blankexecoptk blankExecOpt blankcompopt blankCompOptblackblack- bitsizeȷbitSize,bits߷Bits+bitbit* bindsocket bindSocket)binds*BindS bindS bindqSbindQbindkeykbindKeybindebindE(binboxBinBox bigbig'   bgcolorѸbgcolor& bftbftbfswithbfsWithbfsnwithbfsnWithbfsn4bfsnbfsGBFSbfsbfencbfenbfevbfebetweenbetween betaBETA bestspeedĹ BestSpeed  bestcompressionBestCompression  besides"besides% beside?beside$  before_beforebdotbdo  bccBCCbcc#batchBatchbasicsʺBasicsbasicBasic basefontbasefont" baseBase base ! barOBar backslashg Backslash backquote BackQuote background background  b'b'bϻb auusername auUsernameauthtypeauthType authority% Authority authority authdigestS AuthDigest authbasicr AuthBasicausiteauSiteaurealmauRealmauqop¼auQop aupasswordݼ auPasswordauopaqueauOpaqueaunonceauNonceaugust3August augmentgraphQ augmentGraphaudomainqauDomain aualgorithm auAlgorithmatsrclocatSrcLoc atomicmodifyiorefԽatomicModifyIORef atanhatanhiatan2 atan2hatan!atangat3At asyncexceptionsPasyncExceptions asyncexceptionyAsyncException    asumasumastypeofasTypeOffassocsվassocs assocright AssocRight  assocnone AssocNone  assocleft> AssocLeft assoc\Assoc  assertstring assertString assertions assertionsassertionpredicate˿AssertionPredicate assertionPredicate assertionpredicableAssertionPredicable assertionfailedBAssertionFailed assertionv Assertion assertfailure assertFailure assertequal assertEqual assertbool assertBool assertable Assertable assert!assert aspBAsP asP asksfasksaskyaskasinhasinheasinasindartpointArtPoint arrowzero ArrowZeroarrowtArrowT arrowT  arrowplus! ArrowPlus arrowmonad@ ArrowMonad arrowloopc ArrowLoop arrowchoice ArrowChoice arrowapply ArrowApplyarrowArrowarrayexceptionArrayException array Arrayarray arr4arr arithseqeL ArithSeqE } arithSeqE ~arithexceptionsarithExceptionsarithexceptionArithException arguments argumentsargorderArgOrder argdescrArgDescr area0area archiveSarchive archvarch arbitrary Arbitrary arbitraryaquaaqua aprilAprilapptAppT {appT |appse appsE zapproxrational/approxRationalappprecPappPrecy applywith'm applyWith' applywith applyWithapply'apply'applyapplyappliedAppliedx applicative Applicativeappletapplet appendo2appEndo appendmodeO AppendMode appendfileo appendFilec wappendappend vappeAppE tappE uappappapapanytokenanyToken sanychar0anyChar rany_portOaNY_PORTanyfAnyanyb qannotateioerrorannotateIOError anglesangles pandandaanchoranchor amap"amap alternative= Alternative alternative alterjalteraltcodealtcode altalt alreadyinuseerrortypealreadyInUseErrorType alreadyexistserrortypealreadyExistsErrorType alphanum9alphaNum oalphaVALPHA alphanalonewAlonemalltextsubmatchesAllTextSubmatchesklalltextmatchesAllTextMatchesij allsubmatches AllSubmatchesgh allocabytes allocaBytes allocaarray0> allocaArray0 allocaarraya allocaArray alloca~alloca allocAlloc allmatches AllMatchesefallAllall` dalinkalink alignptr#alignPtr alignment@ alignmentalignZalign aliases~AliasesalgrepAlgRep algorithm Algorithm algmd5sess AlgMD5sessalgmd5AlgMD5 algconstr AlgConstr ai_v4mapped( AI_V4MAPPED ai_passiveI AI_PASSIVEai_numericservmAI_NUMERICSERVai_numerichostAI_NUMERICHOST ai_canonname AI_CANONNAMEai_allAI_ALL ai_addrconfig AI_ADDRCONFIGafteraftercafile,afile af_x25OAF_X25 af_wanpipeo AF_WANPIPE af_unspec AF_UNSPEC af_unixAF_UNIX af_snaAF_SNA af_security AF_SECURITY af_routeAF_ROUTE af_rose2AF_ROSE af_pppoxQAF_PPPOX af_packetr AF_PACKET af_netrom AF_NETROM af_netbeui AF_NETBEUI af_isdnAF_ISDN af_irdaAF_IRDA af_ipxAF_IPX af_inet61AF_INET6 af_inetPAF_INET af_econetp AF_ECONET af_decnet AF_DECnet af_bridge AF_BRIDGE af_bluetooth AF_BLUETOOTH af_ax25AF_AX25 af_atmsvc AF_ATMSVC af_atmpvc> AF_ATMPVC af_ash]AF_ASH af_appletalk AF_APPLETALK advanceptr advancePtr adjustwithkey adjustWithKeyadjustadjustadjAdjb addutctime! addUTCTime addtrailingpathseparatorOaddTrailingPathSeparator addtofm~addToFMaddtoclocktimeaddToClockTimeaddrsockettypeaddrSocketType addrprotocol addrProtocoladdrinfoflagimplementedaddrInfoFlagImplemented addrinfoflagK AddrInfoFlagaddrinfokAddrInfo addrflags addrFlags addrfamily addrFamilyaddressaddress addrcanonname addrCanonName addraddress addrAddressaddmvarfinalizer?addMVarFinalizer addjulianyearsrolloverqaddJulianYearsRollOveraaddjulianyearsclipaddJulianYearsClip`addjulianmonthsrolloveraddJulianMonthsRollOver_addjulianmonthsclipaddJulianMonthsClip^ addhistory9 addHistory]addgregorianyearsrolloverhaddGregorianYearsRollOver~ addgregorianyearsclipaddGregorianYearsClip} addgregorianmonthsrolloveraddGregorianMonthsRollOver| addgregorianmonthsclipaddGregorianMonthsClip{ addforeignptrfinalizerenvTaddForeignPtrFinalizerEnvaddforeignptrfinalizeraddForeignPtrFinalizer addfinalizer addFinalizerz addextension addExtensionx y adderrormessageaddErrorMessagew \adddefun7addDefun[adddaysRaddDaysv addcookien addCookie addauthority addAuthorityaddattrsADDATTRSs t u addabsolutetimeaddAbsoluteTimeZ acyclicscc AcyclicSCCactionactionp q r acronymDacronymm n o acoshdacosh_acosyacos^accumfmaccumFM accumarray accumArrayl accumaccumk acceptable AcceptableacceptAcceptaccept] absolutetime- AbsoluteTimeY absoluteseekQ AbsoluteSeekabslabs\abovesabovesj aboveaboveh i abbrabbre f g abb'abb'XabbabbWab'ab'Vab abUa'a'Ta*aS^^9^^[^>>J^>>^<<\^<<^l^Z\\{\\z{|}~@?=@?=d @?@?c @=?@=?b >||>||a >|>|` >>^>>^y>>>>>>wx>>=>>=Yv_ >>3>>Xu^ >=>L>=>t>=]>=Ws><r~>>Vq=~~=~~R=~=~Q==>==>p====Uo=<<=<<Tn<||><||>] P<|?><|?>\ O<|>&<|>m[ N<|?<|lPZ M<>e<>Y L<=eS T U <.><.>Q R <-><->dP <+>.<+>cO K<++H<++M N <*>^<*>b<**>q<**>a<*<*`<$?><$?>L J<$><$>_<$$><$$>K I<$<$^<<R]:>:>\:=:=J :<:<[:+':+Z/=7/=QY//K//I /Z/P.||j.||H .|.|.|.X.|.|G .&..&.W..OUV-||-||F -|-|E --N++++++ST@ A B C D ++++MR+2+L*>A*>Q***R***P**c**K*r*J&&&&&&O&&&&IN&&H%%M$||$||? $|$|> $+$$+$= G$$$$< F$!$!H$$GL!!1!!FK!D!HIJ8 9 : ; < ؏ & c j G I l  ! ~ {~ } | g| y x v s s ep m m fm ,m :i h lh h g Yg @c Ra Z W sV 2R Q O O ML K yK K J ?J I B A ' & f& # S# " " (" ! L!      '      D         % m    g     W v  E }wHt 4S]D"~!x}w>.m\p2(9Wk#߻dy-[@@\( #6|ǡ^Tzdd"ȏmĎ֍~̌S~%X·jO=7~yvtht.tssr rpoinn#mAi"gcb``_P_\"\[cY1WVUSR O4ML6JIHGHGEIEDDsBA?W><;<;Y;:p:9,98777/77P5 54432262!10l0,e,,+A+*'o'&f&%$=$w[|o Q=rtwZ>dPIo1Wf"jg&0+%\dO*:;@J.1:l~32hw.ɵXk{N^66$DǢgӠ +tƖT_Ӎn֋gQMj#C\$~| |l{zzlyxuxwmlklbkjihg}gf^fdcc2ba{aa`_ _^^]][Z[Z7ZY4YWVUTtTSRQ*QPoH HGGME[CB?*?~>0=<<(;":98(8\766165W5'54 2/..{,",+*('&W&%% %$#"m"!,MDr?  ]  GJ-h>- nMFm6M?I/eOXe0xA g AVn-KuWJ W ?k%YM};m+]a Q;Si pZLٮiάO=_CܡZC͙k3ɘgdo>Kƒ~bqiԋ?}^ʅك1(~?~~}(}|T|{{*{zzx xwvIvuwuuts;srTrrqqppnnn0njgf feLe/dc}cb%baaIa``;`__L\XXWUT#SPOMIIHHFE EiDCWCB&BA$A@@@??>=u=<i<;';:F30.|-0,+X+`*)Y('%Z%$#!#! sS  "5 K/5"QEf:.r83bncCK[%hBRfo?(r1rP>9 -h=x3rieƼMҺV*;G(Zܠ-J<hdHx̓8PMu1VYWg ~|2|{hzy>yxtwvuu2usrqcp(o~nlkizfuc`^]s]]D\[ZYYYqXTWJUSR{Q)QP[PO#NMM7LKNK$KJJJ&HFFXE|DBBA?><;:98z8 87T76a65i554T443*32W211E100N/..>.4-,k,,+***$)Y(%]#"",!  bBmg q[  0 W  uWRb>x2 1%Mqy{L,z;j{Zv<$cϿHLYѴ'Ѭ7l}-d~¦xr+K=BÜU8@_׍ `:ҁ4B"~w}{ zIxTvut#tsirOkih%hEggbfe2edcaz`4_^]mNNRMMHGGFqEDC'CB3BVAf@?>>=955Z422M/>.--,,+@*(''d&K%$$#S#"! {WD(  h  n  ; a$'[R*V ).W`/KgUO^8!Cr48[M ?ſcٷ@װ t:<ʥc&PG֟^ל9I ˘a/%ŕɑ'wЉ['ֆz[ge~}|zzyuwvuvFvvu}uttets[s!srOrqwqqmm5ml?llVkjvjih]hg$ge.ekdc3cbba`Y`_^a^][XYJX_VSRR'MG*E"BA=:8x8/877W76w64v3 20/ .,,;*'&%F#5!@,%'cH0 E  M 2 t o 8aS U]d )VKVFz}H2,}Rd$@d|Wi<Dֿl((ضٵr&$MVF 2«>_!ըyɢ!ݚDWCiގL8Ŋp3=q}{ywusroJmjhfe c^#\=[ZY|X#WUSWRPNrNMKK,KJLJIpI0IqHDGFtFED DBA@*@??{>q=;:)9r7:74Q3e210D0 /b..-&-,,S,+*6*('&%$#" !P"hUrO%U4&1@ - Z  E   f =H{2Eq|&_;z\v(tKS.G]!k$PuShD9u$^e#mUw/8e Kce&gø"߰lݬp&;[R/ƥucrџ})ߞ?Vܖŕ!qJ-?6|y}yxvxvGuutssrgrq`q&qxpkoun;nmm^lk9jii`iAhgg8gfTfeec\S\ZMZYYXX'VU{UUzTT> > =~<;Y;:*:98887746554++\*)U){('&%$#"!!>  YRWOWzWp X  ?  ) 1  K fY\e^ y|9e0rk%mX(WuLP'CC_4lX%ѼǺH  Fd_"QKĬp(ݪשdx ʤN-ğL-uڗۖE܍ֈe@_q8~}}o|{zEzy yZxwXwvxvvmGmlkkj?j`iPhdg^feEeydd.cgbWaz`^ ]YVT;TSSOSRROkNM MLKJ4JIQIHwH HGxFFDRDCC!CBVBAfA@??\?>~=B=p<;;988?87u7776!65;4332200D0/x.,6*'$"vj^hWc;%d  F Ec<g{$w{R8\Os|NAJUS4A @13e)ygy#y#y[!ſQ*aZߠ[|(ʖP)|MČ;؋]Ȋceֆу^~}||zyxwwrrp|poookhg"fdnd2dc$c}baAa`k``_S_^^<^]n]\[x[zZYXfX^WVU,UTSRQMQOtN"NLKJJ/IYHHGSGFED=Cz@<g:98R754 3x0/.G,+)(0'=%# ")  hwc## C  \&/fzr$3bAF6&lfP^Nh:g7PZgqȷjЯ9_ެg"߫yتPXqƦ_ RԛY-5Ԏʍԋ_׉PɈB23,"=}I|{yuUu;qnmlkBk~jiithggxfe/eaM^[Y?YXXsWVBVUdUUT#ToSRPMxM"MLlL LKuK>KKJIGuEA@?>n=]<<;[;9=876o6/655a5544C443}3;322k2%211[1100I00/k//.a..-G-?,)+G)('$$#""!N!  0 Ju!&$E-gQL  Nb  B  x5<Vv64p>~:p,<R]?Sm(x*dX$H"jl|CSEq? o1izUg j.bzdڼq=;ͺYg̵q/ɦE|Pq E}šc?:eTs ?flՕ>:̌Ɉ$tS~~~}X}|l|{2{zzy|y6yxxwJwvZvuLts s/rAqptoHonnn5nmm,mjlkPkj%jieihhhg|g gfhfee\e.ednd dczc,cbb8baaLa=`__;_^^'^]o]7]\$[IY YWW@VTSRNRFQQPLPyNL(LKJJ(I|H_GBFE&EDDCC@?=J<;;:988r6H655443211W10c00/m//<.-d-.-C,+)(w((':&%z%%$T$#g#"w"d!  nL,ad6j    L tD&JmTjNf.4 x_FN}F2]l4$|(]pG]OerMw8GGlzG4@ܼ`Ceз9}Ĵ oӰׯٮ5,l ^`$`ЧFԦj,t6l.l4СE^2MȗNҖxĕi@CݑːE7ՎSLjI ˇMφSͅSׄUуQ݂Ru/m-~~U~ ~}}}7}zxQxxwwIw wvvuZusysCsrkrqqvp pmmllLllkkXkkjjLjgfYfed1dccMccbbCbaa``_^]\[C[#ZXXBWV<;o:98z8776c544(43321P0/.-K,+*S)'?' &$F$#r#"\"!!o! _  ^   | *  b  ^c br,%JK;W'kY/1G N:1j_ip=7`h%G?X)SFR{qgggajoڼO/@¹Na u)ݳEaɱ}1MHW1ު/_cjoţyZV TF*ԛz@[Øs)ߗ/ז#ɕwkSay)ǐw#Ïy17݌nHH݅}/WO~{z5zxwQwvmvtt:tsssrIrrqqp1po1onEnmmm mlMlkmk kSjihgOgf]f)fee=ed}ddc;ba&a`!`_J_^=^Z]\0\[[ZYYXMXWWVVUTTTbSR#R~QP0PYON8NUMALK=\=<?< ;:,:x98"8727Q6?54&4q32[21^10U0/..-o-d,+m+c**))( ('&&&W%$i$###""!L! @ YK 0ziaE,Q|j! (   B y M !   M +UT"A#Swer8W/}2u=8fr TV%jyj0DcyL4_s(BN(p&,Wȿ9$zRɸgA=Dӯ#Ku d:y<Ÿ ȝD2}qёȎ9gM TfK~7}{yxwew wvyv9vuuqu)uttit#tss_s#srrYrrqqIq qppCppo}o'olnnmvmlIlkskkj_jiigf%feFeddnd*dcc:cbb>ba``_^A^]H]\\[[L[[ZWWVVUPUUTzTSBSRR[R'RQPuPONNM$LKJDJIINIHGGFF*FcE ED]D(DCCICCBB9BAAA@I@??-?>a>-=<3<X;:z987-7654)4E322q2{-('#5!5'B[fu}t   G3 u[-\L^H.t,vWD.o$OQ1dl"QC%#/ Sʼpʹ8kTWįF2Z٨}!ŧiRv: ɟa3Ag<~. xcˊO)-ȆՅ`Ą4cY-~}~9~}}]} }|i|{{G{yBxww.wvv@vuuut>tsZsdcb__<_^l^]C]\\G\"[@ZYOYXXmXXV2V}UT}RCQONMLgLLKJH!HGyG%GEDqC!CBBOBAuAAe@@?s??>==;:9z9 988R88E743N3%2n1//-h,+$+*(' '&B%#V"{!  r///diQG] w  6  dN:bv?q~U"vR_v]i[<?3D5;h-GY,Cf/Pf2U n\Oh(Ľ`ڼRUͺ8^OSѳOڱ0>®Oڭ8YEҩ]{ m1:ڥz0آ| %=YT$\& NZa%R^hh`&\'~!}|{zyzzyWyxxwwMwwv(vututtEsyrMq!pnmEmlk;jhgfecaa `)_]\\\[Y[ZZFYXX3W?VUKUSSmQPOMONmNMuMKJIHuHGFFFDDBDCICBBA@e@@??K?>>5>=}=!=<{< <;6;:9298N87747:643w21`10/.-,M,")H&%$'$"H"4!!^n>BL   z &  l    A ei!FteF)rGO ; xIIa]'q O"-K?sWMIa9,nZJj,|}+ٽԻ2ƹMܶ;l)<g<KU0r0f:91kS׌ъˈe}{z@zyy0yxrx(xwvvqsnmMmllal/lkAkjoj)jiLi ihh6h|ggff9dc\cbb0baA`_S_^^\ \?[sZYqYYXuXVSS(SRJRQQXQ QPJPOfOON|NMLmKIgIHHGkGGFEcEaDCBB@?><j:F876T533^202/U.2+)(8(''B'&&^&"&%%%$p$$#D#""!:! ^ ME OMc~,^ XHJ6*~(~** ~   R   J   $ 0 Rn M 3  < V ~ ( T p s  . e ) L [ P r n  * > b H {  $ H P # ]   [ g  :  . s ' ۬  Ū C   9 ^  Ƙ z & Η t @ : ڔ . ܓ w g u # ь  F È 1 [  e  ˃  ~ | | V{ z tz z y ~y 6y x w ]w pv u u u xt s fs &s r [q &p n [l Fg f d c b 1b ] Z VX U S Q H 2H F E R? : 5 15 4 2 1 / . - U- s, 7, N+ * Y* ) ) }) H) ( 7( ' (' & % ($ " [" ! ! (!  F 6 c  8  " 6    f  V  p   R   H  U   M   W  i  m L  . o   u 7 u E O [ ! k  s n U ; M s  ) Q \ [ < ' ) Q  d  # &  q  6 > !  i ¾ [ ܷ s :  ܪ S  k % Ч b d b ] I A . ʟ 7 / Ɲ Q a k c % o m & [  ϑ u  I q  ލ ~  Z  Ћ =  v ^ x $  T  m  ~ } | { { z nz z gy y ~x Jx w hw v u t ; : 7 6 2 x2 . X. - 4- , 8, M+ * ) ) ' & B& % $% $ $ # r! :   >       3  ?   7    b     K j D    =   ^   l   P    c i u \ C  q ;  A p o n c X i / ; p  # l T  \ Y " v m  O J m  } 1 " <  b  Z  տ G E h C  } ÷  J K  a  q ! Ѯ U Y - Ŧ 1 Q 5 [ . ș b ՘ H   f H  | 7 { 6 | r 4  ׉ U   n T o 0 ~ $} | | { { z rz y 4y cx x >w u t Ss ^r r q !p o Co n En m 1m l [l k j j i 2i i h h g lg f f e d mc c b Lb a a ` *` _ _ ^ ^ ] .] \ 1\ [ *[ Z 2Z Y DY X X ;X W W V V |U -U dT T pS S Q cQ yP MP !P O EO O M L K 4K J H G F TF E aE %E C B I> = < <; : 8 98 7 6 `6 5 5 3 1 0 / . - "- e, + '+ f* (* j) ( P( ' & \& & % >% $ l$ @$ $ L# # " Q! |    =      E 0 Y    V  | " *  r ~  g K  *  %   ' t  & h T Y    ^ 5  m  f  0 } ` B d  ~ J ] % u ; ; V , p  V n u - B   F K   < t N & n ܳ X , o ܯ J ­   ݩ ը 3  s g Q ՚ ; T f M   O ˎ O F \ Ȉ 6 Ƈ V J v Ѓ * Ɓ b  ~ } Z} } { { z y x w w /w v Yv u u 8u t t t s ps s r Sr r q p 9n zm l el %l Yk j j i Gh g 3g jf f e nd {c b a a _ _ _^ ] 9] \ \\ [ [ [ Z Z Y X < R; "; v: 9 8 08 z7 6 J6 5 4 ;4 3 w3 0 j0 . w, * ) ) k( ' n& D& % % $ $ $ # >!  s /  ( O     $  P     I     _   ;  P  Q     C  &   e ' ' -  4    t   Q   W    I g , `     + V o " y P \ \    `  _ . F X l  4 i  _  | n ߷ l v 8  } D u ߲ g 7 ܰ  <  l j Ȣ \ W ֠ O ȟ 9 q   y y  6 ǖ < | Ɣ   d f 9 ݏ e ͎ f Z ( Ƌ ^ K q } ܅ E  X - #  s} } { z y 8v u @u t t Ys r r (r q Tq Vn m j Nj i i `i h h Oh h f f f e [d d c Qc a a _ %_ U^ ] 5] [ Z Y ~Y X AX W V V T S uR ,Q P gP O O XO O N CN M %M L L K I E mE X< 8 6 {5 >4 K2 h1 0 z/ - - 2- , , ,, + x+ + * * i* ) Y) ( ( ( ' (' & % "% $ $ # " y" A  Y %   P  k +  D    \      o   )   s o ! . H W  a   L  &   d  H T0tgSW`Ef1 F qz<!p I@ ]f9?qJy׿(ͻ;}۹ڸFkմ|nα:ӬA-(vʥ#9X+AZlx[\.:}a{j uƆ'݄6 f6рXT~}i}|W|{zyyxwrirq\q.qpGponnm`mlkk6jih8hg6gnfedc^cbdb+a`_h_^t^.^J\.ZPYYX9XpWnVyU\T xdfWith xdfWith ::  Graph gr => CFun a b [Node] ->  CFun a b c -> [Node] -> gr a b -> ([Tree c], gr a b)uUTGraphgrCFunab[]NodeCFunabc[]Nodegrab(,)[]Treecgrab xdfsWith xdfsWith ::  Graph gr => CFun a b [Node] ->  CFun a b c -> [Node] -> gr a b -> [c]jVVGraphgrCFunab[]NodeCFunabc[]Nodegrab[]c xdffWith xdffWith ::  Graph gr => CFun a b [Node] ->  CFun a b c -> [Node] -> gr a b -> [Tree c]lWWGraphgrCFunab[]NodeCFunabc[]Nodegrab[]Treec WrapErrortype  WrapError = (ReturnCode, String)WzThe return code will be retOk when it is the Haskell wrapper and not the underlying library generating the error message.  voronoiSet voronoiSet ::  Real b => Node ->  Voronoi b -> [Node]XXRealbNodeVoronoib[]Node Voronoitype Voronoi a = LRTree aY USGrtype USGr = SGr () ()LY updFM updFM ::  Ord a =>  FiniteMap a b -> a -> (b -> b) ->  FiniteMap a b ZYOrda FiniteMapababb FiniteMapab!applies function to stored entry  updateFlow  updateFlow :: (DynGraph gr, Num b, Ord b) => Path -> b -> gr a (b, b, b) -> gr a (b, b, b)+[ZDynGraphgrNumbOrdbPathbgra(,,)bbbgra(,,)bbbUpdate flow and residual capacity along augmenting path from s to t in graph G. For a path [u,v,w,...] find the node u in G and its successor and predecessor list, then update the corresponding edges (u,v) and (v,u) on those lists by using the minimum residual capacity of the path.  updAdjList  updAdjList :: (Num b, Ord b) => [((b, b, b), Node)] -> Node -> b -> Bool -> [((b, b, b), Node)]^]\NumbOrdb[](,)(,,)bbbNodeNodebBool[](,)(,,)bbbNodeGiven a successor or predecessor list for node u and given node v, find the label corresponding to edge (u,v) and update the flow and residual capacity of that edge's label. Then return the updated list.  unusedOffset unusedOffset :: Intp^j^Int unitunit ::  Ord a => a -> b -> Heap a b^^OrdaabHeapab udfs'udfs' ::  Graph gr => gr a b -> [Node]d_<_Graphgrgrab[]Node udfsudfs ::  Graph gr => [Node] -> gr a b -> [Node]__Graphgr[]Nodegrab[]Node udff'udff' ::  Graph gr => gr a b ->  [Tree Node]`S`Graphgrgrab[]TreeNode udffudff ::  Graph gr => [Node] -> gr a b ->  [Tree Node]'a`Graphgr[]Nodegrab[]TreeNode trctrc :: DynGraph gr => gr a b -> gr a ()azaDynGraphgrgrabgra()Finds the transitive closure of a directed graph. Given a graph G=(V,E), its transitive closure is the graph: G* = (V,E*) where E*={(i,j): i,j in V and there is a path from i to j in G}  topsort'topsort' ::  Graph gr => gr a b -> [a]bbGraphgrgrab[]a topsorttopsort ::  Graph gr => gr a b -> [Node]Zc2cGraphgrgrab[]Node toListtoList ::  Ord a => Heap a b -> [(a, b)]ccOrdaHeapab[](,)ab threadMaybe'  threadMaybe' :: (r -> a) ->  Split t i r -> Split t j (Maybe i) -> Split t j (Maybe a)dxdraSplittirSplittjMaybeiSplittjMaybea threadMaybe  threadMaybe ::  (i -> r -> a) ->  Split t i r ->  SplitM t j i ->  SplitM t j aeZeiraSplittirSplitMtjiSplitMtja threadList'  threadList' ::  Collect r c ->  Split t i r -> [i] -> t -> (c, t)jf+fCollectrcSplittir[]it(,)ct threadList  threadList ::  Collect r c ->  Split t i r -> [i] -> t -> (c, t)2gfCollectrcSplittir[]it(,)ct Threadtype Thread t i r = (t, Split t i r)}g sucMsucM :: GraphM m gr => Node ->  m (gr a b) -> m (Maybe [Node])4hgGraphMmgrNodemgrabmMaybe[]Node sucGTsucGT :: GraphM m gr => Node -> GT m (gr a b) (Maybe [Node])hhGraphMmgrNodeGTmgrabMaybe[]Node succFMsuccFM ::  Ord a =>  FiniteMap a b -> a ->  Maybe (a, b)iNiOrda FiniteMapabaMaybe(,)ab spTreespTree :: (Graph gr, Real b) => Node -> gr a b -> LRTree b2jiGraphgrRealbNodegrabLRTreeb splitParM splitParM ::  SplitM t i r ->  Split u j s -> SplitM (t, u) (i, j) (r, s) kjSplitMtirSplitujsSplitM(,)tu(,)ij(,)rs splitParsplitPar ::  Split t i r ->  Split u j s -> Split (t, u) (i, j) (r, s)kkSplittirSplitujsSplit(,)tu(,)ij(,)rs splitMinFM splitMinFM ::  Ord a =>  FiniteMap a b -> Maybe (FiniteMap a b, (a, b))lXlOrda FiniteMapabMaybe(,) FiniteMapab(,)abcombines splitFM and minFM  splitMinsplitMin ::  Ord a => Heap a b -> (a, b, Heap a b)\m%mOrdaHeapab(,,)abHeapab SplitMtype SplitM t i r = Split t i (Maybe r)m splitFMsplitFM ::  Ord a =>  FiniteMap a b -> a -> Maybe (FiniteMap a b, (a, b))|n)nOrda FiniteMapabaMaybe(,) FiniteMapab(,)abcombines delFrom and lookup  Splittype Split t i r = i -> t -> (r, t)n spLength spLength :: (Graph gr, Real b) => Node -> Node -> gr a b -> bo_oGraphgrRealbNodeNodegrabb sp sp :: (Graph gr, Real b) => Node -> Node -> gr a b -> PathCp pGraphgrRealbNodeNodegrabPath sizeFMsizeFM ::  Ord a =>  FiniteMap a b -> IntppOrda FiniteMapabInt SGrSGr ::  GraphRep a b -> SGr a b*qqGraphRepabSGrab SGrdata SGr a bXq sccscc ::  Graph gr => gr a b -> [[Node]]qqGraphgrgrab[][]Node runGTrunGT ::  Monad m => GT m g a -> m g -> m aer7rMonadmGTmgamgma RTreetype RTree = [Path]r ReturnCodedata  ReturnCoderReturnCode is an enumerated CInt, corresponding to the error codes from man 3 regex:
  • retBadbr (REG_BADBR) invalid repetition count(s) in { }
  • retBadpat (REG_BADPAT) invalid regular expression
  • retBadrpt (REG_BADRPT) ?, *, or + operand invalid
  • retEcollate (REG_ECOLLATE) invalid collating element
  • retEctype (REG_ECTYPE) invalid character class
  • retEescape (REG_EESCAPE) \ applied to unescapable character
  • retEsubreg (REG_ESUBREG) invalid backreference number
  • retEbrack (REG_EBRACK) brackets [ ] not balanced
  • retEparen (REG_EPAREN) parentheses ( ) not balanced
  • retEbrace (REG_EBRACE) braces { } not balanced
  • retErange (REG_ERANGE) invalid character range in [ ]
  • retEspace (REG_ESPACE) ran out of memory
  • retNoMatch (REG_NOMATCH) The regexec() function failed to match
 removeDel removeDel :: IOArray Node Bool -> Adj b ->  IO (Adj b)%xwIOArrayNodeBoolAdjbIOAdjb_filter list (of successors/predecessors) through a boolean ST array representing deleted marks regexecregexec :: Regex ->  ByteString -> PIO (Either WrapError (Maybe (ByteString, ByteString, ByteString, [ByteString])))y.yRegex ByteStringIOEither WrapErrorMaybe(,,,) ByteString ByteString ByteString[] ByteStringRegexdata RegexyA compiled regular expression.  recMGT' recMGT' ::  Monad m =>  (s -> Bool) -> GT m s a ->  (a -> b -> b) -> b -> GT m s bzzMonadmsBoolGTmsaabbbGTmsb recMGT recMGT ::  Monad m => (m s -> m Bool) -> GT m s a ->  (a -> b -> b) -> b -> GT m s b{j{MonadmmsmBoolGTmsaabbbGTmsb reachable reachable ::  Graph gr => Node -> gr a b -> [Node]S|%|GraphgrNodegrab[]Node rdfs'rdfs' ::  Graph gr => gr a b -> [Node]||Graphgrgrab[]Node rdfsrdfs ::  Graph gr => [Node] -> gr a b -> [Node]e}1}Graphgr[]Nodegrab[]Node rdff'rdff' ::  Graph gr => gr a b ->  [Tree Node]}}Graphgrgrab[]TreeNode rdffrdff ::  Graph gr => [Node] -> gr a b ->  [Tree Node]~U~Graphgr[]Nodegrab[]TreeNode rangeFM rangeFM ::  Ord a =>  FiniteMap a b -> a -> a -> [b]2Orda FiniteMapabaa[]bapplies lookup to an interval  queuePutList queuePutList :: [a] -> Queue a -> Queue a[]aQueueaQueuea queuePutqueuePut :: a -> Queue a -> Queue aT6aQueueaQueuea queueGetqueueGet :: Queue a ->  (a, Queue a)̀Queuea(,)aQueuea queueEmpty queueEmpty :: Queue a -> Bool2QueueaBool Queuedata Queue ab predFMpredFM ::  Ord a =>  FiniteMap a b -> a ->  Maybe (a, b)΁Orda FiniteMapabaMaybe(,)ab orP orP ::  (a -> Bool) ->  (b -> Bool) -> (a, b) -> BoolvaBoolbBool(,)abBool Node Node :: a -> b ->  [Heap a b] -> Heap a b2ab[]HeapabHeapab Node Node :: Int ->  FiniteMap a b -> (a, b) ->  FiniteMap a b ->  FiniteMap a b Int FiniteMapab(,)ab FiniteMapab FiniteMapab noComponents noComponents ::  Graph gr => gr a b -> IntkGraphgrgrabInt Networktype Network = Gr () (Double, Double)ل nearestPath nearestPath ::  Real b => Node ->  Voronoi b ->  Maybe Path~MRealbNodeVoronoibMaybePath nearestNode nearestNode ::  Real b => Node ->  Voronoi b ->  Maybe Node#RealbNodeVoronoibMaybeNode nearestDist nearestDist ::  Real b => Node ->  Voronoi b -> Maybe b†RealbNodeVoronoibMaybeb msTreeAtmsTreeAt :: (Graph gr, Real b) => Node -> gr a b -> LRTree bq7GraphgrRealbNodegrabLRTreeb msTreemsTree :: (Graph gr, Real b) => gr a b -> LRTree b҇GraphgrRealbgrabLRTreeb msPath msPath ::  Real b => LRTree b -> Node -> Node -> PathyRealbLRTreebNodeNodePath mkQueuemkQueue :: Queue aQueuea MkQueueMkQueue :: [a] -> [a] -> Queue afE[]a[]aQueuea minFMminFM ::  Ord a =>  FiniteMap a b ->  Maybe (a, b)ÉOrda FiniteMapabMaybe(,)ab MGTMGT :: (m g -> m (a, g)) -> GT m g awImgm(,)agGTmga mfmg mfmg :: (DynGraph gr, Num b, Ord b) => gr a (b, b, b) -> Node -> Node -> gr a (b, b, b)r DynGraphgrNumbOrdbgra(,,)bbbNodeNodegra(,,)bbbCompute the flow from s to t on a graph whose edges are labeled with (x,y,z)=(max capacity,current flow,residual capacity) and all edges are of the form a<---->b. First compute the residual graph, that is, delete those edges whose residual capacity is zero. Then compute the shortest augmenting path from s to t, and finally update the flow and residual capacity along that path by using the minimum capacity of that path. Repeat this process until no shortest path from s to t exist.  mf mf :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> gr a (b, b, b)>DynGraphgrNumbOrdbgrabNodeNodegra(,,)bbb;Compute the flow from s to t on a graph whose edges are labeled with x, which is the max capacity and where not all edges need to be of the form a<---->b. Return the flow as a grap whose edges are labeled with (x,y,z)=(max capacity,current flow,residual capacity) and all edges are of the form a<---->b  mergeAllmergeAll ::  Ord a =>  [Heap a b] -> Heap a bՏOrda[]HeapabHeapab mergemerge ::  Ord a => Heap a b -> Heap a b -> Heap a blOrdaHeapabHeapabHeapab maxFMmaxFM ::  Ord a =>  FiniteMap a b ->  Maybe (a, b)6Orda FiniteMapabMaybe(,)ab maxFlowgraph  maxFlowgraph :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node ->  gr a (b, b)$ϑDynGraphgrNumbOrdbgrabNodeNodegra(,)bbCompute the maximum flow from s to t on a graph whose edges are labeled with x, which is the max capacity and where not all edges need to be of the form a<---->b. Return the flow as a grap whose edges are labeled with (y,x) = (current flow, max capacity).  maxFlow maxFlow :: (DynGraph gr, Num b, Ord b) => gr a b -> Node -> Node -> bDynGraphgrNumbOrdbgrabNodeNodeb#Compute the value of a maximumflow  mapSndmapSnd :: (a -> b) -> (c, a) -> (c, b)qab(,)ca(,)cb mapFstmapFst :: (a -> b) -> (a, c) -> (b, c)ab(,)ac(,)bc LRTreetype LRTree a = [LPath a]X lookupFMlookupFM ::  Ord a =>  FiniteMap a b -> a -> Maybe bÕOrda FiniteMapabaMaybeb levelnleveln ::  Graph gr =>  [(Node, Int)] -> gr a b ->  [(Node, Int)]gGraphgr[](,)NodeIntgrab[](,)NodeInt levellevel ::  Graph gr => Node -> gr a b ->  [(Node, Int)]WGraphgrNodegrab[](,)NodeInt lesp lesp ::  Graph gr => Node -> Node -> gr a b -> LPath bɗGraphgrNodeNodegrabLPathb lbftlbft ::  Graph gr => Node -> gr a b -> LRTree b`GraphgrNodegrabLRTreeb isEmptyFM isEmptyFM ::  FiniteMap a b -> Bool FiniteMapabBool isEmptyisEmpty ::  Ord a => Heap a b -> BooltSOrdaHeapabBool isConnected isConnected ::  Graph gr => gr a b -> BoolљGraphgrgrabBool insertinsert ::  Ord a => (a, b) -> Heap a b -> Heap a b[Orda(,)abHeapabHeapab indepindep :: DynGraph gr => gr a b -> [Node]DynGraphgrgrab[]Node iDomiDom ::  Graph gr => gr a b -> Node -> [(Node, Node)]{GraphgrgrabNode[](,)NodeNodeCreturn immediate dominators for each node of a graph, given a root  heapsortheapsort ::  Ord a => [a] -> [a]hIOrda[]a[]a Heapdata  Ord a => Heap a b gvdOutgvdOut :: (Graph gr, Real b) => [Node] -> gr a b ->  Voronoi bVGraphgrRealb[]NodegrabVoronoib gvdIngvdIn :: (DynGraph gr, Real b) => [Node] -> gr a b ->  Voronoi b˝DynGraphgrRealb[]NodegrabVoronoib GTdata GT m g a= graphUFold graphUFold :: GraphM m gr => (Context a b -> c -> c) -> c -> GT m (gr a b) c ĞGraphMmgrContextabcccGTmgrabc GraphReptype GraphRep a b6 = (Int, Array Node (Context' a b), IOArray Node Bool)| graphRec'  graphRec' :: (Graph gr, GraphM m gr) => GT m (gr a b) c ->  (c -> d -> d) -> d -> GT m (gr a b) d}GraphgrGraphMmgrGTmgrabccdddGTmgrabd graphRec graphRec :: GraphM m gr => GT m (gr a b) c ->  (c -> d -> d) -> d -> GT m (gr a b) dcGraphMmgrGTmgrabccdddGTmgrabd1encapsulates a simple recursion schema on graphs  graphNodesM0 graphNodesM0 :: GraphM m gr => GT m (gr a b) [Node]'GraphMmgrGTmgrab[]Node graphNodesM graphNodesM :: GraphM m gr => GT m (gr a b) [Node]GraphMmgrGTmgrab[]Node graphNodes graphNodes :: GraphM m gr =>  m (gr a b) -> m [Node]TGraphMmgrmgrabm[]Node graphFilterM graphFilterM :: GraphM m gr => (Context a b -> Bool) -> GT m (gr a b) [Context a b]5ܣGraphMmgrContextabBoolGTmgrab[]Contextab graphFilter graphFilter :: GraphM m gr => (Context a b -> Bool) ->  m (gr a b) -> m [Context a b]ŤGraphMmgrContextabBoolmgrabm[]Contextab graphDff' graphDff' :: GraphM m gr =>  m (gr a b) ->  m [Tree Node]ƥGraphMmgrmgrabm[]TreeNode graphDffgraphDff :: GraphM m gr => [Node] ->  m (gr a b) ->  m [Tree Node]?GraphMmgr[]Nodemgrabm[]TreeNode getRevEdges getRevEdges :: (Num b, Ord b) => [(Node, Node)] -> [(Node, Node, b)]NNumbOrdb[](,)NodeNode[](,,)NodeNodeb
                i                                 0
For each edge a--->b this function returns edge b--->a .
         i
Edges a<--->b are ignored
         j
 getPathgetPath :: Node -> RTree -> Pathr\NodeRTreePath getNodes' getNodes' :: (Graph gr, GraphM m gr) => GT m (gr a b) [Node]بGraphgrGraphMmgrGTmgrab[]Node getNodesgetNodes :: GraphM m gr => GT m (gr a b) [Node]pGraphMmgrGTmgrab[]Node getNodegetNode :: GraphM m gr => GT m (gr a b) Node$GraphMmgrGTmgrabNode getLPathNodes getLPathNodes :: Node -> LRTree a -> PathNodeLRTreeaPath getLPathgetLPath :: Node -> LRTree a -> LPath a)NodeLRTreeaLPatha getDistance getDistance :: Node -> LRTree a -> aNodeLRTreeaa getContext getContext :: GraphM m gr => GT m (gr a b) (Context a b)=GraphMmgrGTmgrabContextab fmToListfmToList ::  Ord a =>  FiniteMap a b -> [(a, b)]ϬOrda FiniteMapab[](,)ab FiniteMapdata  Ord a =>  FiniteMap a b findMinfindMin ::  Ord a => Heap a b -> (a, b)hOrdaHeapab(,)abexecuteexecute :: Regex ->  ByteString -> DIO (Either WrapError (Maybe (Array Int (MatchOffset, MatchLength)))).Regex ByteStringIOEither WrapErrorMaybeArrayInt(,) MatchOffset MatchLengthMatches a regular expression against a buffer, returning the buffer indicies of the match, and any submatches | Matches a regular expression against a string  ExecOption ExecOption :: CInt ->  ExecOptionCInt ExecOption ExecOptionnewtype  ExecOptionٯA bitmapped CInt containing options for execution of compiled regular expressions. Option values (and their man 3 regexec names) are
  • execBlank which is a complete zero value for all the flags. This is the blankExecOpt value.
  • execNotBOL (REG_NOTBOL) can be set to prevent ^ from matching at the start of the input.
  • execNotEOL (REG_NOTEOL) can be set to prevent $ from matching at the end of the input (before the terminating NUL).
 execNotEOL execNotEOL ::  ExecOption  ExecOption execNotBOL execNotBOL ::  ExecOptionj] ExecOption execBlank execBlank ::  ExecOption ExecOptionWA completely zero value for all the flags. This is also the blankExecOpt value.  esp esp ::  Graph gr => Node -> Node -> gr a b -> Path|GraphgrNodeNodegrabPath emptyNemptyN :: Int ->  IO (SGr a b)IntIOSGrab emptyFMemptyFM ::  Ord a =>  FiniteMap a bxZOrda FiniteMapab emptyempty ::  Ord a => Heap a bѴOrdaHeapab EmptyEmpty :: Heap a bHeapab EmptyEmpty ::  FiniteMap a bgS FiniteMapab elemFMelemFM ::  Ord a =>  FiniteMap a b -> a -> Bool˵Orda FiniteMapabaBool ekSimple ekSimple :: Network -> Node -> Node -> (Network, Double)mNetworkNodeNode(,)NetworkDouble ekList ekList :: Network -> Node -> Node -> (Network, Double)BNetworkNodeNode(,)NetworkDouble ekFused ekFused :: Network -> Node -> Node -> (Network, Double)NetworkNodeNode(,)NetworkDouble domdom ::  Graph gr => gr a b -> Node -> [(Node, [Node])]RGraphgrgrabNode[](,)Node[]NodeCreturn the set of dominators of the nodes of a graph, given a root  dijkstradijkstra :: (Graph gr, Real b) => Heap b (LPath b) -> gr a b -> LRTree bWGraphgrRealbHeapbLPathbgrabLRTreeb5Implementation of Dijkstra's shortest path algorithm  dfsWith'dfsWith' ::  Graph gr =>  CFun a b c -> gr a b -> [c]yCGraphgrCFunabcgrab[]c dfsWith dfsWith ::  Graph gr =>  CFun a b c -> [Node] -> gr a b -> [c]7GraphgrCFunabc[]Nodegrab[]c dfsM'dfsM' :: GraphM m gr =>  m (gr a b) -> m [Node]ɻGraphMmgrmgrabm[]Node dfsMdfsM :: GraphM m gr => [Node] ->  m (gr a b) -> m [Node]w5GraphMmgr[]Nodemgrabm[]Node,depth-first search yielding number of nodes  dfsGTdfsGT :: GraphM m gr => [Node] -> GT m (gr a b) [Node]HGraphMmgr[]NodeGTmgrab[]NodeMonadic graph algorithms are defined in two steps:
  1. define the (possibly parameterized) graph transformer (e.g., dfsGT) (2) run the graph transformer (applied to arguments) (e.g., dfsM)
 dfs'dfs' ::  Graph gr => gr a b -> [Node]gGraphgrgrab[]Node dfsdfs ::  Graph gr => [Node] -> gr a b -> [Node]$Graphgr[]Nodegrab[]Node dffWith'dffWith' ::  Graph gr =>  CFun a b c -> gr a b -> [Tree c]ӿGraphgrCFunabcgrab[]Treec dffWith dffWith ::  Graph gr =>  CFun a b c -> [Node] -> gr a b -> [Tree c]TGraphgrCFunabc[]Nodegrab[]Treec dffMdffM :: GraphM m gr => [Node] -> GT m (gr a b) [Tree Node]NGraphMmgr[]NodeGTmgrab[]TreeNode'depth-first search yielding dfs forest  dff'dff' ::  Graph gr => gr a b ->  [Tree Node]Graphgrgrab[]TreeNode dffdff ::  Graph gr => [Node] -> gr a b ->  [Tree Node]aGraphgr[]Nodegrab[]TreeNode delFromFM delFromFM ::  Ord a =>  FiniteMap a b -> a ->  FiniteMap a bFOrda FiniteMapaba FiniteMapab deleteMin deleteMin ::  Ord a => Heap a b -> Heap a bOrdaHeapabHeapab defaultGraphSizedefaultGraphSize :: IntInt Context'type Context' a b = Maybe (Adj b, a, Adj b)m condMGT' condMGT' ::  Monad m =>  (s -> Bool) -> GT m s a -> GT m s a -> GT m s a;MonadmsBoolGTmsaGTmsaGTmsa condMGT condMGT ::  Monad m => (m s -> m Bool) -> GT m s a -> GT m s a -> GT m s aMonadmmsmBoolGTmsaGTmsaGTmsa CompOption CompOption :: CInt ->  CompOption}hCInt CompOption CompOptionnewtype  CompOption}A bitmapped CInt containing options for compilation of regular expressions. Option values (and their man 3 regcomp names) are
  • compBlank which is a completely zero value for all the flags. This is also the blankCompOpt value.
  • compExtended (REG_EXTENDED) which can be set to use extended instead of basic regular expressions. This is set in the defaultCompOpt value.
  • compNewline (REG_NEWLINE) turns on newline sensitivity: The dot (.) and inverted set [^ ] never match newline, and ^ and $ anchors do match after and before newlines. This is set in the defaultCompOpt value.
  • compIgnoreCase (REG_ICASE) which can be set to match ignoring upper and lower distinctions.
  • compNoSub (REG_NOSUB) which turns off all information from matching except whether a match exists.
 components components ::  Graph gr => gr a b -> [[Node]]Graphgrgrab[][]Node compNoSub compNoSub ::  CompOption CompOption compNewline compNewline ::  CompOptionbU CompOptioncompile compile ::  CompOption ->  ExecOption ->  ByteString -> IO (Either WrapError Regex); CompOption ExecOption ByteStringIOEither WrapErrorRegexCompiles a regular expression compIgnoreCasecompIgnoreCase ::  CompOption CompOption compExtended compExtended ::  CompOption CompOption compBlank compBlank ::  CompOptionSF CompOptionWA completely zero value for all the flags. This is also the blankCompOpt value.  Collecttype Collect r c = (r -> c -> c, c) CFuntype CFun a b c = Context a b -> c< buildbuild ::  Ord a => [(a, b)] -> Heap a bOrda[](,)abHeapab bftbft ::  Graph gr => Node -> gr a b -> RTreeEGraphgrNodegrabRTree bfsWith bfsWith ::  Graph gr => (Context a b -> c) -> Node -> gr a b -> [c]GraphgrContextabcNodegrab[]c bfsnWith bfsnWith ::  Graph gr => (Context a b -> c) -> [Node] -> gr a b -> [c]GraphgrContextabc[]Nodegrab[]c bfsnbfsn ::  Graph gr => [Node] -> gr a b -> [Node]l8Graphgr[]Nodegrab[]Node bfsbfs ::  Graph gr => Node -> gr a b -> [Node]GraphgrNodegrab[]Node bfenbfen ::  Graph gr => [Edge] -> gr a b -> [Edge]\Graphgr[]Edgegrab[]Edge bfebfe ::  Graph gr => Node -> gr a b -> [Edge]GraphgrNodegrab[]Edge bccbcc :: DynGraph gr => gr a b -> [gr a b]qDynGraphgrgrab[]grabFinds the bi-connected components of an undirected connected graph. It first finds the articulation points of the graph. Then it disconnects the graph on each articulation point and computes the connected components.  augmentGraph augmentGraph :: (DynGraph gr, Num b, Ord b) => gr a b -> gr a (b, b, b)DDynGraphgrNumbOrdbgrabgra(,,)bbb8
                i                                  0
For each edge a--->b insert into graph the edge a<---b . Then change the
                           i         (i,0,i)
label of every edge from a---->b to a------->b
where label (x,y,z)=(Max Capacity, Current flow, Residual capacity)  applyWith'  applyWith' ::  Monad m => (a -> b) -> GT m g a -> g -> m (b, g)8MonadmabGTmgagm(,)bg applyWith  applyWith ::  Monad m => (a -> b) -> GT m g a -> m g -> m (b, g)MonadmabGTmgamgm(,)bg apply'apply' ::  Monad m => GT m g a -> g -> m (a, g)^MonadmGTmgagm(,)ag applyapply :: GT m g a -> m g -> m (a, g)GTmgamgm(,)ag apap ::  Graph gr => gr a b -> [Node]dGraphgrgrab[]Node5Finds the articulation points for a connected undirected graph, by using the low numbers criteria: a) The root node is an articulation point iff it has two or more children. b) An non-root node v is an articulation point iff there exists at least one child w of v such that lowNumber(w) >= dfsNumber(v).  addToFM addToFM ::  Ord a =>  FiniteMap a b -> a -> b ->  FiniteMap a bv=Orda FiniteMapabab FiniteMapab accumFM accumFM ::  Ord a =>  FiniteMap a b -> a ->  (b -> b -> b) -> b ->  FiniteMap a bO Orda FiniteMapababbbb FiniteMapabdefines or aggregates entries  >< (><) :: (a -> b) -> (c -> d) -> (a, c) -> (b, d) abcd(,)ac(,)bd|class &RegexOptions regex compOpt execOpt => |E (RegexMaker regex compOpt execOpt source) (regex -> compOpt execOpt)}RegexMaker captures the creation of the compiled regular expression from a source type and an option type. makeRegexM and makeRegexM report parse error using MonadError, usually (Either String regex). The makeRegex function has a default implementation that depends on makeRegexOpts and used defaultCompOpt and defaultExecOpt. Similarly for makeRegexM and makeRegexOptsM. There are also default implementaions for makeRegexOpts and makeRegexOptsM in terms of each other. So a minimal instance definition needs to only define one of these, hopefully makeRegexOptsM. |class |@ (RegexOptions regex compOpt execOpt) (regex -> compOpt execOpt)jRather than carry them around spearately, the options for how to execute a regex are kept as part of the regex. There are two types of options. Those that can only be specified at compilation time and never changed are CompOpt. Those that can be changed later and affect how matching is performed are ExecOpt. The actually types for these depend on the backend. |class (Monoid w, Monad m) => | (MonadWriter w m) (m -> w)B|class  Monad m => | (MonadState s m) (m -> s)oget returns the state from the internals of the monad. put replaces the state inside the monad. |class  Monad m => | (MonadReader r m) (m -> r)JSee examples in Control.Monad.Reader. Note, the partially applied function type (->) r is a simple reader monad. See the instance declaration below. |class @(Monoid w, MonadReader r m, MonadWriter w m, MonadState s m) => | (MonadRWS r w s m) (m -> r)~|class  Monad m => | (MonadError e m) (m -> e)The strategy of combining computations that can throw exceptions by bypassing bound functions from the point an exception is thrown to the point that it is handled. Is parameterized over the type of error information and the monad type constructor. It is common to use Data.Either String as the monad type constructor for an error monad in which error descriptions take the form of strings. In that case and many other common cases the resulting monad is already defined as an instance of the MonadError class. You can also define your own error type and/or use a monad type constructor other than Data.Either String or Data.Either IOError. In these cases you will have to explicitly define instances of the Error and/or MonadError classes. ZlibZlib :: FormatFormathzipWith zipWith :: (Char -> Char -> a) ->  ByteString ->  ByteString -> [a]CharChara ByteString ByteString[]azipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function. For example, zipWith (+) is applied to two ByteStrings to produce the list of corresponding sums. hzipzip ::  ByteString ->  ByteString -> [(Char, Char)]\( ByteString ByteString[](,)CharChar4O(n) zip takes two ByteStrings and returns a list of corresponding pairs of Chars. If one input ByteString is short, excess elements of the longer ByteString are discarded. This is equivalent to a pair of unpack operations, and so space usage may be large for multi-megabyte ByteStrings  writeTChan writeTChan :: TChan a -> a -> STM () TChanaaSTM()!Write a value to a TChan. WriterTWriterT :: m (a, w) ->  WriterT w m am(,)awWriterTwmaWriterTnewtype WriterT w m aWriterTWriterT :: m (a, w) ->  WriterT w m ab9m(,)awWriterTwmaWriterTnewtype WriterT w m aWriterWriter :: (a, w) ->  Writer w a (,)awWriterwaWriternewtype Writer w aAWriterWriter :: (a, w) ->  Writer w a(,)awWriterwaWriternewtype Writer w a writeHistory writeHistory :: FilePath -> IO BoolV=FilePathIOBoolXWrite out a history file. Returns False if there was a problem writing the file. h writeFile writeFile :: FilePath ->  ByteString -> IO ()7FilePath ByteStringIO()%Write a ByteString to a file. wrapTestwrapTest :: Regex -> CString -> IO (Either WrapError Bool)RegexCStringIOEither WrapErrorBool wrapMatchAll wrapMatchAll :: Regex -> CString -> "IO (Either WrapError [MatchArray])RegexCStringIOEither WrapError[] MatchArraywrapMatchAll returns the offset and length of each capture. Unused captures have an offset of unusedRegOffset which is (-1) and length of 0.  wrapMatch wrapMatch :: Regex -> CString -> 6IO (Either WrapError (Maybe [(RegOffset, RegOffset)]))>RegexCStringIOEither WrapErrorMaybe[](,) RegOffset RegOffsetwrapMatch returns offsets for the begin and end of each capture. Unused captures have offsets of unusedRegOffset which is (-1)  WrapErrortype  WrapError = (ReturnCode, String) zThe return code will be retOk when it is the Haskell wrapper and not the underlying library generating the error message.  WrapErrortype  WrapError = (ReturnCode, String)zThe return code will be retOk when it is the Haskell wrapper and not the underlying library generating the error message.  WrapErrortype  WrapError = (ReturnCode, String)zThe return code will be retOk when it is the Haskell wrapper and not the underlying library generating the error message.  WrapErrortype  WrapError = (ReturnCode, String)gzThe return code will be retOk when it is the Haskell wrapper and not the underlying library generating the error message.  wrapCount wrapCount :: Regex -> CString -> IO (Either WrapError Int)URegexCStringIOEither WrapErrorInt wrapCompile  wrapCompile ::  CompOption ->  ExecOption -> CString -> IO (Either WrapError Regex)c CompOption ExecOptionCStringIOEither WrapErrorRegexhwordswords ::  ByteString ->  [ByteString] ByteString[] ByteStringwords breaks a ByteString up into a list of words, which were delimited by Chars representing white space. And
tokens isSpace = words
 wordPrimL wordPrimL :: Integer -> LitIntegerLit WordPrimL WordPrimL :: Integer -> Lit,IntegerLit withStateT withStateT :: (s -> s) ->  StateT s m a ->  StateT s m assStateTsmaStateTsmaSimilar to withState  withStateT withStateT :: (s -> s) ->  StateT s m a ->  StateT s m a[ssStateTsmaStateTsmaSimilar to withState  withState withState :: (s -> s) ->  State s a ->  State s a:ssStatesaStatesaBApply this function to this state and return the resulting state.  withState withState :: (s -> s) ->  State s a ->  State s assStatesaStatesaBApply this function to this state and return the resulting state. withRWSTwithRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m ar's(,)rsRWSTrwsmaRWSTr'wsmawithRWSTwithRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m ar's(,)rsRWSTrwsmaRWSTr'wsmawithRWSwithRWS :: (r' -> s -> (r, s)) ->  RWS r w s a ->  RWS r' w s aOr's(,)rsRWSrwsaRWSr'wsawithRWSwithRWS :: (r' -> s -> (r, s)) ->  RWS r w s a ->  RWS r' w s aD  r's(,)rsRWSrwsaRWSr'wsa WindowBits WindowBits :: Int ->  WindowBits  Int WindowBits WindowBitsdata  WindowBits This specifies the size of the compression window. Larger values of this parameter result in better compression at the expense of higher memory usage. The compression window size is the value of the the window bits raised to the power 2. The window bits must be in the range 8..15 which corresponds to compression window sizes of 256b to 32Kb. The default is 15 which is also the maximum size. The total amount of memory used depends on the window bits and the MemoryLevel. See the MemoryLevel for the details.  WindowBits WindowBits :: Int ->  WindowBits` L Int WindowBits WindowBitsdata  WindowBits This specifies the size of the compression window. Larger values of this parameter result in better compression at the expense of higher memory usage. The compression window size is the value of the the window bits raised to the power 2. The window bits must be in the range 8..15 which corresponds to compression window sizes of 256b to 32Kb. The default is 15 which is also the maximum size. The total amount of memory used depends on the window bits and the MemoryLevel. See the MemoryLevel for the details.  wildPwildP :: PatQ  PatQ WildPWildP :: Pat"  Pat whiteSpace whiteSpace :: GenTokenParser s u m -> ParsecT s u m ()  GenTokenParsersumParsecTsum()#Parses any white space. White space consists of zero or more occurrences of a space, a line comment or a block (multi line) comment. Block comments may be nested. How comments are started and ended is defined in the LanguageDef that is passed to makeTokenParser.  where_clause where_clause :: [Dec] -> DocH 5 []DecDoc vor'vor' :: IO (SGr String Int)  IOSGrStringInt vorvor ::  Gr String Int  GrStringInt vcatvcat :: [Doc] -> DocC 0 []DocDocList version of $$  varTvarT :: Name -> TypeQ  NameTypeQ VarTVarT :: Name -> Type  NameType VarStrictTypeQtype VarStrictTypeQ = Q VarStrictTypeS  varStrictType varStrictType :: Name ->  StrictTypeQ -> VarStrictTypeQ  Name StrictTypeQVarStrictTypeQ VarStrictTypetype  VarStrictType = (Name, Strict, Type)D  varPvarP :: Name -> PatQ  NamePatQ VarPVarP :: Name -> Pat  NamePat VarNameVarName ::  NameSpace*   NameSpace VarI VarI :: Name -> Type ->  Maybe Dec -> Fixity -> Info  NameTypeMaybeDecFixityInfo varEvarE :: Name -> ExpQ  NameExpQ VarEVarE :: Name -> Expk ] NameExp valD valD :: PatQ -> BodyQ -> [DecQ] -> DecQ  PatQBodyQ[]DecQDecQ ValD ValD :: Pat -> Body -> [Dec] -> Deco Q PatBody[]DecDec utcToTAITime utcToTAITime :: LeapSecondTable -> UTCTime ->  AbsoluteTime  LeapSecondTableUTCTime AbsoluteTimeutcTimeToPOSIXSecondsutcTimeToPOSIXSeconds :: UTCTime ->  POSIXTime | UTCTime POSIXTime utcDayLength utcDayLength :: LeapSecondTable -> Day -> DiffTime%  LeapSecondTableDayDiffTimeusernameCompletionFunctionusernameCompletionFunction :: String ->  IO [String]  StringIO[]Stringupperupper :: Stream s m Char => ParsecT s u m Char?  StreamsmCharParsecTsumChar]Parses an upper case letter (a character between 'A' and 'Z'). Returns the parsed character.  updateState updateState ::  Monad m => (u -> u) -> ParsecT s u m ()5  MonadmuuParsecTsum()6An alias for modifyState for backwards compatibility. updatePosStringupdatePosString ::  SourcePos -> String ->  SourcePos   SourcePosString SourcePosThe expression updatePosString pos s updates the source position pos by calling updatePosChar on every character in s, ie. foldl updatePosChar pos string.  updatePosChar updatePosChar ::  SourcePos -> Char ->  SourcePosQ 2  SourcePosChar SourcePosQUpdate a source position given a character. If the character is a newline ('\n') or carriage return ('\r') the line number is incremented by 1. If the character is a tab ('t') the column number is incremented to the nearest 8'th column, ie. column + 8 - ((column-1) `mod` 8). In all other cases, the column is incremented by 1.  UPathtype UPath = [UNode] Quasi-unlabeled path hunwordsunwords ::  [ByteString] ->  ByteStringg F [] ByteString ByteStringSThe unwords function is analogous to the unlines function, on words. unusedRegOffsetunusedRegOffset ::  RegOffset   RegOffset unusedOffset unusedOffset :: IntX R Int unusedOffset unusedOffset :: Int  Int unusedOffset unusedOffset :: Int  IntunstifleHistoryunstifleHistory :: IO Int9 - IOIntUStop stifling the history, returning the previous amount the history was stifled by. unsafeThawIOUArrayunsafeThawIOUArray ::  Ix ix =>  UArray ix e -> IO (IOUArray ix e)@   IxixUArrayixeIOIOUArrayixeI unsafeIOToST unsafeIOToST :: IO a -> ST s a  IOaSTsaIunsafeInterleaveSTunsafeInterleaveST :: ST s a -> ST s a'   STsaSTsa unsafeunsafe :: Safetyg ^ Safety UnsafeUnsafe :: Safety  Safetyhunpackunpack ::  ByteString -> [Char]   ByteString[]Char=O(n) Converts a ByteString to a String.  UNodetype UNode = LNode () Quasi-unlabeled node hunlinesunlines ::  [ByteString] ->  ByteString  [] ByteString ByteStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each.  unlabunlab :: DynGraph gr => gr a b -> gr () ()  DynGraphgrgrabgr()()Remove all labels.  Uniqtype Uniq = IntU  unGetTChan unGetTChan :: TChan a -> a -> STM ()  TChanaaSTM()JPut a data item back onto a channel, where it will be the next item read. hunfoldrunfoldr :: (a -> Maybe (Char, a)) -> a ->  ByteString  aMaybe(,)Charaa ByteStringO(n) The unfoldr function is analogous to the List 'unfoldr'. unfoldr builds a ByteString from a seed value. The function takes the element and returns Nothing if it is done producing the ByteString or returns Just (a,b), in which case, a is a prepending to the ByteString and b is used as the next element in a recursive call.  unexpected unexpected :: Stream s m t => String -> ParsecT s u m a  StreamsmtStringParsecTsumaThe parser unexpected msg always fails with an unexpected error message msg without consuming any input. The parsers fail, (<?>) and unexpected are the three parsers used to generate error messages. Of these, only (<?>) is commonly used. For an example of the use of unexpected, see the definition of Text.Parsec.Combinator.notFollowedBy. UnExpectUnExpect :: String -> Message" " StringMessage undirundir :: (Eq b, DynGraph gr) => gr a b -> gr a bi# 5# EqbDynGraphgrgrabgrab^Make the graph undirected, i.e. for every edge from A to B, there exists an edge from B to A. hunconsuncons ::  ByteString -> Maybe (Char, ByteString)W$ &$  ByteStringMaybe(,)Char ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty.  UGrtype UGr = Gr () ()$  UGrtype UGr = Gr () ()%  ufoldM ufoldM :: GraphM m gr => (Context a b -> c -> c) -> c ->  m (gr a b) -> m c% % GraphMmgrContextabcccmgrabmc graph fold  ufold ufold ::  Graph gr => (Context a b -> c -> c) -> c -> gr a b -> c& y& GraphgrContextabcccgrabc Fold a function over the graph.  UEdgetype UEdge = LEdge ()' Quasi-unlabeled edge  UDecomptype UDecomp g = (Maybe UContext, g)p' Unlabeled decomposition.  ucycleMucycleM :: GraphM m gr => Int ->  m (gr () ())( ' GraphMmgrIntmgr()() ucycleucycle ::  Graph gr => Int -> gr () ()( f( GraphgrIntgr()() UContexttype UContext = ([Node], Node, [Node])( Unlabeled context.  TyVarITyVarI :: Name -> Type -> InfoU) @) NameTypeInfo tySynD tySynD :: Name -> [Name] -> TypeQ -> DecQ) ) Name[]NameTypeQDecQ TySynD TySynD :: Name -> [Name] -> Type -> Dece* E* Name[]NameTypeDec TypeQtype TypeQ = Q Type*  Typedata Type*  TyConITyConI :: Dec -> Info+ + DecInfo tupPtupP :: [PatQ] -> PatQt+ _+ []PatQPatQ TupPTupP :: [Pat] -> Pat+ + []PatPat tupleTypeName tupleTypeName :: Int -> Name(, , IntName tupleTtupleT :: Int -> TypeQ|, m, IntTypeQ TupleTTupleT :: Int -> Type, , IntType tupleDataName tupleDataName :: Int -> Name.-  - IntName tupEtupE :: [ExpQ] -> ExpQ- q- []ExpQExpQ TupETupE :: [Exp] -> Exp- - []ExpExp tryTakeTMVar tryTakeTMVar :: TMVar a ->  STM (Maybe a)Y. 7. TMVaraSTMMaybeaA version of takeTMVar that does not retry. The tryTakeTMVar function returns Nothing if the TMVar was empty, or Just a if the TMVar was full with contents a. After tryTakeTMVar, the TMVar is left empty.  tryPutTMVar tryPutTMVar :: TMVar a -> a -> STM Bool/ / TMVaraaSTMBoolA version of putTMVar that does not retry. The tryPutTMVar function attempts to put the value a into the TMVar, returning True if it was successful, or False otherwise. trytry :: GenParser tok st a -> GenParser tok st ad1 /1  GenParsertoksta GenParsertokstah transpose transpose ::  [ByteString] ->  [ByteString]1 1 [] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument.   toWeekDate toWeekDate :: Day -> (Integer, Int, Int)2 2 Day(,,)IntegerIntIntuconvert to ISO 8601 Week Date format. First element of result is year, second week number (1-53), third day of week (1 for Monday to 7 for Sunday). Note that "Week" years are not quite the same as Gregorian years, as the first day of the year is always a Monday. The first week of a year is the first week to contain at least four days in the corresponding Gregorian year.  toOrdinalDate toOrdinalDate :: Day -> (Integer, Int)4 4 Day(,)IntegerIntconvert to ISO 8601 Ordinal Date format. First element of result is year (proleptic Gregoran calendar), second is the day of the year, with 1 for Jan 1, and 365 (or 366 in leap years) for Dec 31. tokens tokens :: (Stream s m t, Eq t) => ([t] -> String) -> (SourcePos -> [t] -> SourcePos) -> [t] -> ParsecT s u m [t]6 &6 StreamsmtEqt[]tString SourcePos[]t SourcePos[]tParsecTsum[]t tokenPrimEx  tokenPrimEx :: Stream s m t =>  (t -> String) -> "(SourcePos -> t -> s -> SourcePos) -> %Maybe (SourcePos -> t -> s -> u -> u) -> (t -> Maybe a) -> ParsecT s u m a8 7 StreamsmttString SourcePosts SourcePosMaybe SourcePostsuutMaybeaParsecTsuma tokenPrim  tokenPrim :: Stream s m t =>  (t -> String) -> "(SourcePos -> t -> s -> SourcePos) -> (t -> Maybe a) -> ParsecT s u m a69 8 StreamsmttString SourcePosts SourcePostMaybeaParsecTsumaThe parser token showTok nextPos testTok accepts a token t with result x when the function testTok t returns Just x. The token can be shown using showTok t. The position of the next token should be returned when nextPos is called with the current source position pos, the current token t and the rest of the tokens toks, nextPos pos t toks. This is the most primitive combinator for accepting tokens. For example, the Text.Parsec.Char.char parser could be implemented as:
char c
  = tokenPrim showChar nextPos testChar
  where
    showChar x        = "'" ++ x ++ "'"
    testChar x        = if x == c then Just x else Nothing
    nextPos pos x xs  = updatePosChar pos x
 TokenParser> TokenParser :: ParsecT s u m String -> (String -> ParsecT s u m ()) -> ParsecT s u m String -> (String -> ParsecT s u m ()) -> ParsecT s u m Char -> ParsecT s u m String -> ParsecT s u m Integer -> ParsecT s u m Integer -> ParsecT s u m Double ->  %ParsecT s u m (Either Integer Double) ->  ParsecT s u m Integer ->  ParsecT s u m Integer ->  ParsecT s u m Integer ->  (String -> ParsecT s u m String) -> $(ParsecT s u m a -> ParsecT s u m a) -> ParsecT s u m () -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> ParsecT s u m String -> ParsecT s u m String -> ParsecT s u m String -> ParsecT s u m String -> &(ParsecT s u m a -> ParsecT s u m [a]) -> &(ParsecT s u m a -> ParsecT s u m [a]) -> &(ParsecT s u m a -> ParsecT s u m [a]) -> &(ParsecT s u m a -> ParsecT s u m [a]) -> GenTokenParser s u miE A ParsecTsumStringStringParsecTsum()ParsecTsumStringStringParsecTsum()ParsecTsumCharParsecTsumStringParsecTsumIntegerParsecTsumIntegerParsecTsumDoubleParsecTsumEitherIntegerDoubleParsecTsumIntegerParsecTsumIntegerParsecTsumIntegerStringParsecTsumStringParsecTsumaParsecTsumaParsecTsum()ParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumStringParsecTsumStringParsecTsumStringParsecTsumStringParsecTsumaParsecTsum[]aParsecTsumaParsecTsum[]aParsecTsumaParsecTsum[]aParsecTsumaParsecTsum[]aGenTokenParsersum TokenParsertype  TokenParser st$ = GenTokenParser String st IdentityE token token :: Stream s Identity t =>  (t -> String) -> (t -> SourcePos) -> (t -> Maybe a) ->  Parsec s u aF mF StreamsIdentityttStringt SourcePostMaybeaParsecsuaThe parser token showTok posFromTok testTok accepts a token t with result x when the function testTok t returns Just x. The source position of the t should be returned by posFromTok t and the token can be shown using showTok t. This combinator is expressed in terms of tokenPrim. It is used to accept user defined token streams. For example, suppose that we have a stream of basic tokens tupled with source positions. We can than define a parser that accepts single tokens as:
mytoken x
  = token showTok posFromTok testTok
  where
    showTok (pos,t)     = show t
    posFromTok (pos,t)  = pos
    testTok (pos,t)     = if x == t then Just t else Nothing
 toJulianYearAndDaytoJulianYearAndDay :: Day -> (Integer, Int)CJ &J Day(,)IntegerIntconvert to proleptic Julian year and day format. First element of result is year (proleptic Julian calendar), second is the day of the year, with 1 for Jan 1, and 365 (or 366 in leap years) for Dec 31.  toJuliantoJulian :: Day -> (Integer, Int, Int)K dK Day(,,)IntegerIntIntuconvert to proleptic Julian calendar. First element of result is year, second month number (1-12), third day (1-31). htoChunkstoChunks ::  ByteString ->  [ByteString]tL SL  ByteString[] ByteStringUO(n) Convert a lazy ByteString into a list of strict ByteString  to_HPJ_Doc to_HPJ_Doc :: Doc -> Doc!M M DocDocTMVardata TMVar aQM A TMVar is a synchronising variable, used for communication between concurrent threads. It can be thought of as a box, which may be empty or full.  tildePtildeP :: PatQ -> PatQ?N 0N PatQPatQ TildePTildeP :: Pat -> PatN N PatPat throwError throwError :: MonadError e m => e -> m a O N  MonadErroremema threadsafe threadsafe :: SafetyTO KO Safety Threadsafe Threadsafe :: SafetyO O Safety texttext :: String -> DocO O StringDoctelltell :: MonadWriter w m => w -> m ()cP ?P  MonadWriterwmwm()TChandata TChan aP ITChan is an abstract type representing an unbounded FIFO channel.  TcClsName TcClsName ::  NameSpace(Q Q  NameSpaceTArraydata TArray i e\Q TArray is a transactional array, supporting the usual MArray interface for mutable arrays. It is currently implemented as Array ix (TVar e), but it may be replaced by a more efficient implementation in the future (the interface will remain the same, however). h takeWhile takeWhile :: (Char -> Bool) ->  ByteString ->  ByteString S R CharBool ByteString ByteStringtakeWhile, applied to a predicate p and a ByteString xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p.  takeTMVar takeTMVar :: TMVar a -> STM a%T  T TMVaraSTMaReturn the contents of the TMVar. If the TMVar is currently empty, the transaction will retry. After a takeTMVar, the TMVar is left empty. htaketake :: Int64 ->  ByteString ->  ByteStringSU 1U Int64 ByteString ByteStringO(n\c)/ take n, applied to a ByteString xs, returns the prefix of xs of length n, or xs itself if n > length xs.  taiToUTCTime taiToUTCTime :: LeapSecondTable ->  AbsoluteTime -> UTCTimeV V LeapSecondTable AbsoluteTimeUTCTimehtailstails ::  ByteString ->  [ByteString]&W W  ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. htailtail ::  ByteString ->  ByteStringW W  ByteString ByteStringZO(1) Extract the elements after the head of a ByteString, which must be non-empty. taiEpochtaiEpoch ::  AbsoluteTimeX ~X  AbsoluteTime4The epoch of TAI, which is 1858-11-17 00:00:00 TAI. tabtab :: Stream s m Char => ParsecT s u m CharBY Y StreamsmCharParsecTsumChar8Parses a tab character ('\t'). Returns a tab character.  SysUnExpect SysUnExpect :: String -> MessageY Y StringMessagesymbolsymbol :: GenTokenParser s u m -> String -> ParsecT s u m StringZ YZ GenTokenParsersumStringParsecTsumString`Lexeme parser symbol s parses string s and skips trailing white space.  swapTMVar swapTMVar :: TMVar a -> a -> STM as[ W[ TMVaraaSTMa5Swap the contents of a TMVar for a new value. sundayStartWeeksundayStartWeek :: Day ->  (Int, Int)\ \ Day(,)IntIntGet the number of the Sunday-starting week in the year and the day of the week. The first Sunday is the first day of week 1, any earlier days in the year are week 0 (as "%U" in Data.Time.Format.formatTime). Sunday is 0, Saturday is 6 (as "%w" in Data.Time.Format.formatTime).   sundayAfter sundayAfter :: Day -> Day] ~] DayDay,The next Sunday strictly after a given day.  suc'suc' ::  Context a b -> [Node]!^ ^ Contextab[]Node0All Nodes linked to in a Context.  sucsuc ::  Graph gr => gr a b -> Node -> [Node]^ ^ GraphgrgrabNode[]NodeCFind all Nodes that have a link from the given Node.  stuffChar stuffChar :: Char -> IO Bool_ o_ CharIOBoolIstToIOstToIO :: ST RealWorld a -> IO a_ _ ST RealWorldaIOa%A monad transformer embedding lazy state transformers in the IO monad. The RealWorld parameter indicates that the internal state used by the ST computation is a special one supplied by the IO monad, and thus distinct from those used by invocations of runST. strMsgstrMsg ::  Error a => String -> aa ga ErroraStringa stringLiteral stringLiteral :: GenTokenParser s u m -> ParsecT s u m String.b a GenTokenParsersumParsecTsumStringThis lexeme parser parses a literal string. Returns the literal string value. This parsers deals correctly with escape sequences and gaps. The literal string is parsed according to the grammar rules defined in the Haskell report (which matches most programming languages quite closely).  stringLstringL :: String -> Litc c StringLit StringLStringL :: String -> Litc c StringLit stringEstringE :: String -> ExpQWd Fd StringExpQstringstring :: Stream s m Char => String -> ParsecT s u m Stringd d StreamsmCharStringParsecTsumStringstring s parses a sequence of characters given by s. Returns the parsed string (i.e. s).
divOrMod    =   string "div" 
            <|> string "mod"
 StrictTypeQtype  StrictTypeQ = Q StrictType f  strictType strictType :: Q Strict -> TypeQ ->  StrictTypeQf uf QStrictTypeQ StrictTypeQ StrictTypetype  StrictType = (Strict, Type)f IstrictToLazySTstrictToLazyST :: ST s a -> ST s aXg =g STsaSTsaConvert a strict ST computation into a lazy one. The strict state thread passed to strictToLazyST is not performed until the result of the lazy state thread it returns is demanded.  Strictdata StrictKh  StmtQtype StmtQ = Q Stmth  Stmtdata Stmth  stifleHistory stifleHistory :: Int -> IO ()i i IntIO()GStifle the history list, remembering only a certain number of entries.  stdCallstdCall :: Callconvi i Callconv StdCallStdCall :: Callconvi i Callconv stateUser stateUser ::  State s u -> uJj 5j StatesuuStateTStateT :: (s -> m (a, s)) ->  StateT s m aj j sm(,)asStateTsmaStateTnewtype StateT s m ak A parameterizable state monad for encapsulating an inner monad. The StateT Monad structure is parameterized over two things:
  • s - The state.
  • m - The inner monad.
Here are some examples of use: (Parser from ParseLib with Hugs)
type Parser a = StateT String [] a
   ==> StateT (String -> [(a,String)])
For example, item can be written as:
item = do (x:xs) <- get
       put xs
       return x

type BoringState s a = StateT s Indentity a
     ==> StateT (s -> Identity (a,s))

type StateWithIO s a = StateT s IO a
     ==> StateT (s -> IO (a,s))

type StateWithErr s a = StateT s Maybe a
     ==> StateT (s -> Maybe (a,s))
StateTStateT :: (s -> m (a, s)) ->  StateT s m aRn %n sm(,)asStateTsmaStateTnewtype StateT s m an A parameterizable state monad for encapsulating an inner monad. The StateT Monad structure is parameterized over two things:
  • s - The state.
  • m - The inner monad.
Here are some examples of use: (Parser from ParseLib with Hugs)
type Parser a = StateT String [] a
   ==> StateT (String -> [(a,String)])
For example, item can be written as:
item = do (x:xs) <- get
       put xs
       return x

type BoringState s a = StateT s Indentity a
     ==> StateT (s -> Identity (a,s))

type StateWithIO s a = StateT s IO a
     ==> StateT (s -> IO (a,s))

type StateWithErr s a = StateT s Maybe a
     ==> StateT (s -> Maybe (a,s))
statePosstatePos ::  State s u ->  SourcePosq q Statesu SourcePos stateInput stateInput ::  State s u -> s$r r StatesusState State :: s ->  SourcePos -> u ->  State s ur r s SourcePosuStatesuStatedata State s ur StateState ::  (s -> (a, s)) ->  State s aUs 1s s(,)asStatesaStatenewtype State s as A parameterizable state monad where s is the type of the state to carry and a is the type of the return value. StateState ::  (s -> (a, s)) ->  State s at _t s(,)asStatesaStatenewtype State s at A parameterizable state monad where s is the type of the state to carry and a is the type of the return value.  starMstarM :: GraphM m gr => Int ->  m (gr () ())u u GraphMmgrIntmgr()() starstar ::  Graph gr => Int -> gr () ()4v v GraphgrIntgr()()ISTdata ST s a`v The lazy state-transformer monad. A computation of type ST s a transforms an internal state indexed by s, and returns a value of type a. The s parameter is either
  • an unstantiated type variable (inside invocations of runST), or
  • RealWorld (inside invocations of stToIO).
It serves to keep the internal states of different invocations of runST separate from each other and from invocations of stToIO. The >>= and >> operations are not strict in the state. For example,
runST (writeSTRef _|_ v >>= readSTRef _|_ >> return 2) = 2
squaressquares :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m ay y GenTokenParsersumParsecTsumaParsecTsuma!DEPRECATED: Use brackets. h splitWith splitWith :: (Char -> Bool) ->  ByteString ->  [ByteString]z sz CharBool ByteString[] ByteStringKO(n) Splits a ByteString into components delimited by separators, where the predicate returns True for a separator element. The resulting components do not contain the separators. Two adjacent separators result in an empty component in the output. eg.
splitWith (=='a') "aabbaca" == ["","","bb","c",""]
hsplitAtsplitAt :: Int64 ->  ByteString -> (ByteString, ByteString)| _| Int64 ByteString(,) ByteString ByteStringlO(n\c)/ splitAt n xs is equivalent to (take n xs, drop n xs).  splitsplit :: Type -> (Type, [Type])o} M} Type(,)Type[]Typehsplitsplit :: Char ->  ByteString ->  [ByteString]} } Char ByteString[] ByteStringO(n) Break a ByteString into pieces separated by the byte argument, consuming the delimiter. I.e.
split '\n' "a\nb\nd\ne" == ["a","b","d","e"]
split 'a'  "aXaXaXa"    == ["","X","X","X"]
split 'x'  "x"          == ["",""]
and
intercalate [c] . split c == id
split == splitWith . (==)
As for all splitting functions in this library, this function does not copy the substrings, it just constructs new ByteStrings that are slices of the original. hspanspan :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString) T CharBool ByteString(,) ByteString ByteStringspan p xs breaks the ByteString into two segments. It is equivalent to (takeWhile p xs, dropWhile p xs) spacesspaces :: Stream s m Char => ParsecT s u m () s StreamsmCharParsecTsum()LSkips zero or more white space characters. See also skipMany. spacespace :: Stream s m Char => ParsecT s u m Chars B StreamsmCharParsecTsumCharlParses a white space character (any character which satisfies isSpace) Returns the parsed character.  spacespace :: Doc  DocA space character  SourcePosdata  SourcePos_ The abstract data type SourcePos represents source positions. It contains the name of the source (i.e. file name), a line number and a column number. SourcePos is an instance of the Show, Eq and Ord class.  sourceName sourceName ::  SourcePos ->  SourceNameƄ   SourcePos SourceName8Extracts the name of the source from a source position.  SourceNametype  SourceName = StringA  sourceLine sourceLine ::  SourcePos -> Line   SourcePosLine1Extracts the line number from a source position.  sourceColumn sourceColumn ::  SourcePos -> ColumnF 0  SourcePosColumn3Extracts the column number from a source position. hsnocsnoc ::  ByteString -> Char ->  ByteString ֆ  ByteStringChar ByteStringvO(n) Append a Char to the end of a ByteString. Similar to cons, this function performs a memcpy. csmallChunkSizesmallChunkSize :: Int  Int9Currently set to 4k, less the memory management overhead  skipMany1 skipMany1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m () b StreamsmtParsecTsumaParsecTsum()bskipMany1 p applies the parser p one or more times, skipping its result. skipManyskipMany :: Stream s m t => ParsecT s u m a -> ParsecT s u m () y StreamsmtParsecTsumaParsecTsum()skipMany p applies the parser p zero or more times, skipping its result.
spaces  = skipMany space
h singleton singleton :: Char ->  ByteString  Char ByteString;O(1) Convert a Char into a ByteString  simpleMatch simpleMatch :: Pat -> Exp -> MatchZ F PatExpMatch sigPsigP :: PatQ -> TypeQ -> PatQ‹  PatQTypeQPatQ SigPSigP :: Pat -> Type -> Pat$  PatTypePat sigEsigE :: ExpQ -> TypeQ -> ExpQ v ExpQTypeQExpQ SigESigE :: Exp -> Type -> Exp ی ExpTypeExp sigDsigD :: Name -> TypeQ -> DecQV @ NameTypeQDecQ SigDSigD :: Name -> Type -> Dec  NameTypeDec  showWeekDate showWeekDate :: Day -> String  DayStringFshow in ISO 8601 Week Date format as yyyy-Www-dd (e.g. "2006-W46-3").  showtextl showtextl ::  Show a => a -> DocɎ  ShowaaDocshowOrdinalDateshowOrdinalDate :: Day -> String1 ! DayString0show in ISO 8601 Ordinal Date format (yyyy-ddd)  showName' showName' :: NameIs -> Name -> Stringُ  NameIsNameString showNameshowName :: Name -> String5 $ NameString showJulianYearAndDayshowJulianYearAndDay :: Day -> String  DayString8show in proleptic Julian year and day format (yyyy-ddd)   showJulian showJulian :: Day -> String= - DayString%show in ISO 8601 format (yyyy-mm-dd) showErrorMessagesshowErrorMessages :: String -> String -> String -> String -> String ->  [Message] -> String`  StringStringStringStringString[]MessageStringsetStatesetState ::  Monad m => u -> ParsecT s u m ()  MonadmuParsecTsum()3An alias for putState for backwards compatibility. setStartupHooksetStartupHook ::  Maybe (IO ()) -> IO () y MaybeIO()IO()setSpecialPrefixessetSpecialPrefixes :: String -> IO ()  StringIO() setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePos   SourcePos SourceName SourcePosSet the name of the source.  setSourceLine setSourceLine ::  SourcePos -> Line ->  SourcePosN /  SourcePosLine SourcePos*Set the line number of a source position. setSourceColumnsetSourceColumn ::  SourcePos -> Column ->  SourcePos   SourcePosColumn SourcePos,Set the column number of a source position. setRedisplayFunctionsetRedisplayFunction ::  Maybe (IO ()) -> IO ()Ö  MaybeIO()IO()setReadlineNamesetReadlineName :: String -> IO ()2  StringIO() setPosition setPosition ::  Monad m =>  SourcePos -> ParsecT s u m ()ϗ  Monadm SourcePosParsecTsum()KsetPosition pos sets the current source position to pos. setPointsetPoint :: Int -> IO ()u c IntIO()setParserStatesetParserState ::  Monad m =>  State s u -> ParsecT s u m (State s u)0  MonadmStatesuParsecTsumStatesuEsetParserState st set the full parser state to st. setInputsetInput ::  Monad m => s -> ParsecT s u m () ҙ MonadmsParsecTsum()setInput input continues parsing with input. The getInput and setInput functions can for example be used to deal with #include files. setInhibitCompletionsetInhibitCompletion :: Bool -> IO ()  BoolIO() setExecOpts setExecOpts :: &RegexOptions regex compOpt execOpt => execOpt -> regex -> regex   RegexOptionsregexcompOptexecOptexecOptregexregex setErrorPos setErrorPos ::  SourcePos ->  ParseError ->  ParseError| V  SourcePos ParseError ParseErrorsetErrorMessagesetErrorMessage :: Message ->  ParseError ->  ParseError  Message ParseError ParseErrorsetEndsetEnd :: Int -> IO ()m [ IntIO()setCompletionQueryItemssetCompletionQueryItems :: Int -> IO () ԝ IntIO()setCompletionEntryFunctionsetCompletionEntryFunction :: Maybe (String -> IO [String]) -> IO () m MaybeStringIO[]StringIO()setCompletionAppendCharactersetCompletionAppendCharacter ::  Maybe Char -> IO ()5  MaybeCharIO()setCompleterWordBreakCharacterssetCompleterWordBreakCharacters :: String -> IO ()ğ  StringIO()setCompleterQuoteCharacterssetCompleterQuoteCharacters :: String -> IO ()K 6 StringIO()setBasicWordBreakCharacterssetBasicWordBreakCharacters :: String -> IO ()Ҡ  StringIO()setAttemptedCompletionOversetAttemptedCompletionOver :: Bool -> IO ()S @ BoolIO()setAttemptedCompletionFunctionsetAttemptedCompletionFunction :: =Maybe (String -> Int -> Int -> IO (Maybe (String, [String]))) -> IO ()X  MaybeStringIntIntIOMaybe(,)String[]StringIO() sequenceQ sequenceQ :: [Q a] -> Q [a]Ģ  []QaQ[]a sepEndBy1 sepEndBy1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a] T StreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepEndBy1 p sep parses one or more occurrences of p, separated and optionally ended by sep. Returns a list of values returned by p. sepEndBysepEndBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]W  StreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepEndBy p sep parses zero or more occurrences of p, separated and optionally ended by sep, ie. haskell style statements. Returns a list of values returned by p.
haskellStatements  = haskellStatement `sepEndBy` semi
sepBy1sepBy1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]U  StreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepBy1 p sep parses one or more occurrences of p, separated by sep. Returns a list of values returned by p. sepBysepBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]ר t StreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepBy p sep parses zero or more occurrences of p, separated by sep. Returns a list of values returned by p.
commaSep p  = p `sepBy` (symbol ",")
 sepsep :: [Doc] -> Doc  []DocDocEither hsep or vcat semiSep1semiSep1 :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]ڪ  GenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser semiSep1 p parses one or more occurrences of p separated by semi. Returns a list of values returned by p. semiSepsemiSep :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]L  GenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser semiSep p parses zero or more occurrences of p separated by semi. Returns a list of values returned by p. semisemi :: GenTokenParser s u m -> ParsecT s u m String N GenTokenParsersumParsecTsumStringjLexeme parser |semi| parses the character ';' and skips any trailing white space. Returns the string ";".  semisemi :: Doc( " DocA ';' character  sectionRsectionR :: ExpQ -> ExpQ -> ExpQ  ExpQExpQExpQ sectionLsectionL :: ExpQ -> ExpQ -> ExpQ  ExpQExpQExpQhscanl scanl :: (Char -> Char -> Char) -> Char ->  ByteString ->  ByteStringʯ  CharCharCharChar ByteString ByteStringscanl is similar to foldl, but returns a list of successive reduced values from the left. This function will fuse.
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
last (scanl f z xs) == foldl f z xs.
satisfysatisfy :: Stream s m Char => (Char -> Bool) -> ParsecT s u m Char J StreamsmCharCharBoolParsecTsumCharThe parser satisfy f succeeds for any character for which the supplied function f returns True. Returns the character that is actually parsed.  Safetydata Safetyc  safesafe :: Safety  Safety SafeSafe :: Safety۲ Ҳ SafetyRWSTRWST :: (r -> s -> m (a, s, w)) -> RWST r w s m aq 9 rsm(,,)aswRWSTrwsmaRWSTnewtype RWST r w s m a RWSTRWST :: (r -> s -> m (a, s, w)) -> RWST r w s m a@  rsm(,,)aswRWSTrwsmaRWSTnewtype RWST r w s m ay RWSRWS :: (r -> s -> (a, s, w)) ->  RWS r w s a д rs(,,)aswRWSrwsaRWSnewtype RWS r w s a4 RWSRWS :: (r -> s -> (a, s, w)) ->  RWS r w s a  rs(,,)aswRWSrwsaRWSnewtype RWS r w s a  runWriterT runWriterT ::  WriterT w m a -> m (a, w)r I WriterTwmam(,)aw runWriterT runWriterT ::  WriterT w m a -> m (a, w) ̶ WriterTwmam(,)aw runWriter runWriter ::  Writer w a -> (a, w)h H Writerwa(,)aw runWriter runWriter ::  Writer w a -> (a, w)۷  Writerwa(,)aw runStateT runStateT ::  StateT s m a -> s -> m (a, s)j ? StateTsmasm(,)as runStateT runStateT ::  StateT s m a -> s -> m (a, s) θ StateTsmasm(,)asrunStaterunState ::  State s a -> s -> (a, s)x V Statesas(,)asrunStaterunState ::  State s a -> s -> (a, s) չ Statesas(,)asIrunSTrunST :: ST s a -> aK 9 STsaaReturn the value computed by a state transformer computation. The forall ensures that the internal state used by the ST computation is inaccessible to the rest of the program. runRWST runRWST :: RWST r w s m a -> r -> s ->  m (a, s, w) } RWSTrwsmarsm(,,)aswrunRWST runRWST :: RWST r w s m a -> r -> s ->  m (a, s, w)[ % RWSTrwsmarsm(,,)aswrunRWS runRWS ::  RWS r w s a -> r -> s ->  (a, s, w) Ƽ RWSrwsars(,,)aswrunRWS runRWS ::  RWS r w s a -> r -> s ->  (a, s, w) ^ RWSrwsars(,,)asw runQrunQ ::  Quasi m => Q a -> m a ս QuasimQama runParser  runParser :: GenParser tok st a -> st ->  SourceName -> [tok] -> Either ParseError a   GenParsertokstast SourceName[]tokEither ParseErrora runIOrunIO :: IO a -> Q a7 # IOaQaThe runIO function lets you run an I/O computation in the Q monad. Take care: you are guaranteed the ordering of calls to runIO within a single Q computation, but not about the order in which splices are run. Note: for various murky reasons, stdout and stderr handles are not necesarily flushed when the compiler finishes running, so you should flush them yourself.  run_run_ :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> g a b 8 DynGraphgOrdagabNodeMapMabgrgab5Run a construction and only return the Graph.  runrun :: (DynGraph g, Ord a) => g a b -> NodeMapM a b g r -> (r, (NodeMap a, g a b)) = DynGraphgOrdagabNodeMapMabgr(,)r(,)NodeMapagabuRun a construction; return the value of the computation, the modified NodeMap, and the modified Graph.  rparenrparen :: DocU O DocA ')' character hreversereverse ::  ByteString ->  ByteString   ByteString ByteString]O(n) reverse xs returns the elements of xs in reverse order.  returnQreturnQ :: a -> Q a s aQa ReturnCode ReturnCode :: CInt ->  ReturnCode  CInt ReturnCode ReturnCodenewtype  ReturnCode$ ReturnCode is an enumerated CInt, corresponding to the error codes from man 3 regex:
  • retBadbr (REG_BADBR) invalid repetition count(s) in { }
  • retBadpat (REG_BADPAT) invalid regular expression
  • retBadrpt (REG_BADRPT) ?, *, or + operand invalid
  • retEcollate (REG_ECOLLATE) invalid collating element
  • retEctype (REG_ECTYPE) invalid character class
  • retEescape (REG_EESCAPE) \ applied to unescapable character
  • retEsubreg (REG_ESUBREG) invalid backreference number
  • retEbrack (REG_EBRACK) brackets [ ] not balanced
  • retEparen (REG_EPAREN) parentheses ( ) not balanced
  • retEbrace (REG_EBRACE) braces { } not balanced
  • retErange (REG_ERANGE) invalid character range in [ ]
  • retEspace (REG_ESPACE) ran out of memory
  • retNoMatch (REG_NOMATCH) The regexec() function failed to match
 ReturnCodedata  ReturnCode ReturnCode is an enumerated CInt, corresponding to the error codes from man 3 regex:
  • retBadbr (REG_BADBR) invalid repetition count(s) in { }
  • retBadpat (REG_BADPAT) invalid regular expression
  • retBadrpt (REG_BADRPT) ?, *, or + operand invalid
  • retEcollate (REG_ECOLLATE) invalid collating element
  • retEctype (REG_ECTYPE) invalid character class
  • retEescape (REG_EESCAPE) \ applied to unescapable character
  • retEsubreg (REG_ESUBREG) invalid backreference number
  • retEbrack (REG_EBRACK) brackets [ ] not balanced
  • retEparen (REG_EPAREN) parentheses ( ) not balanced
  • retEbrace (REG_EBRACE) braces { } not balanced
  • retErange (REG_ERANGE) invalid character range in [ ]
  • retEspace (REG_ESPACE) ran out of memory
  • retNoMatch (REG_NOMATCH) The regexec() function failed to match
 ReturnCodedata  ReturnCode ReturnCode is an enumerated CInt, corresponding to the error codes from man 3 regex:
  • retBadbr (REG_BADBR) invalid repetition count(s) in { }
  • retBadpat (REG_BADPAT) invalid regular expression
  • retBadrpt (REG_BADRPT) ?, *, or + operand invalid
  • retEcollate (REG_ECOLLATE) invalid collating element
  • retEctype (REG_ECTYPE) invalid character class
  • retEescape (REG_EESCAPE) \ applied to unescapable character
  • retEsubreg (REG_ESUBREG) invalid backreference number
  • retEbrack (REG_EBRACK) brackets [ ] not balanced
  • retEparen (REG_EPAREN) parentheses ( ) not balanced
  • retEbrace (REG_EBRACE) braces { } not balanced
  • retErange (REG_ERANGE) invalid character range in [ ]
  • retEspace (REG_ESPACE) ran out of memory
  • retNoMatch (REG_NOMATCH) The regexec() function failed to match
 ReturnCodedata  ReturnCode ReturnCode is an enumerated CInt, corresponding to the error codes from man 3 regex:
  • retBadbr (REG_BADBR) invalid repetition count(s) in { }
  • retBadpat (REG_BADPAT) invalid regular expression
  • retBadrpt (REG_BADRPT) ?, *, or + operand invalid
  • retEcollate (REG_ECOLLATE) invalid collating element
  • retEctype (REG_ECTYPE) invalid character class
  • retEescape (REG_EESCAPE) \ applied to unescapable character
  • retEsubreg (REG_ESUBREG) invalid backreference number
  • retEbrack (REG_EBRACK) brackets [ ] not balanced
  • retEparen (REG_EPAREN) parentheses ( ) not balanced
  • retEbrace (REG_EBRACE) braces { } not balanced
  • retErange (REG_ERANGE) invalid character range in [ ]
  • retEspace (REG_ESPACE) ran out of memory
  • retNoMatch (REG_NOMATCH) The regexec() function failed to match
 retEsubreg retEsubreg ::  ReturnCode   ReturnCode retEspace retEspace ::  ReturnCode   ReturnCode retErange retErange ::  ReturnCodeh [  ReturnCode retEparen retEparen ::  ReturnCode   ReturnCode retEescape retEescape ::  ReturnCode   ReturnCode retEctype retEctype ::  ReturnCodeT G  ReturnCode retEcollate retEcollate ::  ReturnCode   ReturnCode retEbrack retEbrack ::  ReturnCode   ReturnCode retEbrace retEbrace ::  ReturnCodeB 5  ReturnCode retBadrpt retBadrpt ::  ReturnCode   ReturnCode retBadpat retBadpat ::  ReturnCode   ReturnCoderetBadbrretBadbr ::  ReturnCode*   ReturnCode resetTerminal resetTerminal ::  Maybe String -> IO ()  MaybeStringIO()reservedOpNamesreservedOpNames :: GenLanguageDef s u m -> [String];  GenLanguageDefsum[]String The list of reserved operators. reservedOpNamesreservedOpNames :: GenLanguageDef s u m -> [String]  GenLanguageDefsum[]String The list of reserved operators.  reservedOp reservedOp :: GenTokenParser s u m -> String -> ParsecT s u m ()  GenTokenParsersumStringParsecTsum()The lexeme parser reservedOp name parses symbol name, but it also checks that the name is not a prefix of a valid operator. A reservedOp is treated as a single token using try.  reservedNames reservedNames :: GenLanguageDef s u m -> [String]:  GenLanguageDefsum[]String"The list of reserved identifiers.  reservedNames reservedNames :: GenLanguageDef s u m -> [String]  GenLanguageDefsum[]String"The list of reserved identifiers. reservedreserved :: GenTokenParser s u m -> String -> ParsecT s u m ()  GenTokenParsersumStringParsecTsum()The lexeme parser reserved name parses symbol name, but it also checks that the name is not a prefix of a valid identifier. A reserved word is treated as a single token using try.  reportreport :: Bool -> String -> Q ()  BoolStringQ()h replicate replicate :: Int64 -> Char ->  ByteString x Int64Char ByteString{O(n) replicate n x is a ByteString of length n with x the value of every element. hrepeatrepeat :: Char ->  ByteStringo Z Char ByteString`repeat x is an infinite ByteString, with x the value of every element.  renamerename :: Pat -> Q ([(Name, Name)], Pat)X & PatQ(,)[](,)NameNamePat reifyreify :: Name -> Q Info  NameQInfo8reify looks up information about the Name  RegOffsettype  RegOffset = Int64) /RegOffset is typedef int regoff_t on Linux and ultimately typedef long long __int64_t on Max OS X. So rather than saying 2,147,483,647 is all the length you need, I'll take the larger: 9,223,372,036,854,775,807 should be enough bytes for anyone, no need for Integer. The alternative is to compile to different sizes in a platform dependent manner with type RegOffset = (#type regoff_t), which I do not want to do. There is also a special value unusedRegOffset :: RegOffset which is (-1) and as a starting index means that the subgroup capture was unused. Otherwise the RegOffset indicates a character boundary that is before the character at that index offset, with the first character at index offset 0. So starting at 1 and ending at 2 means to take only the second character.  RegexLikeclass Extract source =>  RegexLike regex source RegexLike is parametrized on a regular expression type and a source type to run the matching on. There are default implementations: matchTest and matchOnceText use matchOnce; matchCount and matchAllText use matchAll. matchOnce uses matchOnceText and matchAll uses matchAllText. So a minimal complete instance need to provide at least (matchOnce or matchOnceText) and (matchAll or matchAllText). Additional definitions are often provided where they will increase efficiency.
[ c | let notVowel = makeRegex "[^aeiou]" :: Regex, c <- ['a'..'z'], matchTest notVowel [c]  ]

"bcdfghjklmnpqrstvwxyz"
The strictness of these functions is instance dependent. regexecregexec :: Regex -> String -> @IO (Either WrapError (Maybe (String, String, String, [String])))G  RegexStringIOEither WrapErrorMaybe(,,,)StringStringString[]String.Matches a regular expression against a string regexecregexec :: Regex -> Seq Char -> HIO (Either WrapError (Maybe (Seq Char, Seq Char, Seq Char, [Seq Char])))  RegexSeqCharIOEither WrapErrorMaybe(,,,)SeqCharSeqCharSeqChar[]SeqChar.Matches a regular expression against a string regexecregexec :: Regex ->  ByteString -> PIO (Either WrapError (Maybe (ByteString, ByteString, ByteString, [ByteString]))) k Regex ByteStringIOEither WrapErrorMaybe(,,,) ByteString ByteString ByteString[] ByteString RegexContextclass RegexLike regex source =>  RegexContext regex source targetO RegexContext is the polymorphic interface to do matching. Since target is polymorphic you may need to suply the type explicitly in contexts where it cannot be inferred. The monadic matchM version uses fail to report when the regex has no match in source. Two examples: Here the contest Bool is inferred:
[ c | let notVowel = makeRegex "[^aeiou]" :: Regex, c <- ['a'..'z'], match notVowel [c]  ]

"bcdfghjklmnpqrstvwxyz"
Here the context '[String]' must be supplied:
let notVowel = (makeRegex "[^aeiou]" :: Regex )
in do { c <- ['a'..'z'] ; matchM notVowel [c] } :: [String]

["b","c","d","f","g","h","j","k","l","m","n","p","q","r","s","t","v","w","x","y","z"]
Regexdata RegexL A compiled regular expression. Regexdata Regex A compiled regular expression. Regexdata Regex A compiled regular expression. Regexdata Regex3 A compiled regular expression.  redisplay redisplay :: IO ()  IO() recUpdErecUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ'  ExpQ[]Q(,)NameExpExpQ RecUpdERecUpdE :: Exp ->  [FieldExp] -> Exp  Exp[]FieldExpExp recPrecP :: Name ->  [FieldPatQ] -> PatQ  Name[] FieldPatQPatQ RecPRecP :: Name ->  [FieldPat] -> Pat m Name[]FieldPatPat recoverrecover :: Q a -> Q a -> Q a  QaQaQa recConErecConE :: Name -> [Q (Name, Exp)] -> ExpQ \ Name[]Q(,)NameExpExpQ RecConERecConE :: Name ->  [FieldExp] -> Exp  Name[]FieldExpExp recCrecC :: Name -> [VarStrictTypeQ] -> ConQ _ Name[]VarStrictTypeQConQ RecCRecC :: Name -> [VarStrictType] -> Con  Name[] VarStrictTypeCon readTMVar readTMVar :: TMVar a -> STM aj Q TMVaraSTMaThis is a combination of takeTMVar and putTMVar; ie. it takes the value from the TMVar, puts it back, and also returns it.  readTChan readTChan :: TChan a -> STM ab I TChanaSTMa+Read the next value from the TChan. readlinereadline :: String -> IO (Maybe String)  StringIOMaybeStringreadline is similar to System.IO.getLine, but with rich edit functionality and history capability. readline will read a line from the terminal and return it, using prompt as a prompt. If prompt is the empty string, no prompt is issued. The line returned has the final newline removed, so only the text of the line remains. A blank line returns the empty string. If EOF is encountered while reading a line, and the line is empty, Nothing is returned. If an EOF is read with a non-empty line, it is treated as a newline. readKeyreadKey :: IO Char\ O IOCharh readInteger readInteger ::  ByteString -> Maybe (Integer, ByteString)   ByteStringMaybe(,)Integer ByteStringreadInteger reads an Integer from the beginning of the ByteString. If there is no integer at the beginning of the string, it returns Nothing, otherwise it just returns the int read, and the rest of the string. hreadIntreadInt ::  ByteString -> Maybe (Int, ByteString)^ .  ByteStringMaybe(,)Int ByteStringreadInt reads an Int from the beginning of the ByteString. If there is no integer at the beginning of the string, it returns Nothing, otherwise it just returns the int read, and the rest of the string.  readInitFile readInitFile :: String -> IO () | StringIO() readHistory readHistory :: FilePath -> IO Bool  FilePathIOBoolcRead in a history file. Returns False on failure (for example, if the file does not exist). hreadFilereadFile :: FilePath ->  IO ByteString  FilePathIO ByteStringmRead an entire file lazily into a ByteString. Use 'text mode' on Windows to interpret newlines  rbrackrbrack :: Doc y DocA ']' character  rbracerbrace :: Doc  DocA '}' character RawRaw :: Format   FormatThe zlib format uses a minimal header with a checksum but no other meta-data. It is especially designed for use in network protocols. The format is described in detail in RFC #1950 http://www.ietf.org/rfc/rfc1950.txt  rationalL rationalL :: Rational -> LitS A RationalLit RationalL RationalL :: Rational -> Lit  RationalLit rationalrational :: Rational -> Doc  RationalDoc RangeQtype RangeQ = Q RangeM  Rangedata Range{  quotesquotes :: Doc -> Doc  DocDoc Wrap document in '...'  quotePatquotePat ::  QuasiQuoter -> String -> Q Patp N  QuasiQuoterStringQPat quoteExpquoteExp ::  QuasiQuoter -> String -> Q Exp   QuasiQuoterStringQExp QuasiQuoter QuasiQuoter :: (String -> Q Exp) -> (String -> Q Pat) ->  QuasiQuoter u StringQExpStringQPat QuasiQuoter QuasiQuoterdata  QuasiQuoter  Quasiclass (Monad m, Functor m) => Quasi m0  qRunIOqRunIO ::  Quasi m => IO a -> m a  QuasimIOama qReportqReport ::  Quasi m => Bool -> String -> m ())  QuasimBoolStringm() qReifyqReify ::  Quasi m => Name -> m Info { QuasimNamemInfo qRecoverqRecover ::  Quasi m => m a -> m a -> m a#  Quasimmamama qNewNameqNewName ::  Quasi m => String -> m Name { QuasimStringmName qLocation qLocation ::  Quasi m => m Loc  QuasimmLoc Qdata Q a# pzeropzero :: GenParser tok st a~ d  GenParsertokstaputTMVarputTMVar :: TMVar a -> a -> STM ()  TMVaraaSTM()kPut a value into a TMVar. If the TMVar is currently full, putTMVar will retry. hputStrLnputStrLn ::  ByteString -> IO ()   ByteStringIO()7Write a ByteString to stdout, appending a newline byte hputStrputStr ::  ByteString -> IO ()f M  ByteStringIO()Write a ByteString to stdout putput :: MonadState s m => s -> m ()   MonadStatesmsm() punctuate punctuate :: Doc -> [Doc] -> [Doc]n P Doc[]Doc[]Doc`
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
 ptextptext :: String -> Doc"  StringDoc PrimTyConI  PrimTyConI :: Name -> Int -> Bool -> Info  NameIntBoolInfo preorderF preorderF :: [Tree a] -> [a]  []Treea[]a,Flatten multiple Trees in pre-order.  preorderpreorder :: Tree a -> [a]  Treea[]agFlatten a Tree, returning the elements in pre-order. Equivalent to flatten in Data.Tree. PrefixPrefix :: GenParser tok st (a -> a) -> Operator tok st a n  GenParsertokstaaOperatortoksta Precedencetype  Precedence = Int  pre'pre' ::  Context a b -> [Node]Q 1 Contextab[]Node2All Nodes linked from in a Context.  prepre ::  Graph gr => gr a b -> Node -> [Node]  GraphgrgrabNode[]Node=Find all Nodes that link to to the given Node.  pprVarStrictTypepprVarStrictType :: (Name, Strict, Type) -> Doc  (,,)NameStrictTypeDoc pprTyApppprTyApp :: (Type, [Type]) -> DocL + (,)Type[]TypeDoc pprStrictType pprStrictType :: (Strict, Type) -> Doc  (,)StrictTypeDoc pprPatpprPat ::  Precedence -> Pat -> Doc7   PrecedencePatDoc pprParendType pprParendType :: Type -> Doc  TypeDoc pprName'pprName' :: NameIs -> Name -> Doc  NameIsNameDoc pprNamepprName :: Name -> Doc[ M NameDoc pprMaybeExp pprMaybeExp ::  Precedence ->  Maybe Exp -> Doc   PrecedenceMaybeExpDoc PprMdata PprM a  pprLitpprLit ::  Precedence -> Lit -> Doc m  PrecedenceLitDoc pprintpprint ::  Ppr a => a -> String  PpraaString pprInfixExp pprInfixExp :: Exp -> DocE 8 ExpDoc pprFunArgType pprFunArgType :: Type -> Doc  TypeDoc pprFixity pprFixity :: Name -> Fixity -> Doc  NameFixityDoc pprFields pprFields ::  [(Name, Exp)] -> Doc j [](,)NameExpDoc pprExppprExp ::  Precedence -> Exp -> Doc   PrecedenceExpDoc pprCxtpprCxt :: Cxt -> DocL ? CxtDoc pprBodypprBody :: Bool -> Body -> Doc  BoolBodyDoc ppr_sigppr_sig :: Name -> Type -> Doc    NameTypeDoc ppr_listppr_list ::  Ppr a => [a] -> Doc p Ppra[]aDoc pprppr ::  Ppr a => a -> Doc  PpraaDoc Pprclass Ppr a  postorderF postorderF :: [Tree a] -> [a]~ a []Treea[]a-Flatten multiple Trees in post-order.  postorder postorder :: Tree a -> [a]  Treea[]a=Flatten a Tree, returning the elements in post-order.  POSIXTimetype  POSIXTime = NominalDiffTime POSIX time is the nominal time since 1970-01-01 00:00 UTC To convert from a Foreign.C.CTime or System.Posix.EpochTime, use realToFrac. posixSecondsToUTCTimeposixSecondsToUTCTime ::  POSIXTime -> UTCTime   POSIXTimeUTCTimeposixDayLengthposixDayLength :: NominalDiffTime  NominalDiffTime#86400 nominal seconds in every day  PortraitPortrait :: Oriento f Orient polymatchM polymatchM :: (RegexLike a b, Monad m) => a -> b -> m b   RegexLikeabMonadmabmb polymatch polymatch :: RegexLike a b => a -> b -> b t  RegexLikeababb pkgString pkgString :: PkgName -> String  PkgNameString PkgNametype PkgName = PackedString:! permutepermute :: Stream s Identity tok => StreamPermParser s st a ->  Parsec s st a" ! StreamsIdentitytokStreamPermParsersstaParsecsstaThe parser permute perm parses a permutation of parser described by perm. For example, suppose we want to parse a permutation of: an optional string of a's, the character b and an optional c. This can be described by:
test  = permute (tuple <$?> ("",many1 (char 'a'))
                       <||> char 'b' 
                       <|?> ('_',char 'c'))
      where
        tuple a b c  = (a,b,c)
 PermParsertype  PermParser tok st a = StreamPermParser String st a?$ ?Provided for backwards compatibility. The tok type is ignored.  PatQtype PatQ = Q Pat$  Pathtype Path = [Node]$ Unlabeled path  patGEpatGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)% Z% []StmtQExpQQ(,)GuardExp patGpatG :: [StmtQ] -> GuardQ% % []StmtQGuardQ PatGPatG :: [Stmt] -> Guard@& *& []StmtGuard Patdata Patj& passpass :: MonadWriter w m =>  m (a, w -> w) -> m a& &  MonadWriterwmm(,)awwma parseTest parseTest :: !(Stream s Identity t, Show a) =>  Parsec s () a -> s -> IO ()' ' StreamsIdentitytShowaParsecs()asIO()The expression parseTest p input applies a parser p against input input and prints the result to stdout. Used for testing parsers. parseTAIUTCDATFileparseTAIUTCDATFile :: String -> LeapSecondTable( ( StringLeapSecondTableParse the contents of a tai-utc.dat file. This does not do any kind of validation and will return a bad table for input not in the correct format. Parsertype Parser = Parsec String ()) Parsertype Parser = Parsec ByteString ()*  parseFromFile parseFromFile :: Parser a -> String -> IO (Either ParseError a)* * ParseraStringIOEither ParseErroraparseFromFile p filePath runs a string parser p on the input read from filePath using readFile. Returns either a ParseError (Left) or a value of type a (Right).
main    = do{ result <- parseFromFile numbers "digits.txt"
            ; case result of
                Left err  -> print err
                Right xs  -> print (sum xs)
            }
 parseFromFile parseFromFile :: Parser a -> String -> IO (Either ParseError a)'- , ParseraStringIOEither ParseErroraparseFromFile p filePath runs a lazy bytestring parser p on the input read from filePath using ByteString.Lazy.Char8.readFile. Returns either a ParseError (Left) or a value of type a (Right).
main    = do{ result <- parseFromFile numbers "digits.txt"
            ; case result of
                Left err  -> print err
                Right xs  -> print (sum xs)
            }
 ParseErrordata  ParseError(/ >The abstract data type ParseError represents parse errors. It provides the source position (SourcePos) of the error and a list of error messages (Message). A ParseError can be returned by the function Text.Parsec.Prim.parse. ParseError is an instance of the Show class.  parseAndBind parseAndBind :: String -> IO ()0 0 StringIO()parse parse :: Stream s Identity t =>  Parsec s () a ->  SourceName -> s -> Either ParseError a1 d1 StreamsIdentitytParsecs()a SourceNamesEither ParseErroraparse p filePath input runs a parser p over Identity without user state. The filePath is only used in error messages and may be the empty string. Returns either a ParseError (Left) or a value of type a (Right).
main    = case (parse numbers "" "11, 2, 43") of
           Left err  -> print err
           Right xs  -> print (sum xs)

numbers = commaSep integer
 parSparS ::  [[StmtQ]] -> StmtQ3 3 [][]StmtQStmtQ ParSParS :: [[Stmt]] -> Stmt74 4 [][]StmtStmt parensIfparensIf :: Bool -> Doc -> Doc4 4 BoolDocDocparensparens :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m ah5 5 GenTokenParsersumParsecTsumaParsecTsumanLexeme parser parens p parses p enclosed in parenthesis, returning the value of p.  parensparens :: Doc -> Doc&6 6 DocDoc Wrap document in (...) hpackpack :: [Char] ->  ByteString6 6 []Char ByteString>O(n) Convert a String into a ByteString.  outdeg'outdeg' ::  Context a b -> IntN7 57 ContextabInt(The outward degree of a Context.  outdegoutdeg ::  Graph gr => gr a b -> Node -> Int7 7 GraphgrgrabNodeInt-The outward-bound degree of the Node.  out'out' ::  Context a b ->  [LEdge b]8 y8 Contextab[]LEdgeb8All outward-directed LEdges in a Context.  outout ::  Graph gr => gr a b -> Node ->  [LEdge b]m9 99 GraphgrgrabNode[]LEdgeb@Find all outward-bound LEdges for the given Node.  orthodoxPaschalMoonorthodoxPaschalMoon :: Integer -> Day: : IntegerDaySGiven a year, find the Paschal full moon according to Orthodox Christian tradition  orthodoxEasterorthodoxEaster :: Integer -> Day: : IntegerDayDGiven a year, find Easter according to Orthodox Christian tradition  Orientdata OrientN;  optionMaybe optionMaybe :: Stream s m t => ParsecT s u m a -> ParsecT s u m (Maybe a)< ; StreamsmtParsecTsumaParsecTsumMaybeaoption p tries to apply parser p. If p fails without consuming input, it return Nothing, otherwise it returns Just the value returned by p. optionaloptional :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()= F= StreamsmtParsecTsumaParsecTsum()optional p tries to apply parser p. It will parse p or nothing. It only fails if p fails after consuming input. It discards the result of p. optionoption :: Stream s m t => a -> ParsecT s u m a -> ParsecT s u m a? > StreamsmtaParsecTsumaParsecTsuma2option x p tries to apply parser p. If p fails without consuming input, it returns the value x, otherwise the value returned by p.
priority  = option 0 (do{ d <- digit
                        ; return (digitToInt d) 
                        })
opStartopStart :: GenLanguageDef s u m -> ParsecT s u m Char@ @ GenLanguageDefsumParsecTsumCharzThis parser should accept any start characters of operators. For example oneOf ":!#$%&*+./<=>?@\\^|-~" opStartopStart :: GenLanguageDef s u m -> ParsecT s u m CharA A GenLanguageDefsumParsecTsumCharzThis parser should accept any start characters of operators. For example oneOf ":!#$%&*+./<=>?@\\^|-~"  opPrecopPrec ::  PrecedenceB B  PrecedenceopLetteropLetter :: GenLanguageDef s u m -> ParsecT s u m CharKC C GenLanguageDefsumParsecTsumCharThis parser should accept any legal tail characters of operators. Note that this parser should even be defined if the language doesn't support user-defined operators, or otherwise the reservedOp parser won't work correctly. opLetteropLetter :: GenLanguageDef s u m -> ParsecT s u m CharD D GenLanguageDefsumParsecTsumCharThis parser should accept any legal tail characters of operators. Note that this parser should even be defined if the language doesn't support user-defined operators, or otherwise the reservedOp parser won't work correctly.  OperatorTabletype  OperatorTable tok st a = [[Operator tok st a]]F operatoroperator :: GenTokenParser s u m -> ParsecT s u m StringF F GenTokenParsersumParsecTsumString_This lexeme parser parses a legal operator. Returns the name of the operator. This parser will fail on any operators that are reserved operators. Legal operator (start) characters and reserved operators are defined in the LanguageDef that is passed to makeTokenParser. An operator is treated as a single token using try. Operatordata Operator tok st aXH oneOfoneOf :: Stream s m Char => [Char] -> ParsecT s u m CharH H StreamsmChar[]CharParsecTsumCharoneOf cs succeeds if the current character is in the supplied list of characters cs. Returns the parsed character. See also satisfy.
vowel  = oneOf "aeiou"
octDigitoctDigit :: Stream s m Char => ParsecT s u m CharKJ J StreamsmCharParsecTsumCharWParses an octal digit (a character between '0' and '7'). Returns the parsed character. octaloctal :: GenTokenParser s u m -> ParsecT s u m IntegerAK K GenTokenParsersumParsecTsumIntegerParses a positive whole number in the octal system. The number should be prefixed with "0o" or "0O". Returns the value of the number.  occString occString :: OccName -> String+L L OccNameString OccNametype OccName = PackedStringnL hnullnull ::  ByteString -> BoolL L  ByteStringBool0O(1) Test whether a ByteString is empty.  notStrict notStrict :: Q StrictGM 9M QStrict NotStrict NotStrict :: StrictM M Strict notFollowedBy notFollowedBy :: (Stream s m t, Show t) => ParsecT s u m t -> ParsecT s u m ()aN N StreamsmtShowtParsecTsumtParsecTsum()7notFollowedBy p only succeeds when parser p fails. This parser does not consume any input. This parser can be used to implement the 'longest match' rule. For example, when recognizing keywords (for example let), we want to make sure that a keyword is not followed by a legal identifier character, in which case the keyword is actually an identifier (for example lets). We can program this behaviour as follows:
keywordLet  = try (do{ string "let"
                     ; notFollowedBy alphaNum
                     })
hnotElemnotElem :: Char ->  ByteString -> BoolQ P Char ByteStringBool9O(n) notElem is the inverse of elem  normalGEnormalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)Q Q ExpQExpQQ(,)GuardExp normalGnormalG :: ExpQ -> GuardQ-R R ExpQGuardQ NormalGNormalG :: Exp -> GuardR tR ExpGuard normalCnormalC :: Name ->  [StrictTypeQ] -> ConQS R Name[] StrictTypeQConQ NormalCNormalC :: Name ->  [StrictType] -> ConS cS Name[] StrictTypeCon normalBnormalB :: ExpQ -> BodyQS S ExpQBodyQ NormalBNormalB :: Exp -> Body/T !T ExpBody noPrecnoPrec ::  PrecedencewT jT  Precedence noNodesMnoNodesM :: GraphM m gr =>  m (gr a b) -> m IntU T GraphMmgrmgrabmInt noNodesnoNodes ::  Graph gr => gr a b -> IntzU YU GraphgrgrabIntnoneOfnoneOf :: Stream s m Char => [Char] -> ParsecT s u m Char!V U StreamsmChar[]CharParsecTsumCharAs the dual of oneOf, noneOf cs succeeds if the current character not in the supplied list of characters cs. Returns the parsed character.
consonant = noneOf "aeiou"
noMsgnoMsg ::  Error a => a@W 0W Erroraa noEdgesnoEdges :: [UEdge]W zW []UEdgeempty (unlabeled) edge list  nodesMnodesM :: GraphM m gr =>  m (gr a b) -> m [Node]8X X GraphMmgrmgrabm[]Node nodesnodes ::  Graph gr => gr a b -> [Node]X X Graphgrgrab[]Node+List all Nodes in the Graph.  nodeRangeM nodeRangeM :: GraphM m gr =>  m (gr a b) -> m (Node, Node)Y JY GraphMmgrmgrabm(,)NodeNode nodeRange nodeRange ::  Graph gr => gr a b ->  (Node, Node)Z Y Graphgrgrab(,)NodeNode NodeMapMtype NodeMapM a b g r = State (NodeMap a, g a b) rrZ XGraph construction monad; handles passing both the NodeMap and the Graph.  NodeMapdata  Ord a => NodeMap a[  node'node' ::  Context a b -> Nodek[ Q[ ContextabNode%The Node in a Context.  Nodetype Node = Int[ Unlabeled node  NoCompression NoCompression :: CompressionLevel5\ "\ CompressionLevel#No compression, just a block copy.  NoCompression NoCompression :: CompressionLevel\ \ CompressionLevel#No compression, just a block copy.  noBindSnoBindS :: ExpQ -> StmtQ5] %] ExpQStmtQ NoBindSNoBindS :: Exp -> Stmt] {] ExpStmt nmapnmap :: DynGraph gr => (a -> c) -> gr a b -> gr c b$^ ] DynGraphgracgrabgrcb7Map a function over the Node labels in a graph.  newtypeDnewtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ_ ^ CxtQName[]NameConQ[]NameDecQ NewtypeDNewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> Dec_ _ CxtName[]NameCon[]NameDec newTMVarIO newTMVarIO :: a ->  IO (TMVar a)?` '` aIOTMVaraIO version of newTMVar. This is useful for creating top-level TMVars using System.IO.Unsafe.unsafePerformIO, because using atomically inside System.IO.Unsafe.unsafePerformIO isn't possible. newTMVarnewTMVar :: a ->  STM (TMVar a)a ja aSTMTMVara9Create a TMVar which contains the supplied value.  newTChanIO newTChanIO ::  IO (TChan a)b b IOTChanaIO version of newTChan. This is useful for creating top-level TChans using System.IO.Unsafe.unsafePerformIO, because using atomically inside System.IO.Unsafe.unsafePerformIO isn't possible. newTChannewTChan ::  STM (TChan a)Fc 2c STMTChana1Build and returns a new instance of TChan newPos newPos ::  SourceName -> Line -> Column ->  SourcePosd c  SourceNameLineColumn SourcePosYCreate a new SourcePos with the given source name, line number and column number.  newNodesM newNodesM :: GraphM m gr => Int ->  m (gr a b) -> m [Node]e d GraphMmgrIntmgrabm[]Node newNodesnewNodes ::  Graph gr => Int -> gr a b -> [Node]e e GraphgrIntgrab[]NodeXList N available Nodes, i.e. Nodes that are not used in the Graph.  newNamenewName :: String -> Q Nameff Pf StringQNamenewlinenewline :: Stream s m Char => ParsecT s u m Charf f StreamsmCharParsecTsumChar@Parses a newline character ('\n'). Returns a newline character. newErrorUnknownnewErrorUnknown ::  SourcePos ->  ParseErrorg g  SourcePos ParseErrornewErrorMessagenewErrorMessage :: Message ->  SourcePos ->  ParseErrorCh  h Message SourcePos ParseErrornewEmptyTMVarIOnewEmptyTMVarIO ::  IO (TMVar a)h h IOTMVaraIO version of newEmptyTMVar. This is useful for creating top-level TMVars using System.IO.Unsafe.unsafePerformIO, because using atomically inside System.IO.Unsafe.unsafePerformIO isn't possible.  newEmptyTMVar newEmptyTMVar ::  STM (TMVar a)i i STMTMVara0Create a TMVar which is initially empty.  newnew ::  Ord a =>  NodeMap alj Sj OrdaNodeMapaCreate a new, empty mapping. nestedCommentsnestedComments :: GenLanguageDef s u m -> Boolk j GenLanguageDefsumBoolCSet to True if the language supports nested block comments. nestedCommentsnestedComments :: GenLanguageDef s u m -> Boolk k GenLanguageDefsumBoolCSet to True if the language supports nested block comments.  nestDepth nestDepth :: Intal [l Int nestnest :: Int -> Doc -> Docl l IntDocDocNested  neighbors' neighbors' ::  Context a b -> [Node]>m m Contextab[]Node8All Nodes linked to or from in a Context.  neighbors neighbors ::  Graph gr => gr a b -> Node -> [Node]n m GraphgrgrabNode[]Node&Find the neighbors for a Node. naturalOrFloatnaturalOrFloat :: GenTokenParser s u m -> %ParsecT s u m (Either Integer Double)o n GenTokenParsersumParsecTsumEitherIntegerDouble This lexeme parser parses either natural or a float. Returns the value of the number. This parsers deals with any overlap in the grammar rules for naturals and floats. The number is parsed according to the grammar rules defined in the Haskell report. naturalnatural :: GenTokenParser s u m -> ParsecT s u m Integerp yp GenTokenParsersumParsecTsumIntegerThis lexeme parser parses a natural number (a positive whole number). Returns the value of the number. The number can be specified in decimal, hexadecimal or octal. The number is parsed according to the grammar rules in the Haskell report.  NameUNameU :: Int# ->  NameFlavourr r Int# NameFlavour NameSpacedata  NameSpaceOr  NameSNameS ::  NameFlavourr r  NameFlavour NameQNameQ :: ModName ->  NameFlavourr r ModName NameFlavour nameModule nameModule :: Name ->  Maybe Stringls Rs NameMaybeString NameLNameL :: Int# ->  NameFlavours s Int# NameFlavour NameIsdata NameIss  NameG NameG ::  NameSpace -> PkgName -> ModName ->  NameFlavourt qt  NameSpacePkgNameModName NameFlavour NameFlavourdata  NameFlavourt  nameBasenameBase :: Name -> String4u #u NameString NameName :: OccName ->  NameFlavour -> Nameu u OccName NameFlavourName Namedata Nameu mrSubsmrSubs ::  MatchResult a ->  Array Int aUv /v  MatchResultaArrayInta mrSubList mrSubList ::  MatchResult a -> [a]v v  MatchResulta[]amrMatchmrMatch ::  MatchResult a -> a+w w  MatchResultaamrBeforemrBefore ::  MatchResult a -> aw zw  MatchResultaamrAftermrAfter ::  MatchResult a -> aw w  MatchResultaaMRMR :: a -> a -> a -> [a] ->  Array Int a ->  MatchResult ax zx aaa[]aArrayInta MatchResulta  monthLength monthLength :: Bool -> Int -> Int"y y BoolIntInt^the length of a given month in the Gregorian or Julian calendars. First arg is leap year flag  monthAndDayToDayOfYear monthAndDayToDayOfYear :: Bool -> Int -> Int -> Intz z BoolIntIntIntgconvert month and day in the Gregorian or Julian calendars to day of year. First arg is leap year flag  mondrianDef mondrianDef :: LanguageDef stz z  LanguageDefst3The language definition for the language Mondrian. mondrianmondrian :: TokenParser sth{ T{  TokenParserst#A lexer for the mondrian language. mondayStartWeekmondayStartWeek :: Day ->  (Int, Int)| { Day(,)IntIntGet the number of the Monday-starting week in the year and the day of the week. The first Monday is the first day of week 1, any earlier days in the year are week 0 (as "%W" in Data.Time.Format.formatTime). Monday is 1, Sunday is 7 (as "%u" in Data.Time.Format.formatTime).  MonadContclass  Monad m =>  MonadCont mV}  modString modString :: ModName -> String} } ModNameString ModNametype ModName = PackedString} modifymodify :: MonadState s m => (s -> s) -> m ()~ X~  MonadStatesmssm()`Monadic state transformer. Maps an old state to a new state inside a state monad. The old state is thrown away.
Main> :t modify ((+1) :: Int -> Int)
modify (...) :: (MonadState Int a) => a ()
This says that modify (+1) acts over any Monad that is a member of the MonadState class, with an Int state.  mkUGraphM mkUGraphM :: GraphM m gr => [Node] -> [Edge] ->  m (gr () ()) V GraphMmgr[]Node[]Edgemgr()() mkUGraphmkUGraph ::  Graph gr => [Node] -> [Edge] -> gr () ()8  Graphgr[]Node[]Edgegr()()&Build a quasi-unlabeled Graph.  mkPkgName mkPkgName :: String -> PkgName  StringPkgName mkOccName mkOccName :: String -> OccName&  StringOccName mkNodesMmkNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a]  OrdaDynGraphg[]aNodeMapMabg[]LNodea mkNodes_mkNodes_ ::  Ord a =>  NodeMap a -> [a] ->  [LNode a] P OrdaNodeMapa[]a[]LNodeaFConstruct a list of nodes and throw away the modified NodeMap.  mkNodesmkNodes ::  Ord a =>  NodeMap a -> [a] -> ([LNode a], NodeMap a) B OrdaNodeMapa[]a(,)[]LNodeaNodeMapaConstruct a list of nodes.  mkNodeMmkNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a)W  OrdaDynGraphgaNodeMapMabgLNodeaMonadic node construction.  mkNode_mkNode_ ::  Ord a =>  NodeMap a -> a -> LNode a ׅ OrdaNodeMapaaLNodeaEGenerate a labelled node and throw away the modified NodeMap.  mkNodemkNode ::  Ord a =>  NodeMap a -> a -> (LNode a, NodeMap a)  OrdaNodeMapaa(,)LNodeaNodeMapa]Generate a labelled node from the given label. Will return the same node for the same label.  mkNameUmkNameU :: String -> Uniq -> Name‡  StringUniqName mkNameLmkNameL :: String -> Uniq -> Name2  StringUniqName mkNameG_v  mkNameG_v :: String -> String -> String -> NameĈ  StringStringStringName mkNameG_tc  mkNameG_tc :: String -> String -> String -> NameX 7 StringStringStringName mkNameG_d  mkNameG_d :: String -> String -> String -> Name ɉ StringStringStringName mkNamemkName :: String -> NameB 1 StringName mkModName mkModName :: String -> ModName  StringModName mkMapGraph mkMapGraph :: (Ord a, DynGraph g) => [a] ->  [(a, a, b)] -> (g a b, NodeMap a) . OrdaDynGraphg[]a[](,,)aab(,)gabNodeMapa mkGraphMmkGraphM :: GraphM m gr =>  [LNode a] ->  [LEdge b] ->  m (gr a b)K  GraphMmgr[]LNodea[]LEdgebmgrab mkGraphmkGraph ::  Graph gr =>  [LNode a] ->  [LEdge b] -> gr a b  Graphgr[]LNodea[]LEdgebgrab mkEdgesMmkEdgesM :: (Ord a, DynGraph g) =>  [(a, a, b)] ->  NodeMapM a b g (Maybe [LEdge b]) } OrdaDynGraphg[](,,)aabNodeMapMabgMaybe[]LEdgeb mkEdgesmkEdges ::  Ord a =>  NodeMap a ->  [(a, a, b)] -> Maybe [LEdge b] W OrdaNodeMapa[](,,)aabMaybe[]LEdgeb#Generates a list of LEdges.  mkEdgeMmkEdgeM :: (Ord a, DynGraph g) =>  (a, a, b) ->  NodeMapM a b g (Maybe (LEdge b)) F OrdaDynGraphg(,,)aabNodeMapMabgMaybeLEdgeb mkEdgemkEdge ::  Ord a =>  NodeMap a ->  (a, a, b) -> Maybe (LEdge b)Q  OrdaNodeMapa(,,)aabMaybeLEdgeb.Generate a LEdge from the node labels. MinMemoryLevelMinMemoryLevel ::  MemoryLevelِ ː  MemoryLevelrUse minimum memory. This is slow and reduces the compression ratio. (Equivalent to MemoryLevel 1) MinMemoryLevelMinMemoryLevel ::  MemoryLevel   MemoryLevelrUse minimum memory. This is slow and reduces the compression ratio. (Equivalent to MemoryLevel 1) hminimumminimum ::  ByteString -> Chary d  ByteStringCharBminimum returns the minimum value from a ByteString Methoddata Method The compression method Methoddata Method2 The compression method  messageString messageString :: Message -> String  MessageString1Extract the message string from an error message  messageEq messageEq :: Message -> Message -> Boolb G MessageMessageBoolmessageComparemessageCompare :: Message -> Message -> Ordering є MessageMessageOrderingMessageMessage :: String -> MessageP < StringMessageMessagedata Message This abstract data type represents parse error messages. There are four kinds of messages:
data Message = SysUnExpect String
             | UnExpect String
             | Expect String
             | Message String
The fine distinction between different kinds of parse errors allows the system to generate quite good error messages for the user. It also allows error messages that are formatted in different languages. Each kind of message is generated by different combinators:
  • A SysUnExpect message is automatically generated by the Text.Parsec.Combinator.satisfy combinator. The argument is the unexpected input.
  • A UnExpect message is generated by the Text.Parsec.Prim.unexpected combinator. The argument describes the unexpected item.
  • A Expect message is generated by the Text.Parsec.Prim.<?> combinator. The argument describes the expected item.
  • A Message message is generated by the fail combinator. The argument is some general parser message.
 mergeError mergeError ::  ParseError ->  ParseError ->  ParseError7   ParseError ParseError ParseError MemoryLevel MemoryLevel :: Int ->  MemoryLevel  Int MemoryLevel0Use a specific level in the range 1..9  MemoryLeveldata  MemoryLevel BThe MemoryLevel parameter specifies how much memory should be allocated for the internal compression state. It is a tradoff between memory usage, compression ratio and compression speed. Using more memory allows faster compression and a better compression ratio. The total amount of memory used for compression depends on the WindowBits and the MemoryLevel. For decompression it depends only on the WindowBits. The totals are given by the functions:
compressTotal windowBits memLevel = 4 * 2^windowBits + 512 * 2^memLevel
decompressTotal windowBits = 2^windowBits
For example, for compression with the default windowBits = 15 and memLevel = 8 uses 256Kb. So for example a network server with 100 concurrent compressed streams would use 25Mb. The memory per stream can be halved (at the cost of somewhat degraded and slower compressionby) by reducing the windowBits and memLevel by one. Decompression takes less memory, the default windowBits = 15 corresponds to just 32Kb.  MemoryLevel MemoryLevel :: Int ->  MemoryLevel  Int MemoryLevel0Use a specific level in the range 1..9  MemoryLeveldata  MemoryLevel! BThe MemoryLevel parameter specifies how much memory should be allocated for the internal compression state. It is a tradoff between memory usage, compression ratio and compression speed. Using more memory allows faster compression and a better compression ratio. The total amount of memory used for compression depends on the WindowBits and the MemoryLevel. For decompression it depends only on the WindowBits. The totals are given by the functions:
compressTotal windowBits memLevel = 4 * 2^windowBits + 512 * 2^memLevel
decompressTotal windowBits = 2^windowBits
For example, for compression with the default windowBits = 15 and memLevel = 8 uses 256Kb. So for example a network server with 100 concurrent compressed streams would use 25Mb. The memory per stream can be halved (at the cost of somewhat degraded and slower compressionby) by reducing the windowBits and memLevel by one. Decompression takes less memory, the default windowBits = 15 corresponds to just 32Kb.  MContexttype MContext a b = Maybe (Context a b)  maxPrecedence maxPrecedence :: Int  IntMaxMemoryLevelMaxMemoryLevel ::  MemoryLevelU G  MemoryLevel`Use maximum memory for optimal compression speed. (Equivalent to MemoryLevel 9) MaxMemoryLevelMaxMemoryLevel ::  MemoryLevel   MemoryLevel`Use maximum memory for optimal compression speed. (Equivalent to MemoryLevel 9) hmaximummaximum ::  ByteString -> CharѦ   ByteStringCharBmaximum returns the maximum value from a ByteString  MatchTexttype  MatchText source1 = Array Int (source, (MatchOffset, MatchLength))  matchTest matchTest :: RegexLike regex source => regex -> source -> Bool/   RegexLikeregexsourceregexsourceBool MatchResultdata  MatchResult ak *This is the same as the type from JRegex.  MatchQtype MatchQ = Q MatchѨ  matchOnceText matchOnceText :: RegexLike regex source => regex -> source -> (Maybe (source, MatchText source, source)٩ u  RegexLikeregexsourceregexsourceMaybe(,,)source MatchTextsourcesource matchOnce matchOnce :: RegexLike regex source => regex -> source -> Maybe MatchArray ]  RegexLikeregexsourceregexsourceMaybe MatchArray MatchOffsettype  MatchOffset = Int 70 based index from start of source, or (-1) for unused matchMmatchM :: /(RegexContext regex source target, Monad m) => regex -> source -> m target   RegexContextregexsourcetargetMonadmregexsourcemtarget matchMmatchM :: GraphM m gr => Node ->  m (gr a b) -> m (Decomp gr a b) m GraphMmgrNodemgrabmDecompgrab MatchLengthtype  MatchLength = Int non-negative length of a match  matchCount matchCount :: RegexLike regex source => regex -> source -> Int   RegexLikeregexsourceregexsourceInt MatchArraytype  MatchArray' = Array Int (MatchOffset, MatchLength) z0 based array, with 0th index indicating the full match. If the full match location is not available, represent as (0,0).  matchAnyM matchAnyM :: GraphM m gr =>  m (gr a b) -> m (GDecomp gr a b)F  GraphMmgrmgrabmGDecompgrab matchAnymatchAny ::  Graph gr => gr a b -> GDecomp gr a bد  GraphgrgrabGDecompgrab matchAllText matchAllText :: RegexLike regex source => regex -> source -> [MatchText source] d  RegexLikeregexsourceregexsource[] MatchTextsourcematchAllmatchAll :: RegexLike regex source => regex -> source ->  [MatchArray]k +  RegexLikeregexsourceregexsource[] MatchArraymatchmatch :: $RegexContext regex source target => regex -> source -> target(   RegexContextregexsourcetargetregexsourcetarget match match :: PatQ -> BodyQ -> [DecQ] -> MatchQ  PatQBodyQ[]DecQMatchQ matchmatch ::  Graph gr => Node -> gr a b ->  Decomp gr a bT  GraphgrNodegrabDecompgrab Match Match :: Pat -> Body -> [Dec] -> Matchس  PatBody[]DecMatch Matchdata Match  mapWriterT mapWriterT :: (m (a, w) -> n (b, w')) ->  WriterT w m a -> WriterT w' n bܴ  m(,)awn(,)bw'WriterTwmaWriterTw'nb mapWriterT mapWriterT :: (m (a, w) -> n (b, w')) ->  WriterT w m a -> WriterT w' n b _ m(,)awn(,)bw'WriterTwmaWriterTw'nb mapWriter mapWriter :: ((a, w) -> (b, w')) ->  Writer w a ->  Writer w' bj ) (,)aw(,)bw'WriterwaWriterw'b mapWriter mapWriter :: ((a, w) -> (b, w')) ->  Writer w a ->  Writer w' b"  (,)aw(,)bw'WriterwaWriterw'b mapStateT mapStateT :: (m (a, s) -> n (b, s)) ->  StateT s m a ->  StateT s n b  m(,)asn(,)bsStateTsmaStateTsnbSimilar to mapState  mapStateT mapStateT :: (m (a, s) -> n (b, s)) ->  StateT s m a ->  StateT s n bո  m(,)asn(,)bsStateTsmaStateTsnbSimilar to mapState mapStatemapState :: ((a, s) -> (b, s)) ->  State s a ->  State s b a (,)as(,)bsStatesaStatesbMap a stateful computation from one (return value, state) pair to another. For instance, to convert numberTree from a function that returns a tree to a function that returns the sum of the numbered tree (see the Examples section for numberTree and sumTree) you may write:
sumNumberedTree :: (Eq a) => Tree a -> State (Table a) Int
sumNumberedTree = mapState (\ (t, tab) -> (sumTree t, tab))  . numberTree
mapStatemapState :: ((a, s) -> (b, s)) ->  State s a ->  State s b  (,)as(,)bsStatesaStatesbMap a stateful computation from one (return value, state) pair to another. For instance, to convert numberTree from a function that returns a tree to a function that returns the sum of the numbered tree (see the Examples section for numberTree and sumTree) you may write:
sumNumberedTree :: (Eq a) => Tree a -> State (Table a) Int
sumNumberedTree = mapState (\ (t, tab) -> (sumTree t, tab))  . numberTree
mapRWSTmapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n b ) m(,,)aswn(,,)bsw'RWSTrwsmaRWSTrw'snbmapRWSTmapRWST :: (m (a, s, w) -> n (b, s, w')) -> RWST r w s m a -> RWST r w' s n bp  m(,,)aswn(,,)bsw'RWSTrwsmaRWSTrw'snbmapRWSmapRWS :: ((a, s, w) -> (b, s, w')) ->  RWS r w s a ->  RWS r w' s b8  (,,)asw(,,)bsw'RWSrwsaRWSrw'sbmapRWSmapRWS :: ((a, s, w) -> (b, s, w')) ->  RWS r w s a ->  RWS r w' s b  (,,)asw(,,)bsw'RWSrwsaRWSrw'sbh mapAccumR  mapAccumR :: (acc -> Char -> (acc, Char)) -> acc ->  ByteString -> (acc, ByteString)  accChar(,)accCharacc ByteString(,)acc ByteStringThe mapAccumR function behaves like a combination of map and foldr; it applies a function to each element of a ByteString, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new ByteString. h mapAccumL  mapAccumL :: (acc -> Char -> (acc, Char)) -> acc ->  ByteString -> (acc, ByteString)  accChar(,)accCharacc ByteString(,)acc ByteStringThe mapAccumL function behaves like a combination of map and foldl; it applies a function to each element of a ByteString, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new ByteString. hmapmap :: (Char -> Char) ->  ByteString ->  ByteString~ U CharChar ByteString ByteStringvO(n) map f xs is the ByteString obtained by applying f to each element of xs manyTillmanyTill :: Stream s m t => ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]  StreamsmtParsecTsumaParsecTsumendParsecTsum[]amanyTill p end applies parser p zero or more times until parser end succeeds. Returns the list of values returned by p. This parser can be used to scan comments:
simpleComment   = do{ string "<!--"
                    ; manyTill anyChar (try (string "-->"))
                    }
Note the overlapping parsers anyChar and string "<!--", and therefore the use of the try combinator. many1many1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m [a]s ) StreamsmtParsecTsumaParsecTsum[]amany p applies the parser p one or more times. Returns a list of the returned values of p.
word  = many1 letter
manymany :: Stream s m t => ParsecT s u m a -> ParsecT s u m [a] | StreamsmtParsecTsumaParsecTsum[]amany p applies the parser p zero or more times. Returns a list of the returned values of p.
identifier  = do{ c  <- letter
                ; cs <- many (alphaNum <|> char '_')
                ; return (c:cs)
                }
makeTokenParsermakeTokenParser :: Stream s m Char => GenLanguageDef s u m -> GenTokenParser s u m n StreamsmCharGenLanguageDefsumGenTokenParsersumThe expression makeTokenParser language creates a GenTokenParser record that contains lexical parsers that are defined using the definitions in the language record. The use of this function is quite stylized - one imports the appropiate language definition and selects the lexical parsers that are needed from the resulting GenTokenParser.
module Main where

import Text.Parsec
import qualified Text.Parsec.Token as P
import Text.Parsec.Language (haskellDef)

-- The parser
...

expr  =   parens expr
      <|> identifier
      <|> ...
     

-- The lexer
lexer       = P.makeTokenParser haskellDef    
    
parens      = P.parens lexer
braces      = P.braces lexer
identifier  = P.identifier lexer
reserved    = P.reserved lexer
...
makeRegexOptsM makeRegexOptsM :: 6(RegexMaker regex compOpt execOpt source, Monad m) => compOpt -> execOpt -> source -> m regex   RegexMakerregexcompOptexecOptsourceMonadmcompOptexecOptsourcemregex makeRegexOpts  makeRegexOpts :: +RegexMaker regex compOpt execOpt source => compOpt -> execOpt -> source -> regex   RegexMakerregexcompOptexecOptsourcecompOptexecOptsourceregex makeRegexM makeRegexM :: 6(RegexMaker regex compOpt execOpt source, Monad m) => source -> m regex r  RegexMakerregexcompOptexecOptsourceMonadmsourcemregex makeRegex makeRegex :: +RegexMaker regex compOpt execOpt source => source -> regex~ =  RegexMakerregexcompOptexecOptsourcesourceregex lsuc'lsuc' ::  Context a b ->  [(Node, b)]  Contextab[](,)NodebNAll Nodes linked from in a Context, and the label of the links.  lsuclsuc ::  Graph gr => gr a b -> Node ->  [(Node, b)]  GraphgrgrabNode[](,)Nodeb]Find all Nodes that are linked from the given Node and the label of each link.  lpre'lpre' ::  Context a b ->  [(Node, b)]  Contextab[](,)NodebNAll Nodes linked from in a Context, and the label of the links.  lprelpre ::  Graph gr => gr a b -> Node ->  [(Node, b)] q GraphgrgrabNode[](,)NodebUFind all Nodes that link to the given Node and the label of each link.  LPathnewtype LPath a1 Labeled path  lparenlparen :: Docx r DocA '(' character  LPLP ::  [LNode a] -> LPath a  []LNodeaLPathalowerlower :: Stream s m Char => ParsecT s u m Chars B StreamsmCharParsecTsumChar_Parses a lower case character (a character between 'a' and 'z'). Returns the parsed character.  loop'loop' :: IO (SGr Char ()))  IOSGrChar() looploop ::  Gr Char ()q ` GrChar() lookAhead lookAhead :: Stream s m t => ParsecT s u m a -> ParsecT s u m a&  StreamsmtParsecTsumaParsecTsumaDlookAhead p parses p without consuming any input.  locationlocation :: Q Loc  QLocMlocation gives you the Location at which this computation is spliced. locallocal :: MonadReader r m => (r -> r) -> m a -> m a d  MonadReaderrmrrmama loc_start loc_start :: Loc -> CharPos  LocCharPos loc_package loc_package :: Loc -> StringR B LocString loc_module loc_module :: Loc -> String  LocString loc_filename loc_filename :: Loc -> String  LocString loc_endloc_end :: Loc -> CharPosl [ LocCharPos LocLoc :: String -> String -> String -> CharPos -> CharPos -> Loc(  StringStringStringCharPosCharPosLoc Locdata LocR  LNodetype LNode a = (Node, a) Labeled node  litPlitP :: Lit -> PatQ  LitPatQ LitPLitP :: Lit -> Pat7 * LitPat litElitE :: Lit -> ExpQ w LitExpQ LitELitE :: Lit -> Exp  LitExp Litdata Lit  listTlistT :: TypeQ7 / TypeQ ListTListT :: Typeq j Type listPlistP :: [PatQ] -> PatQ  []PatQPatQ ListPListP :: [Pat] -> Pat!  []PatPatlistenslistens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)   MonadWriterwmwbmam(,)ablistenlisten :: MonadWriter w m => m a -> m (a, w)Y '  MonadWriterwmmam(,)aw listElistE :: [ExpQ] -> ExpQ  []ExpQExpQ ListEListE :: [Exp] -> Exp  []ExpExphlineslines ::  ByteString ->  [ByteString]{ Z  ByteString[] ByteStringlines breaks a ByteString up into a list of ByteStrings at newline Chars. The resulting strings do not contain newlines. As of bytestring 0.9.0.3, this function is stricter than its list cousin. Linetype Line = Intz  liftlift ::  Lift t => t -> Q Exp  LiftttQExp Liftclass Lift t lexemelexeme :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a  GenTokenParsersumParsecTsumaParsecTsumalexeme p first applies parser p and than the whiteSpace parser, returning the value of p. Every lexical token (lexeme) is defined using lexeme, this way every parse starts at a point without white space. Parsers that use lexeme are called lexeme parsers in this document. The only point where the whiteSpace parser should be called explicitly is the start of the main parser in order to skip any leading white space.
mainParser  = do{ whiteSpace
                 ; ds <- many (lexeme digit)
                 ; eof
                 ; return (sum ds)
                 }
letterletter :: Stream s m Char => ParsecT s u m Char  StreamsmCharParsecTsumCharWParses a letter (an upper case or lower case character). Returns the parsed character.  letSletS :: [DecQ] -> StmtQ  []DecQStmtQ LetSLetS :: [Dec] -> Stmt  []DecStmt letEletE :: [DecQ] -> ExpQ -> ExpQ\ A []DecQExpQExpQ LetELetE :: [Dec] -> Exp -> Exp  []DecExpExphlengthlength ::  ByteString -> Int64&   ByteStringInt64SO(n\c)/ length returns the length of a ByteString as an Int64  LEdgetype LEdge b = (Node, Node, b) Labeled edge LeapSecondTabletype LeapSecondTable = Day -> Integer yTAI - UTC during this day. No table is provided, as any program compiled with it would become out of date in six months.  lbracklbrack :: Doc  DocA '[' character  lbracelbrace :: Doc  DocA '{' character IlazyToStrictSTlazyToStrictST :: ST s a -> ST s a  STsaSTsa8Convert a lazy ST computation into a strict one. hlastlast ::  ByteString -> Char4   ByteStringCharRO(1) Extract the last element of a packed string, which must be non-empty.  LanguageDef LanguageDef :: String -> String -> String -> Bool -> ParsecT s u m Char -> ParsecT s u m Char -> ParsecT s u m Char -> ParsecT s u m Char -> [String] ->  [String] ->  Bool -> GenLanguageDef s u m   StringStringStringBoolParsecTsumCharParsecTsumCharParsecTsumCharParsecTsumChar[]String[]StringBoolGenLanguageDefsum LanguageDeftype  LanguageDef st$ = GenLanguageDef String st Identity  LanguageDef LanguageDef :: String -> String -> String -> Bool -> ParsecT s u m Char -> ParsecT s u m Char -> ParsecT s u m Char -> ParsecT s u m Char -> [String] ->  [String] ->  Bool -> GenLanguageDef s u m 9  StringStringStringBoolParsecTsumCharParsecTsumCharParsecTsumCharParsecTsumChar[]String[]StringBoolGenLanguageDefsum LanguageDeftype  LanguageDef st$ = GenLanguageDef String st Identityb  Landscape Landscape :: Orient  Orient lamElamE :: [PatQ] -> ExpQ -> ExpQ  []PatQExpQExpQ LamELamE :: [Pat] -> Exp -> Exp~ f []PatExpExp lam1Elam1E :: PatQ -> ExpQ -> ExpQ  PatQExpQExpQ labUEdges labUEdges :: [Edge] -> [UEdge]R 6 []Edge[]UEdgedenote unlabeled edges  labNodesM labNodesM :: GraphM m gr =>  m (gr a b) ->  m [LNode a]  GraphMmgrmgrabm[]LNodea labNodeslabNodes ::  Graph gr => gr a b ->  [LNode a] h Graphgrgrab[]LNodea labNode'labNode' ::  Context a b -> LNode a  ContextabLNodea(The LNode from a Context.  labMlabM :: GraphM m gr =>  m (gr a b) -> Node ->  m (Maybe a)  GraphMmgrmgrabNodemMaybealabelslabels ::  Monad m => ParsecT s u m a -> [String] -> ParsecT s u m a T MonadmParsecTsuma[]StringParsecTsumalabellabel ::  Monad m => ParsecT s u m a -> String -> ParsecT s u m aZ  MonadmParsecTsumaStringParsecTsuma labEdgesM labEdgesM :: GraphM m gr =>  m (gr a b) ->  m [LEdge b]  GraphMmgrmgrabm[]LEdgeb labEdgeslabEdges ::  Graph gr => gr a b ->  [LEdge b] Y Graphgrgrab[]LEdgeb lab'lab' ::  Context a b -> a  ContextabaThe label in a Context.  lablab ::  Graph gr => gr a b -> Node -> Maybe a b GraphgrgrabNodeMaybea"Find the label for a Node.  kin248'kin248' :: IO (SGr Int ())  IOSGrInt() kin248kin248 ::  Gr Int ()U E GrInt() julianMonthLengthjulianMonthLength :: Integer -> Int -> Int  IntegerIntIntyThe number of days in a given month according to the proleptic Julian calendar. First argument is year, second is month.  javaStyle javaStyle :: LanguageDef st   LanguageDefstThis is a minimal token definition for Java style languages. It defines the style of comments, valid identifiers and case sensitivity. It does not define any reserved words or operators. hiterateiterate :: (Char -> Char) -> Char ->  ByteString  CharCharChar ByteStringiterate f x returns an infinite ByteString of repeated applications of f to x:
iterate f x == [x, f x, f (f x), ...]
 isStrictisStrict :: Q Strict  QStrict IsStrictIsStrict :: Strict"  Strict isSimpleisSimple ::  Graph gr => gr a b -> Bool y GraphgrgrabBoolThe inverse of hasLoop. h isPrefixOf isPrefixOf ::  ByteString ->  ByteString -> BoolD #  ByteString ByteStringBoolO(n) The isPrefixOf function takes two ByteStrings and returns True iff the first is a prefix of the second.  isLeapYear isLeapYear :: Integer -> Bool(  IntegerBoolHIs this year a leap year according to the proleptic Gregorian calendar?  isJulianLeapYearisJulianLeapYear :: Integer -> Bool  IntegerBoolEIs this year a leap year according to the proleptic Julian calendar?  isEmptyTMVar isEmptyTMVar :: TMVar a -> STM Bool { TMVaraSTMBoolKCheck whether a given TMVar is empty. Notice that the boolean value returned is just a snapshot of the state of the TMVar. By the time you get to react on its result, the TMVar may have been filled (or emptied) - so be extremely careful when using this operation. Use tryTakeTMVar instead if possible.  isEmptyTChan isEmptyTChan :: TChan a -> STM BoolV : TChanaSTMBool;Returns True if the supplied TChan is empty.  isEmptyMisEmptyM :: GraphM m gr =>  m (gr a b) -> m Bool!  GraphMmgrmgrabmBool isEmptyisEmpty :: Doc ->  PprM Bool l DocPprMBool-Returns True if the document is empty  isEmptyisEmpty ::  Graph gr => gr a b -> Bool&  GraphgrgrabBoolIOUArrayIOUArray :: STUArray RealWorld i e ->  IOUArray i e  STUArray RealWorldieIOUArrayieIOUArraynewtype IOUArray i e QMutable, unboxed, strict arrays in the IO monad. The type arguments are as follows:
  • i: the index type of the array (should be an instance of Ix)
  • e: the element type of the array. Only certain element types are supported: see Data.Array.MArray for a list of instances.
c invariant invariant ::  ByteString -> Bool   ByteStringBoolThe data type invariant: Every ByteString is either Empty or consists of non-null ByteStrings. All functions must preserve this, and the QC properties must check this.  intPrimLintPrimL :: Integer -> Lit  IntegerLit IntPrimLIntPrimL :: Integer -> Lit  IntegerLith intersperse intersperse :: Char ->  ByteString ->  ByteString  Char ByteString ByteStringO(n) The intersperse function takes a Char and a ByteString and `intersperses' that Char between the elements of the ByteString. It is analogous to the intersperse function on Lists. h intercalate intercalate ::  ByteString ->  [ByteString] ->  ByteString   ByteString[] ByteString ByteStringO(n) The intercalate function takes a ByteString and a list of ByteStrings and concatenates the list after interspersing the first argument between each element of the list. hinteractinteract :: (ByteString -> ByteString) -> IO ()k D  ByteString ByteStringIO()The interact function takes a function of type ByteString -> ByteString as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device.  integerLintegerL :: Integer -> Lit  IntegerLit IntegerLIntegerL :: Integer -> Lit&  IntegerLitintegerinteger :: GenTokenParser s u m -> ParsecT s u m Integer  GenTokenParsersumParsecTsumIntegerUThis lexeme parser parses an integer (a whole number). This parser is like natural except that it can be prefixed with sign (i.e. '-' or '+'). Returns the value of the number. The number can be specified in decimal, hexadecimal or octal. The number is parsed according to the grammar rules in the Haskell report.  integerinteger :: Integer -> Docx g IntegerDoc intint :: Int -> Doc  IntDoc instanceD  instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQR 0 CxtQTypeQ[]DecQDecQ InstanceD  InstanceD :: Cxt -> Type -> [Dec] -> Dec  CxtType[]DecDec insNodesinsNodes :: DynGraph gr =>  [LNode a] -> gr a b -> gr a b K DynGraphgr[]LNodeagrabgrab5Insert multiple LNodes into the Graph.  insNodeinsNode :: DynGraph gr => LNode a -> gr a b -> gr a ba * DynGraphgrLNodeagrabgrab-Insert a LNode into the Graph.  insMapNodesM insMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g [LNode a]U   OrdaDynGraphg[]aNodeMapMabg[]LNodea insMapNodes_  insMapNodes_ :: (Ord a, DynGraph g) =>  NodeMap a -> [a] -> g a b -> g a b,  OrdaDynGraphgNodeMapa[]agabgab insMapNodes  insMapNodes :: (Ord a, DynGraph g) =>  NodeMap a -> [a] -> g a b -> (g a b, NodeMap a, [LNode a])A  OrdaDynGraphgNodeMapa[]agab(,,)gabNodeMapa[]LNodea insMapNodeM insMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g (LNode a)  OrdaDynGraphgaNodeMapMabgLNodea insMapNode_  insMapNode_ :: (Ord a, DynGraph g) =>  NodeMap a -> a -> g a b -> g a b  OrdaDynGraphgNodeMapaagabgab insMapNode  insMapNode :: (Ord a, DynGraph g) =>  NodeMap a -> a -> g a b -> (g a b, NodeMap a, LNode a) c OrdaDynGraphgNodeMapaagab(,,)gabNodeMapaLNodea insMapEdgesM insMapEdgesM :: (Ord a, DynGraph g) =>  [(a, a, b)] -> NodeMapM a b g () D OrdaDynGraphg[](,,)aabNodeMapMabg() insMapEdges  insMapEdges :: (Ord a, DynGraph g) =>  NodeMap a ->  [(a, a, b)] -> g a b -> g a b{ $ OrdaDynGraphgNodeMapa[](,,)aabgabgab insMapEdgeM insMapEdgeM :: (Ord a, DynGraph g) =>  (a, a, b) -> NodeMapM a b g ()9  OrdaDynGraphg(,,)aabNodeMapMabg() insMapEdge  insMapEdge :: (Ord a, DynGraph g) =>  NodeMap a ->  (a, a, b) -> g a b -> g a b  OrdaDynGraphgNodeMapa(,,)aabgabgab insEdgesinsEdges :: DynGraph gr =>  [LEdge b] -> gr a b -> gr a b  DynGraphgr[]LEdgebgrabgrab5Insert multiple LEdges into the Graph.  insEdgeinsEdge :: DynGraph gr => LEdge b -> gr a b -> gr a b j DynGraphgrLEdgebgrabgrab-Insert a LEdge into the Graph.  inn'inn' ::  Context a b ->  [LEdge b]A  Contextab[]LEdgeb7All inward-directed LEdges in a Context.  inninn ::  Graph gr => gr a b -> Node ->  [LEdge b]!  GraphgrgrabNode[]LEdgeb?Find all inward-bound LEdges for the given Node. hinitsinits ::  ByteString ->  [ByteString]! !  ByteString[] ByteStringXO(n) Return all initial segments of the given ByteString, shortest first.  initialPos initialPos ::  SourceName ->  SourcePos" o"  SourceName SourcePosvCreate a new SourcePos with the given source name, and line number and column number set to 1, the upper left.  initialize initialize :: IO ()H# =# IO()hinitinit ::  ByteString ->  ByteString# #  ByteString ByteStringSO(n\c)/ Return all the elements of a ByteString except the last one.  InfoQtype InfoQ = Q Info<$  Infodata Infoh$  InfixRInfixR :: FixityDirection$ $ FixityDirection infixP infixP :: PatQ -> Name -> PatQ -> PatQ:% % PatQNamePatQPatQ InfixP InfixP :: Pat -> Name -> Pat -> Pat% % PatNamePatPat InfixNInfixN :: FixityDirection& % FixityDirection InfixLInfixL :: FixityDirectionX& F& FixityDirection infixE infixE ::  Maybe ExpQ -> ExpQ ->  Maybe ExpQ -> ExpQ& & MaybeExpQExpQMaybeExpQExpQ InfixE InfixE ::  Maybe Exp -> Exp ->  Maybe Exp -> Exp' c' MaybeExpExpMaybeExpExp infixC infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQL(  ( Q(,)StrictTypeNameQ(,)StrictTypeConQ InfixC InfixC ::  StrictType -> Name ->  StrictType -> Con( (  StrictTypeName StrictTypeCon infixApp infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQf) K) ExpQExpQExpQExpQInfixInfix :: GenParser tok st (a -> a -> a) -> Assoc -> Operator tok st a$* )  GenParsertokstaaaAssocOperatortoksta InfixInfix :: NameIsb* Y* NameIshindexindex ::  ByteString -> Int64 -> Char* *  ByteStringInt64CharKO(1) ByteString index (subscript) operator, starting from 0.  indeg'indeg' ::  Context a b -> Int+ n+ ContextabInt'The inward degree of a Context.  indegindeg ::  Graph gr => gr a b -> Node -> Int5, , GraphgrgrabNodeInt,The inward-bound degree of the Node.  incSourceLine incSourceLine ::  SourcePos -> Line ->  SourcePos, ,  SourcePosLine SourcePos1Increments the line number of a source position. incSourceColumnincSourceColumn ::  SourcePos -> Column ->  SourcePos- -  SourcePosColumn SourcePos3Increments the column number of a source position.  ImportFImportF :: Callconv -> Safety -> String -> Name -> Type -> Foreign. w. CallconvSafetyStringNameTypeForeign identStart identStart :: GenLanguageDef s u m -> ParsecT s u m CharL/ / GenLanguageDefsumParsecTsumCharoThis parser should accept any start characters of identifiers. For example letter <|> char "_".  identStart identStart :: GenLanguageDef s u m -> ParsecT s u m Char^0 &0 GenLanguageDefsumParsecTsumCharoThis parser should accept any start characters of identifiers. For example letter <|> char "_".  identLetter identLetter :: GenLanguageDef s u m -> ParsecT s u m Charr1 :1 GenLanguageDefsumParsecTsumCharvThis parser should accept any legal tail characters of identifiers. For example alphaNum <|> char "_".  identLetter identLetter :: GenLanguageDef s u m -> ParsecT s u m Char2 U2 GenLanguageDefsumParsecTsumCharvThis parser should accept any legal tail characters of identifiers. For example alphaNum <|> char "_".  identifier identifier :: GenTokenParser s u m -> ParsecT s u m String3 p3 GenTokenParsersumParsecTsumStringXThis lexeme parser parses a legal identifier. Returns the identifier string. This parser will fail on identifiers that are reserved words. Legal identifier (start) characters and reserved words are defined in the LanguageDef that is passed to makeTokenParser. An identifier is treated as a single token using try.  HuffmanOnly HuffmanOnly :: CompressionStrategyf5 P5 CompressionStrategyIUse HuffmanOnly to force Huffman encoding only (no string match).  HuffmanOnly HuffmanOnly :: CompressionStrategy6 5 CompressionStrategyIUse HuffmanOnly to force Huffman encoding only (no string match).  hsephsep :: [Doc] -> Doc6 6 []DocDoc!List version of <+> hhPuthPut :: Handle ->  ByteString -> IO ()L7 +7 Handle ByteStringIO()<Outputs a ByteString to the specified Handle. historyMaxEntrieshistoryMaxEntries :: IO Int7 7 IOIntTGet the maximum number of history entries, returning 0 if the history is unstifled. historyIsStifledhistoryIsStifled :: IO Bool8 8 IOBoolLCheck whether the history is stifled or not. True if stifled, False if not. hhGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteStringm9 K9 HandleIntIO ByteStringhGetNonBlocking is similar to hGet, except that it will never block waiting for data to become available, instead it returns only whatever data is available. h hGetContents hGetContents :: Handle ->  IO ByteString: n: HandleIO ByteStringRead entire handle contents lazily into a ByteString. Chunks are read on demand, using the default chunk size. Once EOF is encountered, the Handle is closed. hhGethGet :: Handle -> Int ->  IO ByteString; ; HandleIntIO ByteString[Read n bytes into a ByteString, directly from the specified Handle. hexDigithexDigit :: Stream s m Char => ParsecT s u m Char< j< StreamsmCharParsecTsumCharsParses a hexadecimal digit (a digit or a letter between 'a' and 'f' or 'A' and 'F'). Returns the parsed character.  hexadecimal hexadecimal :: GenTokenParser s u m -> ParsecT s u m Integer= ~= GenTokenParsersumParsecTsumIntegerParses a positive whole number in the hexadecimal system. The number should be prefixed with "0x" or "0X". Returns the value of the number. hheadhead ::  ByteString -> Char> >  ByteStringCharPO(1) Extract the first element of a ByteString, which must be non-empty.  hcathcat :: [Doc] -> DocE? 2? []DocDoc List version of <>  hasLoophasLoop ::  Graph gr => gr a b -> Bool? ? GraphgrgrabBool;True if the graph has any edges of the form (A, A).  haskellStyle haskellStyle :: LanguageDef stv@ b@  LanguageDefstThis is a minimal token definition for Haskell style languages. It defines the style of comments, valid identifiers and case sensitivity. It does not define any reserved words or operators.  haskellDef haskellDef :: LanguageDef stA {A  LanguageDefst2The language definition for the Haskell language. haskellhaskell :: TokenParser stB B  TokenParserst"A lexer for the haskell language.  hang hang :: Doc -> Int -> Doc -> DocB B DocIntDocDoc0
hang d1 n d2 = sep [d1, nest n d2]
 GZipOrZlib GZipOrZlib :: Format$C C FormatThis is not a format as such. It enabled zlib or gzip decoding with automatic header detection. This only makes sense for decompression. GZipGZip :: FormatC C Format8The gzip format uses a header with a checksum and some optional meta-data about the compressed file. It is intended primarily for compressing individual files but is also sometimes used for network protocols such as HTTP. The format is described in detail in RFC #1952 http://www.ietf.org/rfc/rfc1952.txt  GuardQtype GuardQ = Q Guard]E  guardedBguardedB :: [Q (Guard, Exp)] -> BodyQE E []Q(,)GuardExpBodyQ GuardedBGuardedB :: [(Guard, Exp)] -> BodyPF .F [](,)GuardExpBody Guarddata Guard~F  gselgsel ::  Graph gr => (Context a b -> Bool) -> gr a b ->  [Context a b]CG F GraphgrContextabBoolgrab[]ContextabMReturn all Contexts for which the given function returns True. hgroupBygroupBy :: (Char -> Char -> Bool) ->  ByteString ->  [ByteString]groupBy function is the non-overloaded version of group. hgroupgroup ::  ByteString ->  [ByteString]H H  ByteString[] ByteStringThe group function takes a ByteString and returns a list of ByteStrings such that the concatenation of the result is equal to the argument. Moreover, each sublist in the result contains only equal elements. For example,
group "Mississippi" = ["M","i","ss","i","ss","i","pp","i"]
It is a special case of groupBy, which allows the programmer to supply their own equality test.  grevgrev :: DynGraph gr => gr a b -> gr a b K J DynGraphgrgrabgrab$Reverse the direction of all edges.  gregorianPaschalMoongregorianPaschalMoon :: Integer -> DayK K IntegerDayKGiven a year, find the Paschal full moon according to the Gregorian method  gregorianEastergregorianEaster :: Integer -> DayYL HL IntegerDay<Given a year, find Easter according to the Gregorian method  graphviz' graphviz' :: (Graph g, Show a, Show b) => g a b -> String8M M GraphgShowaShowbgabStringtFormat a graph for graphviz with reasonable defaults: title of "fgl", 8.5x11 pages, one page, landscape orientation  graphvizgraphviz :: (Graph g, Show a, Show b) => g a b -> String -> (Double, Double) ->  (Int, Int) -> Orient -> StringN kN GraphgShowaShowbgabString(,)DoubleDouble(,)IntIntOrientString%Formats a graph for use in graphviz.  GraphMclass  Monad m => GraphM m grAO  Graphclass Graph grsO dMinimum implementation: empty, isEmpty, match, mkGraph, labNodes  gr1gr1 ::  Gr Int IntP  P GrIntInt Grdata Gr a bIP  Grdata Gr a buP  gmapgmap :: DynGraph gr => (Context a b -> Context c d) -> gr a b -> gr c d@Q P DynGraphgrContextabContextcdgrabgrcdMap a function over the graph.  globalglobal :: Name -> ExpQQ Q NameExpQ gfoldgfold ::  Graph gr => (Context a b -> [Node]) -> (Context a b -> c -> d) -> (Maybe d -> c -> c, c) -> [Node] -> gr a b -> cR {R GraphgrContextab[]NodeContextabcd(,)Maybedccc[]NodegrabcDirected graph fold. getTerminalNamegetTerminalName ::  IO StringlS ]S IOStringgetStategetState ::  Monad m => ParsecT s u m uS S MonadmParsecTsumu Returns the current user state. getSpecialPrefixesgetSpecialPrefixes ::  IO String`T QT IOStringgetsgets :: MonadState s m => (s -> a) -> m aT T  MonadStatesmsamaLGets specific component of the state, using a projection function supplied.  getPrompt getPrompt ::  IO StringxU iU IOString getPOSIXTime getPOSIXTime ::  IO POSIXTimeU U IO POSIXTime2Get the current POSIX time from the system clock.  getPosition getPosition ::  Monad m => ParsecT s u m SourcePosV bV MonadmParsecTsum SourcePos@Returns the current source position. See also SourcePos. getPointgetPoint :: IO IntW  W IOIntgetParserStategetParserState ::  Monad m => ParsecT s u m (State s u)W zW MonadmParsecTsumStatesu8Returns the full parser state as a State record.  getOutStream getOutStream ::  IO Handle7X (X IOHandle getLineBuffer getLineBuffer ::  IO StringX X IOStringgetLibraryVersiongetLibraryVersion ::  IO StringX X IOString getInStream getInStream ::  IO Handle@Y 1Y IOHandlegetInputgetInput ::  Monad m => ParsecT s u m sY Y MonadmParsecTsumsReturns the current input getInhibitCompletiongetInhibitCompletion :: IO Bool.Z !Z IOBool getExecOpts getExecOpts :: &RegexOptions regex compOpt execOpt => regex -> execOptZ Z  RegexOptionsregexcompOptexecOptregexexecOptgetEndgetEnd :: IO Int&[ [ IOInth getContents getContents ::  IO ByteString[ n[ IO ByteStringGgetContents. Equivalent to hGetContents stdin. Will read lazily getCompletionQueryItemsgetCompletionQueryItems :: IO Int-\ !\ IOIntgetCompletionAppendCharactergetCompletionAppendCharacter :: IO (Maybe Char)\ \ IOMaybeChargetCompleterWordBreakCharactersgetCompleterWordBreakCharacters ::  IO String*] ] IOStringgetCompleterQuoteCharactersgetCompleterQuoteCharacters ::  IO String] ] IOStringgetBasicWordBreakCharactersgetBasicWordBreakCharacters ::  IO String^ ^ IOStringgetAttemptedCompletionOvergetAttemptedCompletionOver :: IO Bool}^ p^ IOBoolgetAllTextSubmatchesgetAllTextSubmatches :: AllTextSubmatches f b -> f b_ ^ AllTextSubmatchesfbfbgetAllTextMatchesgetAllTextMatches :: AllTextMatches f b -> f b_ |_ AllTextMatchesfbfbgetAllSubmatchesgetAllSubmatches :: AllSubmatches f b -> f b&` `  AllSubmatchesfbfb getAllMatches getAllMatches :: AllMatches f b -> f b` `  AllMatchesfbfbgetget :: MonadState s m => m s` `  MonadStatesmms genUNodes genUNodes :: Int -> [UNode]`a Ka Int[]UNode!generate list of unlabeled nodes GenTokenParserdata GenTokenParser s u ma The type of the record that holds lexical parsers that work on s streams with state u over a monad m.  genpatgenpat :: Pat -> Q (Name -> ExpQ, Pat)b b PatQ(,)NameExpQPat GenParsertype  GenParser tok st = Parsec [tok] stc  GenParsertype  GenParser t st = Parsec ByteString stic  genLNodes genLNodes ::  Enum a => a -> Int ->  [LNode a]c c EnumaaInt[]LNodeagenerate list of labeled nodes GenLanguageDefdata GenLanguageDef s u m\d The GenLanguageDef type is a record that contains all parameterizable features of the Text.Parsec.Token module. The module Text.Parsec.Language contains some default definitions. GenLanguageDefdata GenLanguageDef s u m^e The GenLanguageDef type is a record that contains all parameterizable features of the Text.Parsec.Token module. The module Text.Parsec.Language contains some default definitions.  gelemgelem ::  Graph gr => Node -> gr a b -> Boolf {f GraphgrNodegrabBool?True if the Node is present in the Graph.  GDecomptype GDecomp g a b = (Context a b, g a b)3g 5The same as Decomp, only more sure of itself.  g3bg3b :: Gr Char Stringg g GrCharString g3g3 :: Gr Char Stringh g GrCharString funDepfunDep :: [Name] -> [Name] -> FunDeph ]h []Name[]NameFunDep FunDepFunDep :: [Name] -> [Name] -> FunDeph h []Name[]NameFunDep FunDepdata FunDep.i  funDfunD :: Name ->  [ClauseQ] -> DecQi i Name[]ClauseQDecQ FunDFunD :: Name -> [Clause] -> Decj i Name[]ClauseDec fsepfsep :: [Doc] -> Docfj Sj []DocDoc "Paragraph fill" version of sep   fromWeekDate  fromWeekDate :: Integer -> Int -> Int -> Dayk j IntegerIntIntDayconvert from ISO 8601 Week Date format. First argument is year, second week number (1-52 or 53), third day of week (1 for Monday to 7 for Sunday). Invalid week and day values will be clipped to the correct range.  fromToRfromToR :: ExpQ -> ExpQ -> RangeQWl @l ExpQExpQRangeQ FromToRFromToR :: Exp -> Exp -> Rangel l ExpExpRange fromToEfromToE :: ExpQ -> ExpQ -> ExpQ-m m ExpQExpQExpQ fromThenToR  fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQm m ExpQExpQExpQRangeQ FromThenToR  FromThenToR :: Exp -> Exp -> Exp -> RangeAn (n ExpExpExpRange fromThenToE  fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQn n ExpQExpQExpQExpQ fromThenR fromThenR :: ExpQ -> ExpQ -> RangeQ?o (o ExpQExpQRangeQ FromThenR FromThenR :: Exp -> Exp -> Rangeo o ExpExpRange fromThenE fromThenE :: ExpQ -> ExpQ -> ExpQp p ExpQExpQExpQfromSundayStartWeek fromSundayStartWeek :: Integer -> Int -> Int -> Dayp p IntegerIntIntDayThe inverse of sundayStartWeek. Get a Day given the year and the number of the day of a Sunday-starting week. The first Sunday is the first day of week 1, any earlier days in the year are week 0 (as "%U" in Data.Time.Format.formatTime).  fromRfromR :: ExpQ -> RangeQr q ExpQRangeQ FromRFromR :: Exp -> RangeZr Kr ExpRangefromOrdinalDatefromOrdinalDate :: Integer -> Int -> Dayr r IntegerIntDaywconvert from ISO 8601 Ordinal Date format. Invalid day numbers will be clipped to the correct range (1 to 365 or 366). fromMondayStartWeek fromMondayStartWeek :: Integer -> Int -> Int -> Days s IntegerIntIntDayThe inverse of mondayStartWeek. Get a Day given the year, the number of the Monday-starting week, and the day of the week. The first Monday is the first day of week 1, any earlier days in the year are week 0 (as "%W" in Data.Time.Format.formatTime).  fromJulianYearAndDayfromJulianYearAndDay :: Integer -> Int -> Dayyu cu IntegerIntDayconvert from proleptic Julian year and day format. Invalid day numbers will be clipped to the correct range (1 to 365 or 366).   fromJulian  fromJulian :: Integer -> Int -> Int -> Dayv ev IntegerIntIntDayconvert from proleptic Julian calendar. First argument is year, second month number (1-12), third day (1-31). Invalid values will be clipped to the correct range, month first, then day.  fromGraph fromGraph :: (Ord a, Graph g) => g a b ->  NodeMap aw w OrdaGraphggabNodeMapa<Generate a mapping containing the nodes in the given graph.  fromEfromE :: ExpQ -> ExpQ_x Px ExpQExpQh fromChunks fromChunks ::  [ByteString] ->  ByteStringx x [] ByteString ByteStringUO(c) Convert a list of strict ByteString into a lazy ByteString Formatdata Format`y NThe format used for compression or decompression. There are three variations.  forImpDforImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQnz >z CallconvSafetyStringNameTypeQDecQ ForeignDForeignD :: Foreign -> Decz z ForeignDec Foreigndata Foreignz  forallT forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ{ g{ []NameCxtQTypeQTypeQ ForallT ForallT :: [Name] -> Cxt -> Type -> Type| { []NameCxtTypeType forallC forallC :: [Name] -> CxtQ -> ConQ -> ConQ| {| []NameCxtQConQConQ ForallC ForallC :: [Name] -> Cxt -> Con -> Con } } []NameCxtConConc foldrChunks  foldrChunks :: (ByteString -> a -> a) -> a ->  ByteString -> a} }  ByteStringaaa ByteStringaCConsume the chunks of a lazy ByteString with a natural right fold. hfoldr1foldr1 :: (Char -> Char -> Char) ->  ByteString -> Char~ z~ CharCharChar ByteStringCharfoldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty ByteStrings hfoldr foldr :: (Char -> a -> a) -> a ->  ByteString -> a  Charaaa ByteStringafoldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a packed string, reduces the packed string using the binary operator, from right to left. c foldlChunks  foldlChunks :: (a -> ByteString -> a) -> a ->  ByteString -> a3  a ByteStringaa ByteStringa_Consume the chunks of a lazy ByteString with a strict, tail-recursive, accumulating left fold. hfoldl1'foldl1' :: (Char -> Char -> Char) ->  ByteString -> Char*  CharCharChar ByteStringCharA'foldl1\'' is like foldl1, but strict in the accumulator. hfoldl1foldl1 :: (Char -> Char -> Char) ->  ByteString -> Char ؂ CharCharChar ByteStringCharfoldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty ByteStrings. hfoldl' foldl' :: (a -> Char -> a) -> a ->  ByteString -> a  aCharaa ByteStringa8'foldl\'' is like foldl, but strict in the accumulator. hfoldl foldl :: (a -> Char -> a) -> a ->  ByteString -> a  aCharaa ByteStringafoldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a ByteString, reduces the ByteString using the binary operator, from left to right.  floatPrimL floatPrimL :: Rational -> Lit  RationalLit FloatPrimL FloatPrimL :: Rational -> Litj X RationalLitfloatfloat :: GenTokenParser s u m -> ParsecT s u m Double ͆ GenTokenParsersumParsecTsumDoubleThis lexeme parser parses a floating point value. Returns the value of the number. The number is parsed according to the grammar rules defined in the Haskell report.  floatfloat :: Float -> Doc  FloatDocIfixSTfixST ::  (a -> ST s a) -> ST s am M aSTsaSTsaAllow the result of a state transformer computation to be used (lazily) inside the computation. Note that if f is strict, fixST f = _|_.  FixityDirectiondata FixityDirectionQ  FixityFixity :: Int -> FixityDirection -> FixityӉ  IntFixityDirectionFixity Fixitydata Fixity h findIndices findIndices :: (Char -> Bool) ->  ByteString -> [Int64] u CharBool ByteString[]Int64The findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order. h findIndex findIndex :: (Char -> Bool) ->  ByteString ->  Maybe Int64ϋ  CharBool ByteStringMaybeInt64The findIndex function takes a predicate and a ByteString and returns the index of the first element in the ByteString satisfying the predicate. hfindfind :: (Char -> Bool) ->  ByteString ->  Maybe Char Ռ CharBool ByteStringMaybeCharO(n) The find function takes a predicate and a ByteString, and returns the first element in matching the predicate, or Nothing if there is no such element. FilteredFiltered :: CompressionStrategy  CompressionStrategyUse Filtered for data produced by a filter (or predictor). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of Z_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between DefaultStrategy and HuffmanOnly. FilteredFiltered :: CompressionStrategy ݏ CompressionStrategyUse Filtered for data produced by a filter (or predictor). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of Z_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between DefaultStrategy and HuffmanOnly. hfilterfilter :: (Char -> Bool) ->  ByteString ->  ByteString  CharBool ByteString ByteStringO(n) filter, applied to a predicate and a ByteString, returns a ByteString containing those characters that satisfy the predicate. filenameCompletionFunctionfilenameCompletionFunction :: String ->  IO [String]2  StringIO[]String FieldPatQtype  FieldPatQ = Q FieldPatw  fieldPatfieldPat :: Name -> PatQ ->  FieldPatQ Փ NamePatQ FieldPatQ FieldPattype FieldPat = (Name, Pat)3  FieldExpQtype  FieldExpQ = Q FieldExpx  fieldExpfieldExp :: Name -> ExpQ ->  Q (Name, Exp) ڔ NameExpQQ(,)NameExp FieldExptype FieldExp = (Name, Exp)D  fcatfcat :: [Doc] -> Doc  []DocDoc "Paragraph fill" version of cat extractextract :: Extract source =>  (Int, Int) -> source -> sourceb + Extractsource(,)IntIntsourcesourceExtractclass Extract source @Extract allows for indexing operations on String or ByteString.  ExpQtype ExpQ = Q Exp  ExportF ExportF :: Callconv -> String -> Name -> Type -> Foreign  CallconvStringNameTypeForeignExpectExpect :: String -> Message  StringMessage Expdata ExpD  execWriterT execWriterT ::  Monad m =>  WriterT w m a -> m wј  MonadmWriterTwmamw execWriterT execWriterT ::  Monad m =>  WriterT w m a -> m w^ 3 MonadmWriterTwmamw execWriter execWriter ::  Writer w a -> wę  Writerwaw execWriter execWriter ::  Writer w a -> w*  Writerwawexecuteexecute :: Regex -> String -> DIO (Either WrapError (Maybe (Array Int (MatchOffset, MatchLength))))) Ě RegexStringIOEither WrapErrorMaybeArrayInt(,) MatchOffset MatchLength.Matches a regular expression against a string executeexecute :: Regex -> Seq Char -> DIO (Either WrapError (Maybe (Array Int (MatchOffset, MatchLength))))]  RegexSeqCharIOEither WrapErrorMaybeArrayInt(,) MatchOffset MatchLength.Matches a regular expression against a string executeexecute :: Regex ->  ByteString -> DIO (Either WrapError (Maybe (Array Int (MatchOffset, MatchLength)))) ) Regex ByteStringIOEither WrapErrorMaybeArrayInt(,) MatchOffset MatchLengthMatches a regular expression against a buffer, returning the buffer indicies of the match, and any submatches | Matches a regular expression against a string  execStateT execStateT ::  Monad m =>  StateT s m a -> s -> m sʞ  MonadmStateTsmasmsSimilar to execState  execStateT execStateT ::  Monad m =>  StateT s m a -> s -> m s R MonadmStateTsmasmsSimilar to execState  execState execState ::  State s a -> s -> s  StatesassExecute this state and return the new state, throwing away the return value. Very much like snd composed with runstate.  execState execState ::  State s a -> s -> s  StatesassExecute this state and return the new state, throwing away the return value. Very much like snd composed with runstate. execRWST execRWST ::  Monad m => RWST r w s m a -> r -> s -> m (s, w)M  MonadmRWSTrwsmarsm(,)swexecRWST execRWST ::  Monad m => RWST r w s m a -> r -> s -> m (s, w) ɢ MonadmRWSTrwsmarsm(,)swexecRWS execRWS ::  RWS r w s a -> r -> s -> (s, w) q RWSrwsars(,)swexecRWS execRWS ::  RWS r w s a -> r -> s -> (s, w)-  RWSrwsars(,)sw ExecOption ExecOption :: CInt ->  ExecOption  CInt ExecOption ExecOptionnewtype  ExecOptionФ A bitmapped CInt containing options for execution of compiled regular expressions. Option values (and their man 3 regexec names) are
  • execBlank which is a complete zero value for all the flags. This is the blankExecOpt value.
  • execNotBOL (REG_NOTBOL) can be set to prevent ^ from matching at the start of the input.
  • execNotEOL (REG_NOTEOL) can be set to prevent $ from matching at the end of the input (before the terminating NUL).
 ExecOption ExecOption :: CInt ->  ExecOption)  CInt ExecOption ExecOptionnewtype  ExecOptiond A bitmapped CInt containing options for execution of compiled regular expressions. Option values (and their man 3 regexec names) are
  • execBlank which is a complete zero value for all the flags. This is the blankExecOpt value.
  • execNotBOL (REG_NOTBOL) can be set to prevent ^ from matching at the start of the input.
  • execNotEOL (REG_NOTEOL) can be set to prevent $ from matching at the end of the input (before the terminating NUL).
 ExecOption ExecOption :: CInt ->  ExecOption  CInt ExecOption ExecOptionnewtype  ExecOption A bitmapped CInt containing options for execution of compiled regular expressions. Option values (and their man 3 regexec names) are
  • execBlank which is a complete zero value for all the flags. This is the blankExecOpt value.
  • execNotBOL (REG_NOTBOL) can be set to prevent ^ from matching at the start of the input.
  • execNotEOL (REG_NOTEOL) can be set to prevent $ from matching at the end of the input (before the terminating NUL).
 ExecOption ExecOption :: CInt ->  ExecOptionQ < CInt ExecOption ExecOptionnewtype  ExecOption A bitmapped CInt containing options for execution of compiled regular expressions. Option values (and their man 3 regexec names) are
  • execBlank which is a complete zero value for all the flags. This is the blankExecOpt value.
  • execNotBOL (REG_NOTBOL) can be set to prevent ^ from matching at the start of the input.
  • execNotEOL (REG_NOTEOL) can be set to prevent $ from matching at the end of the input (before the terminating NUL).
 execNotEOL execNotEOL ::  ExecOptionͮ   ExecOption execNotEOL execNotEOL ::  ExecOption   ExecOption execNotEOL execNotEOL ::  ExecOptionm `  ExecOption execNotEOL execNotEOL ::  ExecOption   ExecOption execNotBOL execNotBOL ::  ExecOption   ExecOption execNotBOL execNotBOL ::  ExecOption] P  ExecOption execNotBOL execNotBOL ::  ExecOption   ExecOption execNotBOL execNotBOL ::  ExecOption   ExecOption execBlank execBlank ::  ExecOptionK >  ExecOptionWA completely zero value for all the flags. This is also the blankExecOpt value.  execBlank execBlank ::  ExecOption   ExecOptionWA completely zero value for all the flags. This is also the blankExecOpt value.  execBlank execBlank ::  ExecOption   ExecOptionWA completely zero value for all the flags. This is also the blankExecOpt value.  execBlank execBlank ::  ExecOption: -  ExecOptionWA completely zero value for all the flags. This is also the blankExecOpt value.  evalStateT evalStateT ::  Monad m =>  StateT s m a -> s -> m a*  MonadmStateTsmasmaSimilar to evalState  evalStateT evalStateT ::  Monad m =>  StateT s m a -> s -> m aߴ  MonadmStateTsmasmaSimilar to evalState  evalState evalState ::  State s a -> s -> am U StatesasaEvaluate this state monad with the given initial state,throwing away the final state. Very much like fst composed with runstate.  evalState evalState ::  State s a -> s -> ar Z StatesasaEvaluate this state monad with the given initial state,throwing away the final state. Very much like fst composed with runstate. evalRWST evalRWST ::  Monad m => RWST r w s m a -> r -> s -> m (a, w)  MonadmRWSTrwsmarsm(,)awevalRWST evalRWST ::  Monad m => RWST r w s m a -> r -> s -> m (a, w)y ; MonadmRWSTrwsmarsm(,)awevalRWS evalRWS ::  RWS r w s a -> r -> s -> (a, w)  RWSrwsars(,)awevalRWS evalRWS ::  RWS r w s a -> r -> s -> (a, w) v RWSrwsars(,)awerrorPoserrorPos ::  ParseError ->  SourcePos   ParseError SourcePos2Extracts the source position from the parse error  errorMessages errorMessages ::  ParseError ->  [Message]   ParseError[]Message9Extracts the list of error messages from the parse error errorIsUnknownerrorIsUnknown ::  ParseError -> Boold O  ParseErrorBoolErrorclass Error a bAn exception to be thrown. An instance must redefine at least one of noMsg, strMsg.  equalsequals :: Doc1 + DocA '=' character  equalequal :: (Eq a, Eq b, Graph gr) => gr a b -> gr a b -> Bool  EqaEqbGraphgrgrabgrabBooleofeof :: (Stream s m t, Show t) => ParsecT s u m ()~ G StreamsmtShowtParsecTsum()This parser only succeeds at the end of the input. This is not a primitive parser but it is defined using notFollowedBy.
eof  = notFollowedBy anyToken <?> "end of input"
endBy1endBy1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]0 ; StreamsmtParsecTsumaParsecTsumsepParsecTsum[]aendBy1 p sep parses one or more occurrences of p, seperated and ended by sep. Returns a list of values returned by p. endByendBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a] Y StreamsmtParsecTsumaParsecTsumsepParsecTsum[]aendBy p sep parses zero or more occurrences of p, seperated and ended by sep. Returns a list of values returned by p.
cStatements  = cStatement `endBy` semi
 emptyMemptyM :: GraphM m gr =>  m (gr a b)  GraphMmgrmgrabemptyDefemptyDef :: LanguageDef stV B  LanguageDefstemptyempty :: Extract source => source  Extractsourcesource emptyempty :: Doc  DocAn empty document  emptyempty ::  Graph gr => gr a b^ D Graphgrgrabhemptyempty ::  ByteString   ByteString(O(1) The empty ByteString cEmptyEmpty ::  ByteString   ByteString emapemap :: DynGraph gr => (b -> c) -> gr a b -> gr a c z DynGraphgrbcgrabgrac7Map a function over the Edge labels in a graph.  elfilterelfilter :: DynGraph gr =>  (b -> Bool) -> gr a b -> gr a b W DynGraphgrbBoolgrabgrab%Filter based on edge label property. h elemIndices elemIndices :: Char ->  ByteString -> [Int64]<  Char ByteString[]Int64O(n) The elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order. h elemIndex elemIndex :: Char ->  ByteString ->  Maybe Int64h C Char ByteStringMaybeInt64O(n) The elemIndex function returns the index of the first element in the given ByteString which is equal (by memchr) to the query element, or Nothing if there is no such element. helemelem :: Char ->  ByteString -> Bool  Char ByteStringBooltO(n) elem is the ByteString membership predicate. This implementation uses memchr(3).  efilterefilter :: DynGraph gr => (LEdge b -> Bool) -> gr a b -> gr a b  DynGraphgrLEdgebBoolgrabgrabFilter based on edge property.  edgesMedgesM :: GraphM m gr =>  m (gr a b) -> m [Edge] Q GraphMmgrmgrabm[]Edge edgesedges ::  Graph gr => gr a b -> [Edge]  Graphgrgrab[]Edge+List all Edges in the Graph.  Edgetype Edge = (Node, Node)j Unlabeled edge  e3'e3' :: IO (SGr () String)  IOSGr()String e3e3 ::  Gr () String  Gr()String e'e' :: IO (SGr Char ())i Q IOSGrChar() ee ::  Gr Char ()  GrChar() DynGraphclass  Graph gr => DynGraph gr  dyndyn :: String -> Q ExpF 1 StringQExpdupTChandupTChan :: TChan a ->  STM (TChan a)  TChanaSTMTChanaDuplicate a TChan: the duplicate channel begins empty, but data written to either channel from then on will be available from both. Hence this creates a kind of broadcast channel, where data written by anyone is seen by everyone else. h dropWhile dropWhile :: (Char -> Bool) ->  ByteString ->  ByteStringI  CharBool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs. hdropdrop :: Int64 ->  ByteString ->  ByteString+  Int64 ByteString ByteStringO(n\c)/ drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs.  doubleQuotes doubleQuotes :: Doc -> Doc+  DocDoc Wrap document in "..."  doublePrimL doublePrimL :: Rational -> Lit  RationalLit DoublePrimL DoublePrimL :: Rational -> Lit  RationalLit doubledouble :: Double -> Doci Y DoubleDocdotdot :: GenTokenParser s u m -> ParsecT s u m String  GenTokenParsersumParsecTsumStringpLexeme parser dot parses the character '.' and skips any trailing white space. Returns the string ".".  doEdoE :: [StmtQ] -> ExpQ  []StmtQExpQ DoEDoE :: [Stmt] -> Exp  []StmtExp Doctype Doc = PprM DocU digitdigit :: Stream s m Char => ParsecT s u m Char  StreamsmCharParsecTsumChar.Parses a digit. Returns the parsed character. diffAbsoluteTimediffAbsoluteTime ::  AbsoluteTime ->  AbsoluteTime -> DiffTime   AbsoluteTime AbsoluteTimeDiffTimediffAbsoluteTime a b = a - b  delNodesM delNodesM :: GraphM m gr => [Node] ->  m (gr a b) ->  m (gr a b) C GraphMmgr[]Nodemgrabmgrab delNodesdelNodes ::  Graph gr => [Node] -> gr a b -> gr a b$  Graphgr[]Nodegrabgrab4Remove multiple Nodes from the Graph.  delNodeMdelNodeM :: GraphM m gr => Node ->  m (gr a b) ->  m (gr a b)  GraphMmgrNodemgrabmgrab delNodedelNode ::  Graph gr => Node -> gr a b -> gr a b o GraphgrNodegrabgrab,Remove a Node from the Graph.  delMapNodesM delMapNodesM :: (Ord a, DynGraph g) => [a] -> NodeMapM a b g (){ = OrdaDynGraphg[]aNodeMapMabg() delMapNodes  delMapNodes :: (Ord a, DynGraph g) =>  NodeMap a -> [a] -> g a b -> g a bP  OrdaDynGraphgNodeMapa[]agabgab delMapNodeM delMapNodeM :: (Ord a, DynGraph g) => a -> NodeMapM a b g ()  OrdaDynGraphgaNodeMapMabg() delMapNode  delMapNode :: (Ord a, DynGraph g) =>  NodeMap a -> a -> g a b -> g a b  OrdaDynGraphgNodeMapaagabgab delMapEdgesM delMapEdgesM :: (Ord a, DynGraph g) => [(a, a)] -> NodeMapM a b g () < OrdaDynGraphg[](,)aaNodeMapMabg() delMapEdges  delMapEdges :: (Ord a, DynGraph g) =>  NodeMap a -> [(a, a)] -> g a b -> g a bh  OrdaDynGraphgNodeMapa[](,)aagabgab delMapEdgeM delMapEdgeM :: (Ord a, DynGraph g) => (a, a) -> NodeMapM a b g ()  OrdaDynGraphg(,)aaNodeMapMabg() delMapEdge  delMapEdge :: (Ord a, DynGraph g) =>  NodeMap a -> (a, a) -> g a b -> g a b  OrdaDynGraphgNodeMapa(,)aagabgab delLEdgedelLEdge :: (DynGraph gr, Eq b) => LEdge b -> gr a b -> gr a b p DynGraphgrEqbLEdgebgrabgrab.Remove an LEdge from the Graph.  delEdgesdelEdges :: DynGraph gr => [Edge] -> gr a b -> gr a b L DynGraphgr[]Edgegrabgrab4Remove multiple Edges from the Graph.  delEdgedelEdge :: DynGraph gr => Edge -> gr a b -> gr a bR ! DynGraphgrEdgegrabgrab-Remove an Edge from the Graph.  deg'deg' ::  Context a b -> Int  ContextabInt The degree of a Context.  degdeg ::  Graph gr => gr a b -> Node -> Int [ GraphgrgrabNodeIntThe degree of the Node. DeflatedDeflated :: Method  Method'Deflate' is the only method supported in this version of zlib. Indeed it is likely to be the only method that ever will be supported. DeflatedDeflated :: Method  Method'Deflate' is the only method supported in this version of zlib. Indeed it is likely to be the only method that ever will be supported. DefaultWindowBitsDefaultWindowBits ::  WindowBits   WindowBitsDefaultWindowBitsDefaultWindowBits ::  WindowBits   WindowBitsDefaultStrategyDefaultStrategy :: CompressionStrategy_ I CompressionStrategy0Use the DefaultStrategy for normal data. DefaultStrategyDefaultStrategy :: CompressionStrategy  CompressionStrategy0Use the DefaultStrategy for normal data. DefaultMemoryLevelDefaultMemoryLevel ::  MemoryLevel   MemoryLevel;The default. (Equivalent to MemoryLevel 8) DefaultMemoryLevelDefaultMemoryLevel ::  MemoryLevel*   MemoryLevel;The default. (Equivalent to MemoryLevel 8)  defaultFixity defaultFixity :: Fixity  FixitydefaultExecOptdefaultExecOpt :: &RegexOptions regex compOpt execOpt => execOptT !  RegexOptionsregexcompOptexecOptexecOptdefaultDecompressParamsdefaultDecompressParams :: DecompressParams  DecompressParamsThe default set of parameters for decompression. This is typically used with the compressWith function with specific paramaters overridden. defaultDecompressParamsdefaultDecompressParams :: DecompressParams  DecompressParamsThe default set of parameters for decompression. This is typically used with the compressWith function with specific paramaters overridden. defaultCompressParamsdefaultCompressParams :: CompressParams  CompressParamsThe default set of parameters for compression. This is typically used with the compressWith function with specific paramaters overridden. defaultCompressParamsdefaultCompressParams :: CompressParams  CompressParamsThe default set of parameters for compression. This is typically used with the compressWith function with specific paramaters overridden. DefaultCompressionDefaultCompression :: CompressionLevel  CompressionLeveleThe default compression level is 6 (that is, biased towards higher compression at expense of speed). DefaultCompressionDefaultCompression :: CompressionLevel  CompressionLeveleThe default compression level is 6 (that is, biased towards higher compression at expense of speed). defaultCompOptdefaultCompOpt :: &RegexOptions regex compOpt execOpt => compOpt |  RegexOptionsregexcompOptexecOptcompOptcdefaultChunkSizedefaultChunkSize :: Int  Int:Currently set to 32k, less the memory management overhead  DecQtype DecQ = Q Decm decompressWithdecompressWith :: DecompressParams ->  ByteString ->  ByteString  DecompressParams ByteString ByteStringdecompressWindowBitsdecompressWindowBits :: DecompressParams ->  WindowBits  DecompressParams WindowBitsdecompressWindowBitsdecompressWindowBits :: DecompressParams ->  WindowBits?  DecompressParams WindowBitsDecompressParamsDecompressParams ::  WindowBits -> Int -> DecompressParams   WindowBitsIntDecompressParamsDecompressParamsdata DecompressParams# 5The full set of parameters for decompression. The defaults are defaultDecompressParams. The decompressBufferSize is the size of the first output buffer, containing the uncompressed data. If you know an exact or approximate upper bound on the size of the decompressed data then setting this parameter can save memory. The default decompression output buffer size is 32k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. One particular use case for setting the decompressBufferSize is if you know the exact size of the decompressed data and want to produce a strict Data.ByteString.ByteString. The compression and deccompression functions use lazy Data.ByteString.Lazy.ByteStrings but if you set the decompressBufferSize correctly then you can generate a lazy Data.ByteString.Lazy.ByteString with exactly one chunk, which can be converted to a strict Data.ByteString.ByteString in O(1) time using Data.ByteString.concat . Data.ByteString.Lazy.toChunks. DecompressParamsDecompressParams ::  WindowBits -> Int -> DecompressParams   WindowBitsIntDecompressParamsDecompressParamsdata DecompressParams< 5The full set of parameters for decompression. The defaults are defaultDecompressParams. The decompressBufferSize is the size of the first output buffer, containing the uncompressed data. If you know an exact or approximate upper bound on the size of the decompressed data then setting this parameter can save memory. The default decompression output buffer size is 32k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. One particular use case for setting the decompressBufferSize is if you know the exact size of the decompressed data and want to produce a strict Data.ByteString.ByteString. The compression and deccompression functions use lazy Data.ByteString.Lazy.ByteStrings but if you set the decompressBufferSize correctly then you can generate a lazy Data.ByteString.Lazy.ByteString with exactly one chunk, which can be converted to a strict Data.ByteString.ByteString in O(1) time using Data.ByteString.concat . Data.ByteString.Lazy.toChunks. decompressBufferSizedecompressBufferSize :: DecompressParams -> Int  DecompressParamsIntdecompressBufferSizedecompressBufferSize :: DecompressParams -> Int} c DecompressParamsInt decompress decompress ::  ByteString ->  ByteString   ByteString ByteString decompress  decompress :: Format -> DecompressParams ->  ByteString ->  ByteString x FormatDecompressParams ByteString ByteString Decomptype Decomp g a b = (MContext a b, g a b) hGraph decomposition - the context removed from a Graph, and the rest of the Graph. decimaldecimal :: GenTokenParser s u m -> ParsecT s u m Integer  GenTokenParsersumParsecTsumIntegerWParses a positive whole number in the decimal system. Returns the value of the number.  Decdata Dec  dayOfYearToMonthAndDaydayOfYearToMonthAndDay :: Bool -> Int ->  (Int, Int)"  BoolInt(,)IntIntgconvert day of year in the Gregorian or Julian calendars to month and day. First arg is leap year flag  dataToQadataToQa ::  Data a =>  (Name -> k) ->  (Lit -> Q q) -> (k -> [Q q] -> Q q) -> (b -> Maybe (Q q)) -> a -> Q q D DataaNamekLitQqk[]QqQqbMaybeQqaQq dataToPatQ dataToPatQ ::  Data a => (b -> Maybe (Q Pat)) -> a -> Q PatP  DataabMaybeQPataQPatdataToPatQ converts a value to a 'Q Pat' representation of the same value. It takes a function to handle type-specific cases.  dataToExpQ dataToExpQ ::  Data a => (b -> Maybe (Q Exp)) -> a -> Q Exp} J DataabMaybeQExpaQExpdataToExpQ converts a value to a 'Q Exp' representation of the same value. It takes a function to handle type-specific cases.  DataNameDataName ::  NameSpaceL @  NameSpace dataDdataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQ  CxtQName[]Name[]ConQ[]NameDecQ DataDDataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> Dec  CxtName[]Name[]Con[]NameDec DataConI DataConI :: Name -> Type -> Name -> Fixity -> Infoh E NameTypeNameFixityInfo dag4'dag4' :: IO (SGr Int ())  IOSGrInt() dag4dag4 ::  Gr Int ()  GrInt() dag3'dag3' :: IO (SGr Char ())Z B IOSGrChar() dag3dag3 ::  Gr Char ()  GrChar() d3'd3' :: IO (SGr Int Int)  IOSGrIntInt d3d3 ::  Gr Int Int9 ( GrIntInt d1'd1' :: IO (SGr Int Int) t IOSGrIntInt d1d1 ::  Gr Int Int  GrIntInthcyclecycle ::  ByteString ->  ByteString:   ByteString ByteStringcycle ties a finite ByteString into a circular one, or equivalently, the infinite repetition of the original ByteString.  cyc3cyc3 :: Gr Char String  GrCharString CxtQtype CxtQ = Q Cxt@  cxtcxt :: [TypeQ] -> CxtQ  []TypeQCxtQ Cxttype Cxt = [Type] countcount :: Stream s m t => Int -> ParsecT s u m a -> ParsecT s u m [a] G StreamsmtIntParsecTsumaParsecTsum[]acount n p parses n occurrences of p. If n is smaller or equal to zero, the parser equals to return []. Returns a list of n values returned by p. hcountcount :: Char ->  ByteString -> Int64  Char ByteStringInt64count returns the number of times its argument appears in the ByteString
count      == length . elemIndices
count '\n' == length . lines
But more efficiently than using length on the intermediate list. hcopycopy ::  ByteString ->  ByteString   ByteString ByteString*O(n) Make a copy of the ByteString with its own storage. This is mainly useful to allow the rest of the data pointed to by the ByteString to be garbage collected, for example if a large string has been read in, and only a small part of it is needed in the rest of the program.  contextMcontextM :: GraphM m gr =>  m (gr a b) -> Node -> m (Context a b)  GraphMmgrmgrabNodemContextab contextcontext ::  Graph gr => gr a b -> Node ->  Context a b m GraphgrgrabNodeContextabsFind the context for the given Node. Causes an error if the Node is not present in the Graph.  Contexttype Context a b = (Adj b, Node, a, Adj b)e WLinks to the Node, the Node itself, a label, links from the Node.  conTconT :: Name -> TypeQ  NameTypeQ ConTConT :: Name -> Type^ O NameTypehcons'cons' :: Char ->  ByteString ->  ByteString  Char ByteString ByteStringO(1) Unlike cons, 'cons\'' is strict in the ByteString that we are consing onto. More precisely, it forces the head and the first chunk. It does this because, for space efficiency, it may coalesce the new byte onto the first 'chunk' rather than starting a new 'chunk'. So that means you can't use a lazy recursive contruction like this:
let xs = cons\' c xs in xs
You can however use cons, as well as repeat and cycle, to build infinite lazy ByteStrings. hconscons :: Char ->  ByteString ->  ByteStringV 5 Char ByteString ByteString9O(1) cons is analogous to '(:)' for lists.  ConQtype ConQ = Q Con  conPconP :: Name -> [PatQ] -> PatQ3  Name[]PatQPatQ ConPConP :: Name -> [Pat] -> Pat  Name[]PatPat conEconE :: Name -> ExpQ  NameExpQ ConEConE :: Name -> Exp; - NameExp condE condE :: ExpQ -> ExpQ -> ExpQ -> ExpQ  ExpQExpQExpQExpQ CondE CondE :: Exp -> Exp -> Exp -> Exp/  ExpExpExpExph concatMap concatMap :: (Char -> ByteString) ->  ByteString ->  ByteString  Char ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results hconcatconcat ::  [ByteString] ->  ByteString l [] ByteString ByteString/O(n) Concatenate a list of ByteStrings.  Condata Con  compressWith compressWith :: CompressParams ->  ByteString ->  ByteString ] CompressParams ByteString ByteStringcompressWindowBitscompressWindowBits :: CompressParams ->  WindowBits  CompressParams WindowBitscompressWindowBitscompressWindowBits :: CompressParams ->  WindowBits  CompressParams WindowBitscompressStrategycompressStrategy :: CompressParams -> CompressionStrategy:  CompressParamsCompressionStrategycompressStrategycompressStrategy :: CompressParams -> CompressionStrategy  CompressParamsCompressionStrategyCompressParamsCompressParams :: CompressionLevel -> Method ->  WindowBits ->  MemoryLevel -> CompressionStrategy -> Int -> CompressParams   CompressionLevelMethod WindowBits MemoryLevelCompressionStrategyIntCompressParamsCompressParamsdata CompressParamsL The full set of parameters for compression. The defaults are defaultCompressParams. The compressBufferSize is the size of the first output buffer containing the compressed data. If you know an approximate upper bound on the size of the compressed data then setting this parameter can save memory. The default compression output buffer size is 16k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. CompressParamsCompressParams :: CompressionLevel -> Method ->  WindowBits ->  MemoryLevel -> CompressionStrategy -> Int -> CompressParamsn! ! CompressionLevelMethod WindowBits MemoryLevelCompressionStrategyIntCompressParamsCompressParamsdata CompressParams! The full set of parameters for compression. The defaults are defaultCompressParams. The compressBufferSize is the size of the first output buffer containing the compressed data. If you know an approximate upper bound on the size of the compressed data then setting this parameter can save memory. The default compression output buffer size is 16k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. compressMethodcompressMethod :: CompressParams -> Method$ # CompressParamsMethodcompressMethodcompressMethod :: CompressParams -> Method$ u$ CompressParamsMethodcompressMemoryLevelcompressMemoryLevel :: CompressParams ->  MemoryLevel % % CompressParams MemoryLevelcompressMemoryLevelcompressMemoryLevel :: CompressParams ->  MemoryLevel% % CompressParams MemoryLevel compressLevel compressLevel :: CompressParams -> CompressionLevel>& & CompressParamsCompressionLevel compressLevel compressLevel :: CompressParams -> CompressionLevel& & CompressParamsCompressionLevelCompressionStrategydata CompressionStrategy' The strategy parameter is used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. CompressionStrategydata CompressionStrategy3( The strategy parameter is used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. CompressionLevelCompressionLevel :: Int -> CompressionLevel) j) IntCompressionLevel.A specific compression level between 1 and 9. CompressionLeveldata CompressionLevel) The compression level parameter controls the amount of compression. This is a trade-off between the amount of compression and the time required to do the compression. CompressionLevelCompressionLevel :: Int -> CompressionLevel+ + IntCompressionLevel.A specific compression level between 1 and 9. CompressionLeveldata CompressionLevel+ The compression level parameter controls the amount of compression. This is a trade-off between the amount of compression and the time required to do the compression. compressBufferSizecompressBufferSize :: CompressParams -> Int, , CompressParamsIntcompressBufferSizecompressBufferSize :: CompressParams -> Int0- - CompressParamsIntcompresscompress ::  ByteString ->  ByteString- -  ByteString ByteStringcompress compress :: Format -> CompressParams ->  ByteString ->  ByteStringT. !. FormatCompressParams ByteString ByteString CompOption CompOption :: CInt ->  CompOption. . CInt CompOption CompOptionnewtype  CompOption. }A bitmapped CInt containing options for compilation of regular expressions. Option values (and their man 3 regcomp names) are
  • compBlank which is a completely zero value for all the flags. This is also the blankCompOpt value.
  • compExtended (REG_EXTENDED) which can be set to use extended instead of basic regular expressions. This is set in the defaultCompOpt value.
  • compNewline (REG_NEWLINE) turns on newline sensitivity: The dot (.) and inverted set [^ ] never match newline, and ^ and $ anchors do match after and before newlines. This is set in the defaultCompOpt value.
  • compIgnoreCase (REG_ICASE) which can be set to match ignoring upper and lower distinctions.
  • compNoSub (REG_NOSUB) which turns off all information from matching except whether a match exists.
 CompOption CompOption :: CInt ->  CompOption2 2 CInt CompOption CompOptionnewtype  CompOption3 }A bitmapped CInt containing options for compilation of regular expressions. Option values (and their man 3 regcomp names) are
  • compBlank which is a completely zero value for all the flags. This is also the blankCompOpt value.
  • compExtended (REG_EXTENDED) which can be set to use extended instead of basic regular expressions. This is set in the defaultCompOpt value.
  • compNewline (REG_NEWLINE) turns on newline sensitivity: The dot (.) and inverted set [^ ] never match newline, and ^ and $ anchors do match after and before newlines. This is set in the defaultCompOpt value.
  • compIgnoreCase (REG_ICASE) which can be set to match ignoring upper and lower distinctions.
  • compNoSub (REG_NOSUB) which turns off all information from matching except whether a match exists.
 CompOption CompOption :: CInt ->  CompOption6 6 CInt CompOption CompOptionnewtype  CompOption77 }A bitmapped CInt containing options for compilation of regular expressions. Option values (and their man 3 regcomp names) are
  • compBlank which is a completely zero value for all the flags. This is also the blankCompOpt value.
  • compExtended (REG_EXTENDED) which can be set to use extended instead of basic regular expressions. This is set in the defaultCompOpt value.
  • compNewline (REG_NEWLINE) turns on newline sensitivity: The dot (.) and inverted set [^ ] never match newline, and ^ and $ anchors do match after and before newlines. This is set in the defaultCompOpt value.
  • compIgnoreCase (REG_ICASE) which can be set to match ignoring upper and lower distinctions.
  • compNoSub (REG_NOSUB) which turns off all information from matching except whether a match exists.
 CompOption CompOption :: CInt ->  CompOption; ; CInt CompOption CompOptionnewtype  CompOptionW; }A bitmapped CInt containing options for compilation of regular expressions. Option values (and their man 3 regcomp names) are
  • compBlank which is a completely zero value for all the flags. This is also the blankCompOpt value.
  • compExtended (REG_EXTENDED) which can be set to use extended instead of basic regular expressions. This is set in the defaultCompOpt value.
  • compNewline (REG_NEWLINE) turns on newline sensitivity: The dot (.) and inverted set [^ ] never match newline, and ^ and $ anchors do match after and before newlines. This is set in the defaultCompOpt value.
  • compIgnoreCase (REG_ICASE) which can be set to match ignoring upper and lower distinctions.
  • compNoSub (REG_NOSUB) which turns off all information from matching except whether a match exists.
 compNoSub compNoSub ::  CompOption"? ?  CompOption compNoSub compNoSub ::  CompOptionp? c?  CompOption compNoSub compNoSub ::  CompOption? ?  CompOption compNoSub compNoSub ::  CompOption @ ?  CompOption compNewline compNewline ::  CompOption^@ Q@  CompOption compNewline compNewline ::  CompOption@ @  CompOption compNewline compNewline ::  CompOptionA @  CompOption compNewline compNewline ::  CompOptionTA GA  CompOptioncompletionMatchescompletionMatches :: String -> (String -> IO [String]) -> IO (Maybe (String, [String]))BB A StringStringIO[]StringIOMaybe(,)String[]Stringcompletecomplete :: Int -> Char -> IO IntB B IntCharIOIntcompile compile ::  CompOption ->  ExecOption -> String -> IO (Either WrapError Regex)C AC  CompOption ExecOptionStringIOEither WrapErrorRegexcompile compile ::  CompOption ->  ExecOption -> Seq Char -> IO (Either WrapError Regex)^D D  CompOption ExecOptionSeqCharIOEither WrapErrorRegexcompile compile ::  CompOption ->  ExecOption ->  ByteString -> IO (Either WrapError Regex)7E D  CompOption ExecOption ByteStringIOEither WrapErrorRegexCompiles a regular expression compIgnoreCasecompIgnoreCase ::  CompOptionE E  CompOptioncompIgnoreCasecompIgnoreCase ::  CompOptionF E  CompOptioncompIgnoreCasecompIgnoreCase ::  CompOption]F PF  CompOptioncompIgnoreCasecompIgnoreCase ::  CompOptionF F  CompOption compExtended compExtended ::  CompOption G F  CompOption compExtended compExtended ::  CompOption]G PG  CompOption compExtended compExtended ::  CompOptionG G  CompOption compExtended compExtended ::  CompOptionH G  CompOption compEcompE :: [StmtQ] -> ExpQaH KH []StmtQExpQ CompECompE :: [Stmt] -> ExpH H []StmtExp compBlank compBlank ::  CompOptionI H  CompOptionWA completely zero value for all the flags. This is also the blankCompOpt value.  compBlank compBlank ::  CompOptionI I  CompOptionWA completely zero value for all the flags. This is also the blankCompOpt value.  compBlank compBlank ::  CompOptionQJ DJ  CompOptionWA completely zero value for all the flags. This is also the blankCompOpt value.  compBlank compBlank ::  CompOptionJ J  CompOptionWA completely zero value for all the flags. This is also the blankCompOpt value.  commentStart commentStart :: GenLanguageDef s u m -> StringK K GenLanguageDefsumStringDescribes the start of a block comment. Use the empty string if the language doesn't support block comments. For example "/*".  commentStart commentStart :: GenLanguageDef s u m -> StringL L GenLanguageDefsumStringDescribes the start of a block comment. Use the empty string if the language doesn't support block comments. For example "/*".  commentLine commentLine :: GenLanguageDef s u m -> StringM M GenLanguageDefsumString}Describes the start of a line comment. Use the empty string if the language doesn't support line comments. For example "//".  commentLine commentLine :: GenLanguageDef s u m -> StringN N GenLanguageDefsumString}Describes the start of a line comment. Use the empty string if the language doesn't support line comments. For example "//".  commentEnd commentEnd :: GenLanguageDef s u m -> StringO O GenLanguageDefsumString}Describes the end of a block comment. Use the empty string if the language doesn't support block comments. For example "*/".  commentEnd commentEnd :: GenLanguageDef s u m -> StringP P GenLanguageDefsumString}Describes the end of a block comment. Use the empty string if the language doesn't support block comments. For example "*/".  commaSep1 commaSep1 :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]>R Q GenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser commaSep1 p parses one or more occurrences of p separated by comma. Returns a list of values returned by p. commaSepcommaSep :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]S bS GenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser commaSep p parses zero or more occurrences of p separated by comma. Returns a list of values returned by p. commacomma :: GenTokenParser s u m -> ParsecT s u m StringT T GenTokenParsersumParsecTsumStringrLexeme parser comma parses the character ',' and skips any trailing white space. Returns the string ",".  commacomma :: DocU U DocA ',' character  combinecombine :: [([(Name, Name)], Pat)] -> ([(Name, Name)], [Pat])tV V [](,)[](,)NameNamePat(,)[](,)NameName[]PatColumntype Column = IntV coloncolon :: GenTokenParser s u m -> ParsecT s u m StringIW W GenTokenParsersumParsecTsumStringrLexeme parser colon parses the character ':' and skips any trailing white space. Returns the string ":".  coloncolon :: DocW W DocA ':' character  clr595clr595 ::  Gr Int IntOX >X GrIntInt clr528'clr528' :: IO (SGr Char Int)X X IOSGrCharInt clr528clr528 ::  Gr Char IntX X GrCharInt clr508'clr508' :: IO (SGr Char Int)WY >Y IOSGrCharInt clr508clr508 ::  Gr Char IntY Y GrCharInt clr489'clr489' :: IO (SGr Char ())Z Y IOSGrChar() clr489clr489 ::  Gr Char ()LZ ;Z GrChar() clr486'clr486' :: IO (SGr String ())Z Z IOSGrString() clr486clr486 ::  Gr String ()Z Z GrString() clr479'clr479' :: IO (SGr Char ())V[ >[ IOSGrChar() clr479clr479 ::  Gr Char ()[ [ GrChar() clearHistory clearHistory :: IO ()[ [ IO()Clear the history.  ClauseQtype ClauseQ = Q ClauseA\  clause clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQ\ \ []PatQBodyQ[]DecQClauseQ Clause Clause :: [Pat] -> Body -> [Dec] -> Clausei] B] []PatBody[]DecClause Clausedata Clause]  ClassOpI ClassOpI :: Name -> Type -> Name -> Fixity -> Info7^ ^ NameTypeNameFixityInfo ClassIClassI :: Dec -> Info^ {^ DecInfo classDclassD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQQ_ _ CxtQName[]Name[]FunDep[]DecQDecQ ClassDClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Dec` _ CxtName[]Name[]FunDep[]DecDecc chunkOverhead chunkOverhead :: Int[` U` IntFThe memory management overhead. Currently this is tuned for GHC only. cchunkchunk ::  ByteString ->  ByteString ->  ByteString-a a  ByteString ByteString ByteStringHSmart constructor for Chunk. Guarantees the data type invariant. cChunkChunk ::  ByteString ->  ByteString ->  ByteStringb a  ByteString ByteString ByteStringchoicechoice :: Stream s m t => [ParsecT s u m a] -> ParsecT s u m ab nb Streamsmt[]ParsecTsumaParsecTsumachoice ps tries to apply the parsers in the list ps in order, until one of them succeeds. Returns the value of the succeeding parser. ccheckInvariantcheckInvariant ::  ByteString ->  ByteStringc c  ByteString ByteString,In a form that checks the invariant lazily.  CharPostype CharPos = (Int, Int)9d  CharParsertype  CharParser st = GenParser Char std  charLiteral charLiteral :: GenTokenParser s u m -> ParsecT s u m Char/e d GenTokenParsersumParsecTsumChar&This lexeme parser parses a single literal character. Returns the literal character value. This parsers deals correctly with escape sequences. The literal character is parsed according to the grammar rules defined in the Haskell report (which matches most programming languages quite closely).  charLcharL :: Char -> Litf f CharLit CharLCharL :: Char -> Litf f CharLitcharchar :: Stream s m Char => Char -> ParsecT s u m Charg Wg StreamsmCharCharParsecTsumCharchar c parses a single character c. Returns the parsed character (i.e. c).
semiColon  = char ';'
 charchar :: Char -> Dochh Zh CharDocchainr1chainr1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a_i h StreamsmtParsecTsumaParsecTsumaaaParsecTsumachainr1 p op x parser one or more occurrences of |p|, separated by op Returns a value obtained by a right associative application of all functions returned by op to the values returned by p. chainr chainr :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m aUk j StreamsmtParsecTsumaParsecTsumaaaaParsecTsumaEchainr p op x parser zero or more occurrences of p, separated by op Returns a value obtained by a right associative application of all functions returned by op to the values returned by p. If there are no occurrences of p, the value x is returned. chainl1chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m am .m StreamsmtParsecTsumaParsecTsumaaaParsecTsumachainl1 p op x parser one or more occurrences of p, separated by op Returns a value obtained by a left associative application of all functions returned by op to the values returned by p. . This parser can for example be used to eliminate left recursion which typically occurs in expression grammars.
expr    = term   `chainl1` mulop
term    = factor `chainl1` addop
factor  = parens expr <|> integer

mulop   =   do{ symbol "*"; return (*)   }
        <|> do{ symbol "/"; return (div) }

addop   =   do{ symbol "+"; return (+) }
        <|> do{ symbol "-"; return (-) }
chainl chainl :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m a,q p StreamsmtParsecTsumaParsecTsumaaaaParsecTsumaGchainl p op x parser zero or more occurrences of p, separated by op. Returns a value obtained by a left associative application of all functions returned by op to the values returned by p. If there are zero occurrences of p, the value x is returned. censorcensor :: MonadWriter w m => (w -> w) -> m a -> m a s r  MonadWriterwmwwmama cCallcCall :: CallconvOs Ds Callconv CCallCCall :: Callconvs s Callconv catchError catchError :: MonadError e m => m a ->  (e -> m a) -> m a8t t  MonadErroremmaemama catcat :: [Doc] -> Doct wt []DocDocEither hcat or vcat  castIOUArray castIOUArray ::  IOUArray ix a -> IO (IOUArray ix b)5u u IOUArrayixaIOIOUArrayixbCasts an IOUArray with one element type into one with a different element type. All the elements of the resulting array are undefined (unless you know what you're doing...).  caseSensitive caseSensitive :: GenLanguageDef s u m -> Boolqv Mv GenLanguageDefsumBool6Set to True if the language is case sensitive.  caseSensitive caseSensitive :: GenLanguageDef s u m -> Bool.w  w GenLanguageDefsumBool6Set to True if the language is case sensitive.  caseEcaseE :: ExpQ -> [MatchQ] -> ExpQw w ExpQ[]MatchQExpQ CaseECaseE :: Exp -> [Match] -> ExpFx ,x Exp[]MatchExp Callconvdata Callconvzx callCCcallCC :: MonadCont m => ((a -> m b) -> m a) -> m ay x  MonadContmambmamacallbackReadCharcallbackReadChar :: IO ()cy Xy IO()callbackHandlerInstallcallbackHandlerInstall :: String -> (String -> IO ()) ->  IO (IO ())z y StringStringIO()IOIO()Callbacktype Callback = Int -> Char -> IO Intjz  c'c' :: IO (SGr Char ())z z IOSGrChar() cc ::  Gr Char ()z z GrChar()c ByteStringdata  ByteString5{ A space-efficient representation of a Word8 vector, supporting many efficient operations. A ByteString contains 8-bit characters only. Instances of Eq, Ord, Read, Show, Data, Typeable h ByteStringdata  ByteString-| A space-efficient representation of a Word8 vector, supporting many efficient operations. A ByteString contains 8-bit characters only. Instances of Eq, Ord, Read, Show, Data, Typeable  buildGrbuildGr :: DynGraph gr =>  [Context a b] -> gr a b} N} DynGraphgr[]Contextabgrab5Build a Graph from a list of Contexts. buildExpressionParserbuildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a~ Z~  OperatorTabletoksta GenParsertoksta GenParsertokstahbreakbreak :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)_ # CharBool ByteString(,) ByteString ByteStringPbreak p is equivalent to span (not . p). bracketsbrackets :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m az . GenTokenParsersumParsecTsumaParsecTsuma{Lexeme parser brackets p parses p enclosed in brackets ('[' and ']'), returning the value of p.  bracketsbrackets :: Doc -> DocI < DocDoc Wrap document in [...] bracesbraces :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a0  GenTokenParsersumParsecTsumaParsecTsumawLexeme parser braces p parses p enclosed in braces ('{' and '}'), returning the value of p.  bracesbraces :: Doc -> Doc  DocDoc Wrap document in {...}  BodyQtype BodyQ = Q BodyP  Bodydata Body|  blankExecOpt blankExecOpt :: &RegexOptions regex compOpt execOpt => execOpt   RegexOptionsregexcompOptexecOptexecOpt blankCompOpt blankCompOpt :: &RegexOptions regex compOpt execOpt => compOpt   RegexOptionsregexcompOptexecOptcompOpt bindSbindS :: PatQ -> ExpQ -> StmtQ  PatQExpQStmtQ BindSBindS :: Pat -> Exp -> Stmt q PatExpStmt bindQbindQ :: Q a ->  (a -> Q b) -> Q b ۅ QaaQbQbbindKeybindKey :: Char -> Callback -> IO ()t W CharCallbackIO()between between :: Stream s m t => ParsecT s u m open -> ParsecT s u m close -> ParsecT s u m a -> ParsecT s u m a  StreamsmtParsecTsumopenParsecTsumcloseParsecTsumaParsecTsumabetween open close p parses open, followed by p and close. Returns the value returned by p.
braces  = between (symbol "{") (symbol "}")
 BestSpeed BestSpeed :: CompressionLevel  CompressionLevel2The fastest compression method (less compression)  BestSpeed BestSpeed :: CompressionLevel@ - CompressionLevel2The fastest compression method (less compression) BestCompressionBestCompression :: CompressionLevel؉ ʼn CompressionLevel3The slowest compression method (best compression). BestCompressionBestCompression :: CompressionLevelq ^ CompressionLevel3The slowest compression method (best compression). beforebefore :: Extract source => Int -> source -> source9  ExtractsourceIntsourcesource b'b' :: IO (SGr Char ()) r IOSGrChar() bb ::  Gr Char ()̋  GrChar() AssocRight AssocRight :: Assoc  Assoc AssocNone AssocNone :: AssocV N Assoc AssocLeft AssocLeft :: Assoc  AssocAssocdata AssocȌ NThis data type specifies the associativity of operators: left, right or none.  asPasP :: Name -> PatQ -> PatQz e NamePatQPatQ AsPAsP :: Name -> Pat -> Patڍ Ǎ NamePatPatasksasks :: MonadReader r m => (r -> a) -> m aY 1  MonadReaderrmramaRetrieves a function of the current environment. Parameters:
  • The selector function to apply to the environment.
See an example in Control.Monad.Reader. askask :: MonadReader r m => m rm O  MonadReaderrmmr arrowTarrowT :: TypeQ  TypeQ ArrowTArrowT :: Type  Type arithSeqE arithSeqE :: RangeQ -> ExpQE 4 RangeQExpQ ArithSeqE ArithSeqE :: Range -> Exp  RangeExp appTappT :: TypeQ -> TypeQ -> TypeQ  TypeQTypeQTypeQ AppTAppT :: Type -> Type -> Typeq \ TypeTypeType appsEappsE :: [ExpQ] -> ExpQˑ  []ExpQExpQ appPrecappPrec ::  Precedence   Precedence AppliedApplied :: NameIsW N NameIsh appendFile appendFile :: FilePath ->  ByteString -> IO ()  FilePath ByteStringIO()&Append a ByteString to a file. happendappend ::  ByteString ->  ByteString ->  ByteString o  ByteString ByteString ByteString&O(n\c)/ Append two ByteStrings  appEappE :: ExpQ -> ExpQ -> ExpQ"  ExpQExpQExpQ AppEAppE :: Exp -> Exp -> Exp p ExpExpExpanyTokenanyToken :: (Stream s m t, Show t) => ParsecT s u m t  StreamsmtShowtParsecTsumtThe parser anyToken accepts any kind of token. It is for example used to implement eof. Returns the accepted token. anyCharanyChar :: Stream s m Char => ParsecT s u m Char#  StreamsmCharParsecTsumCharFThis parser succeeds for any character. Returns the parsed character. hanyany :: (Char -> Bool) ->  ByteString -> Bool Ȗ CharBool ByteStringBoolApplied to a predicate and a ByteString, any determines if any element of the ByteString satisfies the predicate. anglesangles :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a2  GenTokenParsersumParsecTsumaParsecTsumaLexeme parser angles p parses p enclosed in angle brackets ('<' and '>'), returning the value of p. alphaNumalphaNum :: Stream s m Char => ParsecT s u m CharB  StreamsmCharParsecTsumCharZParses a letter or digit (a character between '0' and '9'). Returns the parsed character.  alphaalpha :: [(Name, Name)] -> Name -> ExpQ!  [](,)NameNameNameExpQ AloneAlone :: NameIs_ V NameIsAllTextSubmatchesAllTextSubmatches :: f b -> AllTextSubmatches f b ʚ fbAllTextSubmatchesfbAllTextSubmatchesnewtype AllTextSubmatches f b= *Used in results of RegexContext instances AllTextMatchesAllTextMatches :: f b -> AllTextMatches f b ɛ fbAllTextMatchesfbAllTextMatchesnewtype AllTextMatches f b3 *Used in results of RegexContext instances  AllSubmatches AllSubmatches :: f b -> AllSubmatches f bޜ  fb AllSubmatchesfb AllSubmatchesnewtype  AllSubmatches f b# *Used in results of RegexContext instances  AllMatches AllMatches :: f b -> AllMatches f b  fb AllMatchesfb AllMatchesnewtype  AllMatches f b *Used in results of RegexContext instances hallall :: (Char -> Bool) ->  ByteString -> Bool  CharBool ByteStringBoolApplied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. afterafter :: Extract source => Int -> source -> sourceƟ  ExtractsourceIntsourcesource Adjtype Adj b = [(b, Node)] (Labeled links to or from a Node.  addJulianYearsRollOveraddJulianYearsRollOver :: Integer -> Day -> Day  IntegerDayDayAdd years, matching month and day, with Feb 29th rolled over to Mar 1st if necessary. For instance, 2004-02-29 + 2 years = 2006-03-01.  addJulianYearsClipaddJulianYearsClip :: Integer -> Day -> Day  IntegerDayDayAdd years, matching month and day, with Feb 29th clipped to Feb 28th if necessary. For instance, 2004-02-29 + 2 years = 2006-02-28.  addJulianMonthsRollOveraddJulianMonthsRollOver :: Integer -> Day -> DayӢ  IntegerDayDayAdd months, with days past the last day of the month rolling over to the next month. For instance, 2005-01-30 + 1 month = 2005-03-02.  addJulianMonthsClipaddJulianMonthsClip :: Integer -> Day -> Dayߣ ɣ IntegerDayDayAdd months, with days past the last day of the month clipped to the last day. For instance, 2005-01-30 + 1 month = 2005-02-28.  addHistory addHistory :: String -> IO ()ä  StringIO()Add this command to the history. This allows users to search backward through history with C-r and step through with up and down arrows, among other things. addErrorMessageaddErrorMessage :: Message ->  ParseError ->  ParseError ֥ Message ParseError ParseErroraddDefun addDefun :: String -> Callback ->  Maybe Char -> IO () p StringCallbackMaybeCharIO()addAbsoluteTimeaddAbsoluteTime :: DiffTime ->  AbsoluteTime ->  AbsoluteTimeB  DiffTime AbsoluteTime AbsoluteTimeaddAbsoluteTime a b = a + b  AbsoluteTimedata  AbsoluteTime 2AbsoluteTime is TAI, time as measured by a clock.  abb'abb' :: IO (SGr Char ())!  IOSGrChar() abbabb ::  Gr Char ()g V GrChar() ab'ab' :: IO (SGr Char ())  IOSGrChar() abab ::  Gr Char ()  GrChar() a'a' :: IO (SGr Char ())O 7 IOSGrChar() aa ::  Gr Char ()  GrChar()=~~ (=~~) :: _(RegexMaker Regex CompOption ExecOption source, RegexContext Regex source1 target, Monad m) => source1 -> source -> m targetت N  RegexMakerRegex CompOption ExecOptionsource RegexContextRegexsource1targetMonadmsource1sourcemtarget=~ (=~) :: V(RegexMaker Regex CompOption ExecOption source, RegexContext Regex source1 target) => source1 -> source -> target   RegexMakerRegex CompOption ExecOptionsource RegexContextRegexsource1targetsource1sourcetarget<||> (<||>) :: Stream s Identity tok => StreamPermParser s st (a -> b) ->  Parsec s st a -> StreamPermParser s st b  StreamsIdentitytokStreamPermParsersstabParsecsstaStreamPermParsersstbThe expression perm <||> p adds parser p to the permutation parser perm. The parser p is not allowed to accept empty input - use the optional combinator (<|?>) instead. Returns a new permutation parser that includes p. <|?> (<|?>) :: Stream s Identity tok => StreamPermParser s st (a -> b) -> (a, Parsec s st a) -> StreamPermParser s st b_  StreamsIdentitytokStreamPermParsersstab(,)aParsecsstaStreamPermParsersstb.The expression perm <||> (x,p) adds parser p to the permutation parser perm. The parser p is optional - if it can not be applied, the default value x will be used instead. Returns a new permutation parser that includes the optional parser p. <|> (<|>) ::  Monad m => ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m ab  MonadmParsecTsumaParsecTsumaParsecTsumaThis combinator implements choice. The parser p <|> q first applies p. If it succeeds, the value of p is returned. If p fails without consuming any input, parser q is tried. This combinator is defined equal to the mplus member of the MonadPlus class and the (Control.Applicative.<|>) member of Control.Applicative.Alternative. The parser is called predictive since q is only tried when parser p didn't consume any input (i.e.. the look ahead is 1). This non-backtracking behaviour allows for both an efficient implementation of the parser combinators and the generation of good error messages.  () ::  Monad m => ParsecT s u m a -> String -> ParsecT s u m aٴ  MonadmParsecTsumaStringParsecTsumaThe parser p ? msg behaves as parser p, but whenever the parser p fails without consuming any input, it replaces expect error messages with the expect error message msg. This is normally used at the end of a set alternatives where we want to return an error message in terms of a higher level construct rather than returning all possible characters. For example, if the expr parser from the try example would fail, the error message is: '...: expecting expression'. Without the (<?>) combinator, the message would be like '...: expecting "let" or letter', which is less friendly.  <> (<>) :: Doc -> Doc -> Docѷ  DocDocDocBeside  <+> (<+>) :: Doc -> Doc -> Doc< * DocDocDocBeside, separated by space <$?> (<$?>) :: Stream s Identity tok => (a -> b) -> (a, Parsec s st a) -> StreamPermParser s st bO  StreamsIdentitytokab(,)aParsecsstaStreamPermParsersstbUThe expression f <$?> (x,p) creates a fresh permutation parser consisting of parser p. The the final result of the permutation parser is the function f applied to the return value of p. The parser p is optional - if it can not be applied, the default value x will be used instead. <$$> (<$$>) :: Stream s Identity tok => (a -> b) ->  Parsec s st a -> StreamPermParser s st b 4 StreamsIdentitytokabParsecsstaStreamPermParsersstb1The expression f <$$> p creates a fresh permutation parser consisting of parser p. The the final result of the permutation parser is the function f applied to the return value of p. The parser p is not allowed to accept empty input - use the optional combinator (<$?>) instead. If the function f takes more than one parameter, the type variable b is instantiated to a functional type which combines nicely with the adds parser p to the (<||>) combinator. This results in stylized code where a permutation parser starts with a combining function f followed by the parsers. The function f gets its parameters in the order in which the parsers are specified, but actual input can be in any order.  & (&) :: DynGraph gr =>  Context a b -> gr a b -> gr a be ) DynGraphgrContextabgrabgrab $+$ ($+$) :: Doc -> Doc -> Docɿ  DocDocDocAbove, without dovetailing.  $$ ($$) :: Doc -> Doc -> DocG 5 DocDocDoc5Above; if there is no overlap it "dovetails" the two ~?= (~?=) :: (Eq a, Show a) => a -> a -> Test  EqaShowaaaTest~? (~?) :: AssertionPredicable t => t -> String -> Test k AssertionPredicablettStringTest~=? (~=?) :: (Eq a, Show a) => a -> a -> Test  EqaShowaaaTest~: (~:) :: Testable t => String -> t -> Test } TestabletStringtTest|class  Monad m => | (Stream s m t) (s -> t) An instance of Stream has stream type s, underlying monad m and token type t determined by the stream Some rough guidelines for a "correct" instance of Stream:
  • unfoldM uncons gives the [t] corresponding to the stream
  • A Stream instance is responsible for maintaining the "position within the stream" in the stream state s. This is trivial unless you are using the monad in a non-trivial way.
 zonedTimeZone zonedTimeZone ::  ZonedTime -> TimeZone: "  ZonedTimeTimeZonezonedTimeToUTCzonedTimeToUTC ::  ZonedTime -> UTCTime   ZonedTimeUTCTimezonedTimeToLocalTimezonedTimeToLocalTime ::  ZonedTime ->  LocalTime2   ZonedTime LocalTime ZonedTime ZonedTime ::  LocalTime -> TimeZone ->  ZonedTime   LocalTimeTimeZone ZonedTime ZonedTimedata  ZonedTime 'A local time together with a TimeZone. gzipWith zipWith :: (Word8 -> Word8 -> a) ->  ByteString ->  ByteString -> [a]  Word8Word8a ByteString ByteString[]azipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function. For example, zipWith (+) is applied to two ByteStrings to produce the list of corresponding sums. fzipWith zipWith :: (Char -> Char -> a) ->  ByteString ->  ByteString -> [a]| G CharChara ByteString ByteString[]azipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function. For example, zipWith (+) is applied to two ByteStrings to produce the list of corresponding sums. gzipzip ::  ByteString ->  ByteString -> [(Word8, Word8)]   ByteString ByteString[](,)Word8Word8O(n) zip takes two ByteStrings and returns a list of corresponding pairs of bytes. If one input ByteString is short, excess elements of the longer ByteString are discarded. This is equivalent to a pair of unpack operations. fzipzip ::  ByteString ->  ByteString -> [(Char, Char)] d  ByteString ByteString[](,)CharChar4O(n) zip takes two ByteStrings and returns a list of corresponding pairs of Chars. If one input ByteString is short, excess elements of the longer ByteString are discarded. This is equivalent to a pair of unpack operations, and so space usage may be large for multi-megabyte ByteStrings y ZigZagMode ZigZagMode :: Mode  ModeWith zig-zag cuts y zeroWidthText zeroWidthText :: String -> Doc v StringDocYSome text, but without any width. Use for non-printing text such as a HTML or Latex tags yellowyellow :: String  StringuwriteTixwriteTix :: String -> Tix -> IO () z StringTixIO()P writeSTRef writeSTRef ::  STRef s a -> a -> ST s ()  STRefsaaSTs()?writeSampleVarwriteSampleVar ::  SampleVar a -> a -> IO ()   SampleVaraaIO()XWrite a value into the SampleVar, overwriting any previous value that was there. <writeList2ChanwriteList2Chan :: Chan a -> [a] -> IO () a Chana[]aIO()0Write an entire list of items to a Chan. g writeFile writeFile :: FilePath ->  ByteString -> IO ();  FilePath ByteStringIO()%Write a ByteString to a file. f writeFile writeFile :: FilePath ->  ByteString -> IO ()  FilePath ByteStringIO()%Write a ByteString to a file. < writeChan writeChan :: Chan a -> a -> IO () i ChanaaIO() Write a value to a Chan.  writeArray  writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()] $ MArrayaemIxiaieiem()$Write an element in a mutable array  wrapperwrapper :: ([(String, String)] -> IO Html) -> IO ()  [](,)StringStringIOHtmlIO()Compatibility wrapper for the old CGI interface. Output the output from a function from CGI environment and input variables to an HTML document. fwordswords ::  ByteString ->  [ByteString]   ByteString[] ByteStringrwords breaks a ByteString up into a list of words, which were delimited by Chars representing white space.  wordPrimL wordPrimL :: Integer -> Lit  IntegerLit WordPrimL WordPrimL :: Integer -> LitM < IntegerLitwithStorableArraywithStorableArray :: StorableArray i e -> (Ptr e -> IO a) -> IO a   StorableArrayiePtreIOaIOaThe pointer to the array contents is obtained by withStorableArray. The idea is similar to ForeignPtr (used internally here). The pointer should be used only during execution of the IO action retured by the function passed as argument to withStorableArray.  withSocketsDo withSocketsDo :: IO a -> IO a x IOaIOajOn Windows operating systems, the networking subsystem has to be initialised using withSocketsDo before any networking operations can be used. eg.
main = withSocketsDo $ do {...}
Although this is only strictly necessary on Windows platforms, it is harmless on other platforms, so for portability it is good practice to use it all the time.  withSockAddr withSockAddr :: SockAddr -> (Ptr SockAddr -> Int -> IO a) -> IO a u SockAddrPtrSockAddrIntIOaIOawUse a SockAddr with a function requiring a pointer to a SockAddr and the length of that SockAddr.  withReaderT withReaderT ::  (r' -> r) ->  ReaderT r m a -> ReaderT r' m a  r'rReaderTrmaReaderTr'ma withReader withReader ::  (r' -> r) ->  Reader r a ->  Reader r' ak > r'rReaderraReaderr'a(A more general version of local. 0withPoolwithPool :: (Pool -> IO b) -> IO b  PoolIObIObExecute an action with a fresh memory pool, which gets automatically deallocated (including its contents) after the action has finished. withNewSockAddrwithNewSockAddr :: Family -> (Ptr SockAddr -> Int -> IO a) -> IO aC  FamilyPtrSockAddrIntIOaIOaCreate a new SockAddr for use with a function requiring a pointer to a SockAddr and the length of that SockAddr. ;withMVarwithMVar :: MVar a ->  (a -> IO b) -> IO bP + MVaraaIObIObwithMVar is a safe wrapper for operating on the contents of an MVar. This operation is exception-safe: it will replace the original contents of the MVar if an exception is raised (see Control.Exception). +withMany withMany :: (a -> (b -> res) -> res) -> [a] ->  ([b] -> res) -> res  abresres[]a[]bresresgReplicates a withXXX combinator over a list of objects, yielding a list of marshalled objects -withCWStringLenwithCWStringLen :: String -> (CWStringLen -> IO a) -> IO a  String CWStringLenIOaIOa[Marshal a Haskell string into a NUL terminated C wide string using temporary storage.
  • the Haskell string may not contain any NUL characters
  • the memory is freed when the subcomputation terminates (either normally or via an exception), so the pointer to the temporary storage must not be used after this.
- withCWString withCWString :: String -> (CWString -> IO a) -> IO a  StringCWStringIOaIOa[Marshal a Haskell string into a NUL terminated C wide string using temporary storage.
  • the Haskell string may not contain any NUL characters
  • the memory is freed when the subcomputation terminates (either normally or via an exception), so the pointer to the temporary storage must not be used after this.
-withCStringLenwithCStringLen :: String -> (CStringLen -> IO a) -> IO a  String CStringLenIOaIOa6Marshal a Haskell string into a C string (ie, character array) in temporary storage, with explicit length information.
  • the memory is freed when the subcomputation terminates (either normally or via an exception), so the pointer to the temporary storage must not be used after this.
- withCString withCString :: String -> (CString -> IO a) -> IO a  StringCStringIOaIOaVMarshal a Haskell string into a NUL terminated C string using temporary storage.
  • the Haskell string may not contain any NUL characters
  • the memory is freed when the subcomputation terminates (either normally or via an exception), so the pointer to the temporary storage must not be used after this.
 withContT withContT :: ((b -> m r) -> a -> m r) ->  ContT r m a ->  ContT r m b  bmramrContTrmaContTrmbwithContwithCont :: ((b -> r) -> a -> r) -> Cont r a -> Cont r bo @ brarContraContrb-withCAStringLenwithCAStringLen :: String -> (CStringLen -> IO a) -> IO a  String CStringLenIOaIOa6Marshal a Haskell string into a C string (ie, character array) in temporary storage, with explicit length information.
  • the memory is freed when the subcomputation terminates (either normally or via an exception), so the pointer to the temporary storage must not be used after this.
- withCAString withCAString :: String -> (CString -> IO a) -> IO a  StringCStringIOaIOaVMarshal a Haskell string into a NUL terminated C string using temporary storage.
  • the Haskell string may not contain any NUL characters
  • the memory is freed when the subcomputation terminates (either normally or via an exception), so the pointer to the temporary storage must not be used after this.
, withArrayLen0  withArrayLen0 :: Storable a => a -> [a] -> (Int -> Ptr a -> IO b) -> IO b  Storableaa[]aIntPtraIObIObJLike withArrayLen, but a terminator indicates where the array ends , withArrayLen withArrayLen :: Storable a => [a] -> (Int -> Ptr a -> IO b) -> IO b  Storablea[]aIntPtraIObIOb[Like withArray, but the action gets the number of values as an additional parameter , withArray0  withArray0 :: Storable a => a -> [a] -> (Ptr a -> IO b) -> IO b(  Storableaa[]aPtraIObIObGLike withArray, but a terminator indicates where the array ends , withArray withArray :: Storable a => [a] -> (Ptr a -> IO b) -> IO b  Storablea[]aPtraIObIObtTemporarily store a list of storable values in memory (like Foreign.Marshal.Utils.with, but for multiple elements). +withwith :: Storable a => a -> (Ptr a -> IO b) -> IO b)  StorableaaPtraIObIObwith val f executes the computation f, passing as argument a pointer to a temporarily allocated block of memory into which val has been marshalled (the combination of alloca and poke). The memory is freed when f terminates (either normally or via an exception), so the pointer passed to f must not be used after this.  WindowBits WindowBits :: Int ->  WindowBits  Int WindowBits WindowBitsdata  WindowBitsO This specifies the size of the compression window. Larger values of this parameter result in better compression at the expense of higher memory usage. The compression window size is the value of the the window bits raised to the power 2. The window bits must be in the range 8..15 which corresponds to compression window sizes of 256b to 32Kb. The default is 15 which is also the maximum size. The total amount of memory used depends on the window bits and the MemoryLevel. See the MemoryLevel for the details.  WindowBits WindowBits :: Int ->  WindowBits  Int WindowBits WindowBitsdata  WindowBits This specifies the size of the compression window. Larger values of this parameter result in better compression at the expense of higher memory usage. The compression window size is the value of the the window bits raised to the power 2. The window bits must be in the range 8..15 which corresponds to compression window sizes of 256b to 32Kb. The default is 15 which is also the maximum size. The total amount of memory used depends on the window bits and the MemoryLevel. See the MemoryLevel for the details.  wildPwildP :: PatQW P PatQ WildPWildP :: Pat  Patwidthwidth :: String -> HtmlAttr  StringHtmlAttrwidthwidth :: String -> HtmlAttrK 6 StringHtmlAttrwidthwidth :: String -> HtmlAttr  StringHtmlAttrwidget widget :: String -> String ->  [HtmlAttr] -> HtmlA  StringString[]HtmlAttrHtmlwidget widget :: String -> String ->  [HtmlAttr] -> Html  StringString[]HtmlAttrHtmlwidget widget :: String -> String ->  [HtmlAttr] -> Htmlq H StringString[]HtmlAttrHtml whiteSpace whiteSpace :: GenTokenParser s u m -> ParsecT s u m ()  GenTokenParsersumParsecTsum()#Parses any white space. White space consists of zero or more occurrences of a space, a line comment or a block (multi line) comment. Block comments may be nested. How comments are started and ended is defined in the LanguageDef that is passed to makeTokenParser. whitewhite :: Stringq h String whereIndent whereIndent :: PPHsMode -> Indent  PPHsModeIndent;indentation of the declarations in a where clause ^Weakdata Weak vD ~A weak pointer object with a key and a value. The value has type v. A weak pointer expresses a relationship between two objects, the key and the value: if the key is considered to be alive by the garbage collector, then the value is also alive. A reference from the value to the key does not keep the key alive. A weak pointer may also have a finalizer of type IO (); if it does, then the finalizer will be run at most once, at a time after the key has become unreachable by the program ("dead"). The storage manager attempts to run the finalizer(s) for an object soon after the object dies, but promptness is not guaranteed. It is not guaranteed that a finalizer will eventually run, and no attempt is made to run outstanding finalizers when the program exits. Therefore finalizers should not be relied on to clean up resources - other methods (eg. exception handlers) should be employed, possibly in addition to finalisers. References from the finalizer to the key are treated in the same way as references from the value to the key: they do not keep the key alive. A finalizer may therefore ressurrect the key, perhaps by storing it in the same data structure. The finalizer, and the relationship between the key and the value, exist regardless of whether the program keeps a reference to the Weak object or not. There may be multiple weak pointers with the same key. In this case, the finalizers for each of these weak pointers will all be run in some arbitrary order, or perhaps concurrently, when the key dies. If the programmer specifies a finalizer that assumes it has the only reference to an object (for example, a file that it wishes to close), then the programmer must ensure that there is only one such finalizer. If there are no other threads to run, the runtime system will check for runnable finalizers before declaring the system to be deadlocked. > waitQSemN waitQSemN :: QSemN -> Int -> IO ()7  QSemNIntIO()4Wait for the specified quantity to become available =waitQSemwaitQSem :: QSem -> IO ()  QSemIO()$Wait for a unit to become available bw2cw2c :: Word8 -> Char< , Word8CharLConversion between Word8 and Char. Should compile to a no-op. vspacevspace :: Int -> HtmlAttr  IntHtmlAttr VRightCurly VRightCurly :: Token* " Token*voidvoid :: IO a -> IO () l IOaIO()0Discard the return value of an IO action vlinkvlink :: String -> HtmlAttr  StringHtmlAttrViVi :: EditorH ? Editorversionversion :: String -> HtmlAttr  StringHtmlAttr versionversion :: IO ()  IO() Version info yvcatvcat :: [Doc] -> DocN ; []DocDocList version of $$.  varTvarT :: Name -> TypeQ  NameTypeQ VarTVarT :: Name -> Type   NameTypeVarSymVarSym :: String -> Tokene S StringToken VarStrictTypeQtype VarStrictTypeQ = Q VarStrictType  varStrictType varStrictType :: Name ->  StrictTypeQ -> VarStrictTypeQS - Name StrictTypeQVarStrictTypeQ varPvarP :: Name -> PatQ  NamePatQ VarPVarP :: Name -> Pat  NamePatVarIdVarId :: String -> TokenI 7 StringTokenvariablevariable :: Html -> Html  HtmlHtmlvariablevariable :: Html -> Html  HtmlHtmlvariablevariable :: Html -> HtmlQ B HtmlHtml VarI VarI :: Name -> Type ->  Maybe Dec -> Fixity -> Info  NameTypeMaybeDecFixityInfo varEvarE :: Name -> ExpQD 5 NameExpQ VarEVarE :: Name -> Exp  NameExpvaluevalue :: String -> HtmlAttr  StringHtmlAttrvaluevalue :: String -> HtmlAttrN 9 StringHtmlAttrvaluevalue :: String -> HtmlAttr  StringHtmlAttrvalignvalign :: String -> HtmlAttr   StringHtmlAttrvalignvalign :: String -> HtmlAttrl W StringHtmlAttrvalignvalign :: String -> HtmlAttr  StringHtmlAttr valD valD :: PatQ -> BodyQ -> [DecQ] -> DecQR 0 PatQBodyQ[]DecQDecQ ValD ValD :: Pat -> Body -> [Dec] -> Dec  PatBody[]DecDecutcToZonedTimeutcToZonedTime :: TimeZone -> UTCTime ->  ZonedTimeb A TimeZoneUTCTime ZonedTimeutcToLocalZonedTimeutcToLocalZonedTime :: UTCTime ->  IO ZonedTime  UTCTimeIO ZonedTimeutcToLocalTimeOfDayutcToLocalTimeOfDay :: TimeZone ->  TimeOfDay -> (Integer, TimeOfDay) q TimeZone TimeOfDay(,)Integer TimeOfDayPConvert a ToD in UTC to a ToD in some timezone, together with a day adjustment. utcToLocalTimeutcToLocalTime :: TimeZone -> UTCTime ->  LocalTime e TimeZoneUTCTime LocalTime4show a UTC time in a given time zone as a LocalTime UTCTimeUTCTime :: Day -> DiffTime -> UTCTime2  DayDiffTimeUTCTimeUTCTimedata UTCTimed This is the simplest representation of UTC. It consists of the day number, and a time offset from midnight. Note that if a day has a leap second added to it, it will have 86401 seconds.  utctDayTime utctDayTime :: UTCTime -> DiffTime t UTCTimeDiffTimeHthe time from midnight, 0 <= t < 86401s (because of leap-seconds) utctDayutctDay :: UTCTime -> Day,  UTCTimeDaythe day utcutc :: TimeZoner g TimeZoneThe UTC time zone ut1ToLocalTimeut1ToLocalTime :: Rational ->  UniversalTime ->  LocalTime"  Rational UniversalTime LocalTime=1st arg is observation meridian in degrees, positive is East usingusing :: a ->  Strategy a -> a  aStrategyaahTakes a value and a strategy, and applies the strategy to the value before returning the value. Used to express data-oriented parallelism. x `using` s is a projection on x, i.e. both:
  • a retraction x `using` s x
  • idempotent (x `using` s) `using` s = x `using` s
4 UserInterrupt UserInterrupt :: AsyncException  AsyncExceptionThis exception is raised by default in the main thread of the program when the user requests to terminate the program via the usual mechanism(s) (e.g. Control-C in the console). ! userErrorType userErrorType ::  IOErrorType   IOErrorType&I/O error that is programmer-defined. ! userError userError :: String -> IOError$  StringIOErrorConstruct an IOError value with a string describing the error. The fail method of the IO instance of the Monad class raises a userError, thus:
instance Monad IO where 
  ...
  fail s = ioError (userError s)
useruser ::  URIAuthority ->  Maybe String! u!  URIAuthorityMaybeStringusemapusemap :: String -> HtmlAttr! ! StringHtmlAttrusemapusemap :: String -> HtmlAttrW" B" StringHtmlAttrusemapusemap :: String -> HtmlAttr" " StringHtmlAttrfuseAsCStringLenuseAsCStringLen ::  ByteString -> (CStringLen -> IO a) -> IO ac# 4#  ByteString CStringLenIOaIOaO(n) construction Use a ByteString with a function requiring a CStringLen. As for useAsCString this function makes a copy of the original ByteString. f useAsCString useAsCString ::  ByteString -> (CString -> IO a) -> IO a$ $  ByteStringCStringIOaIOaO(n) construction Use a ByteString with a function requiring a null-terminated CString. The CString will be freed automatically. This is a memcpy(3). W usageInfo usageInfo :: String ->  [OptDescr a] -> String & % String[]OptDescraStringReturn a string describing the usage of a command, derived from the header (first argument) and the options described by the second argument.  urlEncodeVars urlEncodeVars :: [(String, String)] -> String$' & [](,)StringStringString urlEncode urlEncode :: String -> String' s' StringString urlEncode urlEncode :: String -> String' ' StringStringKConverts a single value to the application/x-www-form-urlencoded encoding.  urlDecode urlDecode :: String -> String( ( StringString urlDecode urlDecode :: String -> String( ( StringStringMConverts a single value from the application/x-www-form-urlencoded encoding. URLtype URL = Stringy) URLtype URL = String) URLtype URL = String) uriToAuthorityStringuriToAuthorityString :: URI -> StringU* E* URIStringuriAuthToStringuriAuthToString :: URIAuth -> String* * URIAuthString uriAuthPort uriAuthPort ::  Maybe URI -> URIAuth -> IntJ+ ++ MaybeURIURIAuthInt URIAuthority  URIAuthority ::  Maybe String ->  Maybe String -> String ->  Maybe Int ->  URIAuthority3, + MaybeStringMaybeStringStringMaybeInt URIAuthority URIAuthoritydata  URIAuthorityo, upperupper :: Stream s m Char => ParsecT s u m Char, , StreamsmCharParsecTsumChar]Parses an upper case letter (a character between 'A' and 'Z'). Returns the parsed character. w updateTix updateTix :: Tix -> IO ()- - TixIO() updateState updateState ::  Monad m => (u -> u) -> ParsecT s u m ()G. . MonadmuuParsecTsum()6An alias for modifyState for backwards compatibility. updatePosStringupdatePosString ::  SourcePos -> String ->  SourcePos/ .  SourcePosString SourcePosThe expression updatePosString pos s updates the source position pos by calling updatePosChar on every character in s, ie. foldl updatePosChar pos string.  updatePosChar updatePosChar ::  SourcePos -> Char ->  SourcePosc0 D0  SourcePosChar SourcePosQUpdate a source position given a character. If the character is a newline ('\n') or carriage return ('\r') the line number is incremented by 1. If the character is a tab ('t') the column number is incremented to the nearest 8'th column, ie. column + 8 - ((column-1) `mod` 8). In all other cases, the column is incremented by 1. updateParserStateupdateParserState ::  Monad m => (State s u -> State s u) -> ParsecT s u m (State s u)2 C2 MonadmStatesuStatesuParsecTsumStatesuNupdateParserState f applies function f to the parser state. gunzipunzip :: [(Word8, Word8)] -> (ByteString, ByteString)3 F3 [](,)Word8Word8(,) ByteString ByteStringO(n) unzip transforms a list of pairs of bytes into a pair of ByteStrings. Note that this performs two pack operations. funzipunzip :: [(Char, Char)] -> (ByteString, ByteString)4 q4 [](,)CharChar(,) ByteString ByteStringunzip transforms a list of pairs of Chars into a pair of ByteStrings. Note that this performs two pack operations. funwordsunwords ::  [ByteString] ->  ByteString5 5 [] ByteString ByteStringSThe unwords function is analogous to the unlines function, on words. dunsafeUseAsCStringLenunsafeUseAsCStringLen ::  ByteString -> (CStringLen -> IO a) -> IO a6 6  ByteString CStringLenIOaIOaRO(1) construction Use a ByteString with a function requiring a CStringLen. This function does zero copying, and merely unwraps a ByteString to appear as a CStringLen. It is unsafe:
  • After calling this function the CStringLen shares the underlying byte buffer with the original ByteString. Thus modifying the CStringLen, either in C, or using poke, will cause the contents of the ByteString to change, breaking referential transparency. Other ByteStrings created by sharing (such as those produced via take or drop) will also reflect these changes. Modifying the CStringLen will break referential transparency. To avoid this, use useAsCStringLen, which makes a copy of the original ByteString.
dunsafeUseAsCStringunsafeUseAsCString ::  ByteString -> (CString -> IO a) -> IO a: :  ByteStringCStringIOaIOaO(1) construction Use a ByteString with a function requiring a CString. This function does zero copying, and merely unwraps a ByteString to appear as a CString. It is unsafe in two ways:
  • After calling this function the CString shares the underlying byte buffer with the original ByteString. Thus modifying the CString, either in C, or using poke, will cause the contents of the ByteString to change, breaking referential transparency. Other ByteStrings created by sharing (such as those produced via take or drop) will also reflect these changes. Modifying the CString will break referential transparency. To avoid this, use useAsCString, which makes a copy of the original ByteString.
  • CStrings are often passed to functions that require them to be null-terminated. If the original ByteString wasn't null terminated, neither will the CString be. It is the programmers responsibility to guarantee that the ByteString is indeed null terminated. If in doubt, use useAsCString.
 unsafeThaw unsafeThaw :: $(Ix i, IArray a e, MArray b e m) => a i e ->  m (b i e)@ ? IxiIArrayaeMArraybemaiembieConverts an immutable array into a mutable array. The implementation may either simply cast the array from one type to the other without copying the array, or it may take a full copy of the array. Note that because the array is possibly not copied, any subsequent modifications made to the mutable version of the array may be shared with the immutable version. It is only safe to use, therefore, if the immutable array is never referenced again in this thread, and there is no possibility that it can be also referenced in another thread. If you use an unsafeThawwriteunsafeFreeze sequence in a multi-threaded setting, then you must ensure that this sequence is atomic with respect to other threads, or a garbage collector crash may result (because the write may be writing to a frozen array). The non-copying implementation is supported between certain pairs of array types only; one constraint is that the array types must have identical representations. In GHC, The following pairs of array types have a non-copying O(1) implementation of unsafeThaw. Because the optimised versions are enabled by specialisations, you will need to compile with optimisation (-O) to get them.
  • Data.Array.Unboxed.UArray -> Data.Array.IO.IOUArray
  • Data.Array.Unboxed.UArray -> Data.Array.ST.STUArray
  • Data.Array.Array -> Data.Array.IO.IOArray
  • Data.Array.Array -> Data.Array.ST.STArray
d unsafeTake unsafeTake :: Int ->  ByteString ->  ByteString9F F Int ByteString ByteStringA variety of take which omits the checks on n so there is an obligation on the programmer to provide a proof that 0 <= n <= length xs. d unsafeTail unsafeTail ::  ByteString ->  ByteStringZG ?G  ByteString ByteStringA variety of tail for non-empty ByteStrings. unsafeTail omits the check for the empty case. As with unsafeHead, the programmer must provide a separate proof that the ByteString is non-empty. G unsafeSTToIO unsafeSTToIO :: ST s a -> IO aH H STsaIOaunsafePerformIOunsafePerformIO :: IO a -> aH H IOaaThis is the "back door" into the IO monad, allowing IO computation to be performed at any time. For this to be safe, the IO computation should be free of side effects and independent of its environment. If the I/O computation wrapped in unsafePerformIO performs side effects, then the relative order in which those side effects take place (relative to the main I/O trunk, or other calls to unsafePerformIO) is indeterminate. You have to be careful when writing and compiling modules that use unsafePerformIO:
  • Use {-# NOINLINE foo #-} as a pragma on any function foo that calls unsafePerformIO. If the call is inlined, the I/O may be performed more than once.
  • Use the compiler flag -fno-cse to prevent common sub-expression elimination being performed on the module, which might combine two side effects that were meant to be separate. A good example is using multiple global variables (like test in the example below).
  • Make sure that the either you switch off let-floating, or that the call to unsafePerformIO cannot float outside a lambda. For example, if you say: f x = unsafePerformIO (newIORef []) you may get only one reference cell shared between all calls to f. Better would be f x = unsafePerformIO (newIORef [x]) because now it can't float outside the lambda.
It is less well known that unsafePerformIO is not type safe. For example:
test :: IORef [a]
test = unsafePerformIO $ newIORef []

main = do
        writeIORef test [42]
        bang <- readIORef test
        print (bang :: [Char])
This program will core dump. This problem with polymorphic references is well known in the ML community, and does not arise with normal monadic use of references. There is no easy way to make it impossible once you use unsafePerformIO. Indeed, it is possible to write coerce :: a -> b with the help of unsafePerformIO. So be careful! dunsafePackMallocCStringunsafePackMallocCString :: CString ->  IO ByteStringQ pQ CStringIO ByteStringO(n) Build a ByteString from a malloced CString. This value will have a free(3) finalizer associated to it. This funtion is unsafe. If the original CString is later modified, this change will be reflected in the resulting ByteString, breaking referential transparency. This function is also unsafe if you call its finalizer twice, which will result in a double free error, or if you pass it a CString not allocated with malloc. dunsafePackCStringLenunsafePackCStringLen ::  CStringLen ->  IO ByteStringT S  CStringLenIO ByteStringO(1) Build a ByteString from a CStringLen. This value will have no finalizer associated with it, and will not be garbage collected by Haskell. This operation has O(1) complexity as we already know the final size, so no strlen(3) is required. This funtion is unsafe. If the original CStringLen is later modified, this change will be reflected in the resulting ByteString, breaking referential transparency. dunsafePackCStringFinalizer unsafePackCStringFinalizer ::  Ptr Word8 -> Int -> IO () ->  IO ByteStringV V PtrWord8IntIO()IO ByteStringO(1) Construct a ByteString given a Ptr Word8 to a buffer, a length, and an IO action representing a finalizer. This function is not available on Hugs. This function is unsafe, it is possible to break referential transparency by modifying the underlying buffer pointed to by the first argument. Any changes to the original buffer will be reflected in the resulting ByteString. dunsafePackCStringunsafePackCString :: CString ->  IO ByteStringX X CStringIO ByteStringO(n) Build a ByteString from a CString. This value will have no finalizer associated to it, and will not be garbage collected by Haskell. The ByteString length is calculated using strlen(3), and thus the complexity is a O(n). This function is unsafe. If the CString is later modified, this change will be reflected in the resulting ByteString, breaking referential transparency. dunsafePackAddressLenunsafePackAddressLen :: Int -> Addr# ->  IO ByteString5[ [ IntAddr#IO ByteStringO(1) unsafePackAddressLen provides constant-time construction of ByteStrings which is ideal for string literals. It packs a null-terminated sequence of bytes into a ByteString, given a raw 'Addr\#' to the string, and the length of the string. This function is unsafe in two ways:
  • the length argument is assumed to be correct. If the length argument is incorrect, it is possible to overstep the end of the byte array.
  • if the underying Addr# is later modified, this change will be reflected in resulting ByteString, breaking referential transparency.
If in doubt, don't use these functions. dunsafePackAddressunsafePackAddress :: Addr# ->  IO ByteStringH^ ,^ Addr#IO ByteStringO(n) Pack a null-terminated sequence of bytes, pointed to by an Addr# (an arbitrary machine address assumed to point outside the garbage-collected heap) into a ByteString. A much faster way to create an Addr# is with an unboxed string literal, than to pack a boxed string. A unboxed string literal is compiled to a static char [] by GHC. Establishing the length of the string requires a call to strlen(3), so the Addr# must point to a null-terminated buffer (as is the case with string# literals in GHC). Use unsafePackAddressLen if you know the length of the string statically. An example:
literalFS = unsafePackAddress "literal"#
This function is unsafe. If you modify the buffer pointed to by the original Addr# this modification will be reflected in the resulting ByteString, breaking referential transparency. Note this also won't work if you Add# has embedded '\0' characters in the string (strlen will fail). G unsafeIOToST unsafeIOToST :: IO a -> ST s ab b IOaSTsaGunsafeInterleaveSTunsafeInterleaveST :: ST s a -> ST s ac b STsaSTsaunsafeInterleaveIOunsafeInterleaveIO :: IO a -> IO ac qc IOaIOaunsafeInterleaveIO allows IO computation to be deferred lazily. When passed a value of type IO a, the IO will only be performed when the value of the a is demanded. This is used to implement lazy file reading, see System.IO.hGetContents. d unsafeIndex unsafeIndex ::  ByteString -> Int -> Word8e e  ByteStringIntWord8Unsafe ByteString index (subscript) operator, starting from 0, returning a Word8 This omits the bounds check, which means there is an accompanying obligation on the programmer to ensure the bounds are checked in some other way. d unsafeHead unsafeHead ::  ByteString -> Word8wf af  ByteStringWord8A variety of head for non-empty ByteStrings. unsafeHead omits the check for the empty case, so there is an obligation on the programmer to provide a proof that the ByteString is non-empty.  unsafeFreeze unsafeFreeze :: $(Ix i, MArray a e m, IArray b e) => a i e ->  m (b i e)h g IxiMArrayaemIArraybeaiembiePConverts an mutable array into an immutable array. The implementation may either simply cast the array from one type to the other without copying the array, or it may take a full copy of the array. Note that because the array is possibly not copied, any subsequent modifications made to the mutable version of the array may be shared with the immutable version. It is safe to use, therefore, if the mutable version is never modified after the freeze operation. The non-copying implementation is supported between certain pairs of array types only; one constraint is that the array types must have identical representations. In GHC, The following pairs of array types have a non-copying O(1) implementation of unsafeFreeze. Because the optimised versions are enabled by specialisations, you will need to compile with optimisation (-O) to get them.
  • Data.Array.IO.IOUArray -> Data.Array.Unboxed.UArray
  • Data.Array.ST.STUArray -> Data.Array.Unboxed.UArray
  • Data.Array.IO.IOArray -> Data.Array.Array
  • Data.Array.ST.STArray -> Data.Array.Array
unsafeForeignPtrToStorableArrayunsafeForeignPtrToStorableArray :: Ix i =>  ForeignPtr e -> (i, i) -> IO (StorableArray i e)Im m Ixi ForeignPtre(,)iiIO StorableArrayieConstruct a StorableArray from an arbitrary ForeignPtr. It is the caller's responsibility to ensure that the ForeignPtr points to an area of memory sufficient for the specified bounds. dunsafeFinalizeunsafeFinalize ::  ByteString -> IO ()n sn  ByteStringIO()Explicitly run the finaliser associated with a ByteString. References to this value after finalisation may generate invalid memory references. This function is unsafe, as there may be other ByteStrings referring to the same underlying pages. If you use this, you need to have a proof of some kind that all ByteStrings ever generated from the underlying byte array are no longer live. d unsafeDrop unsafeDrop :: Int ->  ByteString ->  ByteStringp p Int ByteString ByteStringA variety of drop which omits the checks on n so there is an obligation on the programmer to provide a proof that 0 <= n <= length xs. b unsafeCreate unsafeCreate :: Int -> (Ptr Word8 -> IO ()) ->  ByteStringq q IntPtrWord8IO() ByteStringA way of creating ByteStrings outside the IO monad. The Int argument gives the final size of the ByteString. Unlike createAndTrim the ByteString is not reallocated if the final size is less than the estimated size.  unsafeunsafe :: Safety"s s Safety UnsafeUnsafe :: Safetybs Ys SafetyUnQualUnQual :: HsName -> HsQNames s HsNameHsQNameunqualified name gunpackunpack ::  ByteString -> [Word8];t t  ByteString[]Word89O(n) Converts a ByteString to a '[Word8]'. funpackunpack ::  ByteString -> [Char]t t  ByteString[]Char=O(n) Converts a ByteString to a String.  unordList unordList ::  HTML a => [a] -> Htmlu mu HTMLa[]aHtml unordList unordList ::  HTML a => [a] -> Htmlu u HTMLa[]aHtml unordList unordList ::  HTML a => [a] -> Htmllv Ov HTMLa[]aHtmlfunlinesunlines ::  [ByteString] ->  ByteStringv v [] ByteString ByteStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each.  unknownError unknownError ::  State s u ->  ParseErrorw w Statesu ParseError UniversalTimenewtype  UniversalTimex The Modified Julian Date is the day with the fraction of the day, measured from UT midnight. It's used to represent UT1, which is time as measured by the earth's rotation, adjusted for various wobbles. unit_tycon_nameunit_tycon_name :: HsQName2y (y HsQName unit_tycon unit_tycon :: HsTypezy qy HsType unit_con_name unit_con_name :: HsQNamey y HsQNameunit_conunit_con :: HsExp z z HsExp~ unGTunGT ::  GenericT' -> a -> apz \z  GenericT'aa~ unGQunGQ ::  GenericQ' r ->  GenericQ rz z  GenericQ'rGenericQr~ unGMunGM ::  GenericM' m -> a -> m aR{ 4{  GenericM'mama< unGetChan unGetChan :: Chan a -> a -> IO (){ { ChanaaIO()JPut a data item back onto a channel, where it will be the next item read. ~ unGeneric' unGeneric' ::  Generic' c ->  Generic c| j| Generic'cGenericcfunfoldrN unfoldrN :: Int -> (a -> Maybe (Char, a)) -> a -> (ByteString, Maybe a)Z} } IntaMaybe(,)Charaa(,) ByteStringMaybeaO(n) Like unfoldr, unfoldrN builds a ByteString from a seed value. However, the length of the result is limited by the first argument to unfoldrN. This function is more efficient than unfoldr when the maximum length of the result is known. The following equation relates unfoldrN and unfoldr:
unfoldrN n f s == take n (unfoldr f s)
gunfoldrunfoldr :: (a -> Maybe (Word8, a)) -> a ->  ByteString S aMaybe(,)Word8aa ByteStringO(n) The unfoldr function is analogous to the List 'unfoldr'. unfoldr builds a ByteString from a seed value. The function takes the element and returns Nothing if it is done producing the ByteString or returns Just (a,b), in which case, a is a prepending to the ByteString and b is used as the next element in a recursive call. funfoldrunfoldr :: (a -> Maybe (Char, a)) -> a ->  ByteString v aMaybe(,)Charaa ByteString!O(n), where n is the length of the result. The unfoldr function is analogous to the List 'unfoldr'. unfoldr builds a ByteString from a seed value. The function takes the element and returns Nothing if it is done producing the ByteString or returns Just (a,b), in which case, a is the next character in the string, and b is the seed value for further production. Examples:
unfoldr (\x -> if x <= '9' then Just (x, succ x) else Nothing) '0' == "0123456789"
 unexpected unexpected :: Stream s m t => String -> ParsecT s u m af 1 StreamsmtStringParsecTsumaThe parser unexpected msg always fails with an unexpected error message msg without consuming any input. The parsers fail, (<?>) and unexpected are the three parsers used to generate error messages. Of these, only (<?>) is commonly used. For an example of the use of unexpected, see the definition of Text.Parsec.Combinator.notFollowedBy. UnExpectUnExpect :: String -> Messagea M StringMessage Underscore Underscore :: Token  Token underline underline :: Html -> Html  HtmlHtml4 Underflow Underflow :: ArithExceptionW F ArithException4UndefinedElementUndefinedElement :: String -> ArrayExceptionׇ  StringArrayExceptionVAn attempt was made to evaluate an element of an array that had not been initialized. unconsuncons :: Stream s m t => s -> m (Maybe (t, s))  StreamsmtsmMaybe(,)tsgunconsuncons ::  ByteString -> Maybe (Word8, ByteString)Q   ByteStringMaybe(,)Word8 ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty. funconsuncons ::  ByteString -> Maybe (Char, ByteString):   ByteStringMaybe(,)Char ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty.  unCGITunCGIT :: CGIT m a -> (ReaderT CGIRequest (WriterT Headers m) aB  CGITmaReaderT CGIRequestWriterTHeadersma4unblockunblock :: IO a -> IO a  IOaIOaTo re-enable asynchronous exceptions inside the scope of block, unblock can be used. It scopes in exactly the same way, so on exit from unblock asynchronous exception delivery will be disabled again. ulistulist :: Html -> Html͌  HtmlHtmlulistulist :: Html -> Html  HtmlHtmlulistulist :: Html -> Htmlq b HtmlHtmluglyDeathTransferuglyDeathTransfer :: String -> IO (Result ([Header], a))  StringIOResult(,)[]HeaderamMaybe in the future we will have a sensible thing to do here, at that time we might want to change the name. UArraydata UArray i e BArrays with unboxed elements. Instances of IArray are provided for UArray with certain element types (Int, Float, Char, etc.; see the UArray class for a full list). A UArray will generally be more efficient (in terms of both time and space) than the equivalent Data.Array.Array with the same element type. However, UArray is strict in its elements - so don't use UArray if you require the non-strictness that Data.Array.Array provides. Because the IArray interface provides operations overloaded on the type of the array, it should be possible to just change the array type being used by a program from say Array to UArray to get the benefits of unboxed arrays (don't forget to import Data.Array.Unboxed instead of Data.Array).  TyVarITyVarI :: Name -> Type -> Infoc N NameTypeInfo tySynD tySynD :: Name -> [Name] -> TypeQ -> DecQ ˒ Name[]NameTypeQDecQ TySynD TySynD :: Name -> [Name] -> Type -> Decs S Name[]NameTypeDec TypeQtype TypeQ = Q Type  Typedata Typeؓ  TyConITyConI :: Dec -> Info*  DecInfo tupPtupP :: [PatQ] -> PatQ m []PatQPatQ TupPTupP :: [Pat] -> Pat֔ Ô []PatPat tupleTypeName tupleTypeName :: Int -> Name6 ( IntName tupleTtupleT :: Int -> TypeQ { IntTypeQ TupleTTupleT :: Int -> Typeܕ Ε IntType tupleDataName tupleDataName :: Int -> Name< . IntNametuple_tycon_nametuple_tycon_name :: Int -> HsQName  IntHsQName tuple_tycon tuple_tycon :: Int -> HsType  IntHsTypetuple_con_nametuple_con_name :: Int -> HsQNamep _ IntHsQName tuple_con tuple_con :: Int -> HsExpʗ  IntHsExp tupEtupE :: [ExpQ] -> ExpQ"  []ExpQExpQ TupETupE :: [Exp] -> Expv c []ExpExptttt :: Html -> Html˜  HtmlHtmltttt :: Html -> Html  HtmlHtmltttt :: Html -> HtmlZ K HtmlHtml; tryTakeMVar tryTakeMVar :: MVar a ->  IO (Maybe a)ә  MVaraIOMaybeaA non-blocking version of takeMVar. The tryTakeMVar function returns immediately, with Nothing if the MVar was empty, or Just a if the MVar was full with contents a. After tryTakeMVar, the MVar is left empty. ; tryPutMVar tryPutMVar :: MVar a -> a -> IO Boolj M MVaraaIOBoolA non-blocking version of putMVar. The tryPutMVar function attempts to put the value a into the MVar, returning True if it was successful, or False otherwise. 4tryJusttryJust :: Exception e => (e -> Maybe b) -> IO a -> IO (Either b a)   ExceptioneeMaybebIOaIOEitherbaA variant of try that takes an exception predicate to select which exceptions are caught (c.f. catchJust). If the exception does not match the predicate, it is re-thrown.  tryCGItryCGI :: CGI a -> CGI (Either Exception a)2  CGIaCGIEither ExceptionaCatches any exception thrown by an CGI action, and returns either the exception, or if no exception was raised, the result of the action. trytry :: Stream s m t => ParsecT s u m a -> ParsecT s u m ae ! StreamsmtParsecTsumaParsecTsumaThe parser try p behaves like parser p, except that it pretends that it hasn't consumed any input when an error occurs. This combinator is used whenever arbitrary look ahead is needed. Since it pretends that it hasn't consumed any input when p fails, the (<|>) combinator will try its second alternative even when the first parser failed while consuming input. The try combinator can for example be used to distinguish identifiers and reserved words. Both reserved words and identifiers are a sequence of letters. Whenever we expect a certain reserved word where we can also expect an identifier we have to use the try combinator. Suppose we write:
expr        = letExpr <|> identifier <?> "expression"

letExpr     = do{ string "let"; ... }
identifier  = many1 letter
If the user writes "lexical", the parser fails with: unexpected 'x', expecting 't' in "let". Indeed, since the (<|>) combinator only tries alternatives when the first alternative hasn't consumed input, the identifier parser is never tried (because the prefix "le" of the string "let" parser is already consumed). The right behaviour can be obtained by adding the try combinator:
expr        = letExpr <|> identifier <?> "expression"

letExpr     = do{ try (string "let"); ... }
identifier  = many1 letter
!trytry :: IO a -> IO (Either IOError a)y Q IOaIOEitherIOErroraThe construct try 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 Control.Exception.try from Control.Exception. 4trytry :: Exception e => IO a -> IO (Either e a) Ԧ  ExceptioneIOaIOEithereaSimilar to catch, but returns an Either result which is (Right a) if no exception was raised, or (Left e) if an exception was raised and its value is e.
try a = catch (Right `liftM` a) (return . Left)
Note: as with catch, it is only polite to use this variant if you intend to re-throw the exception after performing whatever cleanup is needed. Otherwise, tryJust is generally considered to be better. Also note that System.IO.Error also exports a function called System.IO.Error.try with a similar type to Control.Exception.try, except that it catches only the IO and user families of exceptions (as required by the Haskell 98 IO module). triedtried :: Counts -> Int? / CountsInttreeHtmltreeHtml :: [String] -> HtmlTree -> Html  []StringHtmlTreeHtml treeColors treeColors :: [String]  []Stringg transpose transpose ::  [ByteString] ->  [ByteString] l [] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument. f transpose transpose ::  [ByteString] ->  [ByteString]v O [] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument. TRACETRACE ::  RequestMethod#   RequestMethodtrtr :: Html -> Htmlo ` HtmlHtmltrtr :: Html -> Html  HtmlHtmltrtr :: Html -> Html  HtmlHtmltouchStorableArraytouchStorableArray :: StorableArray i e -> IO () r  StorableArrayieIO()If you want to use it afterwards, ensure that you touchStorableArray after the last use of the pointer, so the array is not freed too early. v TopLevelBox TopLevelBox :: [String] -> BoxLabel  []StringBoxLabel toModifiedJulianDaytoModifiedJulianDay :: Day -> Integer  DayIntegertokens tokens :: (Stream s m t, Eq t) => ([t] -> String) -> (SourcePos -> [t] -> SourcePos) -> [t] -> ParsecT s u m [t]6  StreamsmtEqt[]tString SourcePos[]t SourcePos[]tParsecTsum[]t tokenPrimEx  tokenPrimEx :: Stream s m t =>  (t -> String) -> "(SourcePos -> t -> s -> SourcePos) -> %Maybe (SourcePos -> t -> s -> u -> u) -> (t -> Maybe a) -> ParsecT s u m a " StreamsmttString SourcePosts SourcePosMaybe SourcePostsuutMaybeaParsecTsuma tokenPrim  tokenPrim :: Stream s m t =>  (t -> String) -> "(SourcePos -> t -> s -> SourcePos) -> (t -> Maybe a) -> ParsecT s u m aͳ d StreamsmttString SourcePosts SourcePostMaybeaParsecTsumaThe parser token showTok nextPos testTok accepts a token t with result x when the function testTok t returns Just x. The token can be shown using showTok t. The position of the next token should be returned when nextPos is called with the current source position pos, the current token t and the rest of the tokens toks, nextPos pos t toks. This is the most primitive combinator for accepting tokens. For example, the Text.Parsec.Char.char parser could be implemented as:
char c
  = tokenPrim showChar nextPos testChar
  where
    showChar x        = "'" ++ x ++ "'"
    testChar x        = if x == c then Just x else Nothing
    nextPos pos x xs  = updatePosChar pos x
 TokenParser> TokenParser :: ParsecT s u m String -> (String -> ParsecT s u m ()) -> ParsecT s u m String -> (String -> ParsecT s u m ()) -> ParsecT s u m Char -> ParsecT s u m String -> ParsecT s u m Integer -> ParsecT s u m Integer -> ParsecT s u m Double ->  %ParsecT s u m (Either Integer Double) ->  ParsecT s u m Integer ->  ParsecT s u m Integer ->  ParsecT s u m Integer ->  (String -> ParsecT s u m String) -> $(ParsecT s u m a -> ParsecT s u m a) -> ParsecT s u m () -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> $(ParsecT s u m a -> ParsecT s u m a) -> ParsecT s u m String -> ParsecT s u m String -> ParsecT s u m String -> ParsecT s u m String -> &(ParsecT s u m a -> ParsecT s u m [a]) -> &(ParsecT s u m a -> ParsecT s u m [a]) -> &(ParsecT s u m a -> ParsecT s u m [a]) -> &(ParsecT s u m a -> ParsecT s u m [a]) -> GenTokenParser s u m  ParsecTsumStringStringParsecTsum()ParsecTsumStringStringParsecTsum()ParsecTsumCharParsecTsumStringParsecTsumIntegerParsecTsumIntegerParsecTsumDoubleParsecTsumEitherIntegerDoubleParsecTsumIntegerParsecTsumIntegerParsecTsumIntegerStringParsecTsumStringParsecTsumaParsecTsumaParsecTsum()ParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumaParsecTsumStringParsecTsumStringParsecTsumStringParsecTsumStringParsecTsumaParsecTsum[]aParsecTsumaParsecTsum[]aParsecTsumaParsecTsum[]aParsecTsumaParsecTsum[]aGenTokenParsersum TokenParsertype  TokenParser st$ = GenTokenParser String st Identityc token token :: Stream s Identity t =>  (t -> String) -> (t -> SourcePos) -> (t -> Maybe a) ->  Parsec s u ab  StreamsIdentityttStringt SourcePostMaybeaParsecsuaThe parser token showTok posFromTok testTok accepts a token t with result x when the function testTok t returns Just x. The source position of the t should be returned by posFromTok t and the token can be shown using showTok t. This combinator is expressed in terms of tokenPrim. It is used to accept user defined token streams. For example, suppose that we have a stream of basic tokens tupled with source positions. We can than define a parser that accepts single tokens as:
mytoken x
  = token showTok posFromTok testTok
  where
    showTok (pos,t)     = show t
    posFromTok (pos,t)  = pos
    testTok (pos,t)     = if x == t then Just t else Nothing
Tokendata Token toHtmlFromListtoHtmlFromList ::  HTML a => [a] -> Html  HTMLa[]aHtmltoHtmlFromListtoHtmlFromList ::  HTML a => [a] -> Html{ ^ HTMLa[]aHtmltoHtmlFromListtoHtmlFromList ::  HTML a => [a] -> Html  HTMLa[]aHtmltoHtmltoHtml ::  HTML a => a -> HtmlY B HTMLaaHtmltoHtmltoHtml ::  HTML a => a -> Html  HTMLaaHtmltoHtmltoHtml ::  HTML a => a -> Html  HTMLaaHtmlttoHpcPostoHpcPos :: (Int, Int, Int, Int) -> HpcPos z (,,,)IntIntIntIntHpcPosAtoHpcPos implodes to HpcPos, from line:column-line:colunm ttoHashtoHash ::  HpcHash a => a -> HashL 2 HpcHashaaHash  toGregorian toGregorian :: Day -> (Integer, Int, Int)  Day(,,)IntegerIntIntxconvert to proleptic Gregorian calendar. First element of result is year, second month number (1-12), third day (1-31). b toForeignPtr toForeignPtr ::  ByteString -> (ForeignPtr Word8, Int, Int)   ByteString(,,) ForeignPtrWord8IntInt7O(1) Deconstruct a ForeignPtr from a ByteString 4 toException toException :: Exception e => e ->  SomeException   Exceptionee SomeExceptiontodSectodSec ::  TimeOfDay -> Pico   TimeOfDayPicoNote that 0 <= todSec < 61, accomodating leap seconds. Any local minute may have a leap second, since leap seconds happen in all zones simultaneously todMintodMin ::  TimeOfDay -> Int   TimeOfDayInt range 0 - 59 todHourtodHour ::  TimeOfDay -> Intj W  TimeOfDayInt range 0 - 23 gtoChunkstoChunks ::  ByteString ->  [ByteString]   ByteString[] ByteStringUO(n) Convert a lazy ByteString into a list of strict ByteString +toBooltoBool ::  Num a => a -> Bool  NumaaBool?Convert a Boolean in numeric representation to a Haskell value u tixModuleTixs tixModuleTixs ::  TixModule ->  [Integer]^ A  TixModule[]Integeru tixModuleName tixModuleName ::  TixModule -> String   TixModuleStringu tixModuleHash tixModuleHash ::  TixModule -> Hash: &  TixModuleHashu TixModule  TixModule :: String -> Hash -> Int ->  [Integer] ->  TixModule  StringHashInt[]Integer TixModuleu TixModuledata  TixModule& uTixTix ::  [TixModule] -> Tix k [] TixModuleTixuTixdata Tix titletitle :: String -> HtmlAttr  StringHtmlAttrtitletitle :: String -> HtmlAttrj U StringHtmlAttrtitletitle :: String -> HtmlAttr  StringHtmlAttrtimeZoneSummerOnlytimeZoneSummerOnly :: TimeZone -> Bool< ) TimeZoneBool2Is this time zone just persisting for the summer? timeZoneOffsetStringtimeZoneOffsetString :: TimeZone -> String  TimeZoneStringbText representing the offset of this timezone, such as "-0800" or "+0400" (like %z in formatTime)  timeZoneName timeZoneName :: TimeZone -> String  TimeZoneStringAThe name of the zone, typically a three- or four-letter acronym. timeZoneMinutestimeZoneMinutes :: TimeZone -> Inte S TimeZoneIntdThe number of minutes offset from UTC. Positive means local time will be later in the day than UTC. TimeZone TimeZone :: Int -> Bool -> String -> TimeZoneW 7 IntBoolStringTimeZoneTimeZonedata TimeZone lA TimeZone is a whole number of minutes offset from UTC, together with a name and a "just for summer" flag. timeToTimeOfDaytimeToTimeOfDay :: DiffTime ->  TimeOfDayo W DiffTime TimeOfDaycGet a TimeOfDay given a time since midnight. Time more than 24h will be converted to leap-seconds. timeOfDayToTimetimeOfDayToTime ::  TimeOfDay -> DiffTimeJ 2  TimeOfDayDiffTime<Find out how much time since midnight a given TimeOfDay is. timeOfDayToDayFractiontimeOfDayToDayFraction ::  TimeOfDay -> Rational   TimeOfDayRational<Get the fraction of a day since midnight given a TimeOfDay.  TimeOfDay  TimeOfDay :: Int -> Int -> Pico ->  TimeOfDay  IntIntPico TimeOfDay TimeOfDaydata  TimeOfDay wTime of day as represented in hour, minute and second (with picoseconds), typically used to express local time of day.  tildePtildeP :: PatQ -> PatQ  PatQPatQ TildePTildeP :: Pat -> Pat%  PatPatTildeTilde :: Tokena Y Token4throwTothrowTo :: Exception e => ThreadId -> e -> IO ()   ExceptioneThreadIdeIO()7throwTo raises an arbitrary exception in the target thread (GHC only). throwTo does not return until the exception has been raised in the target thread. The calling thread can thus be certain that the target thread has received the exception. This is a useful property to know when dealing with race conditions: eg. if there are two threads that can kill each other, it is guaranteed that only one of the threads will get to kill the other. If the target thread is currently making a foreign call, then the exception will not be raised (and hence throwTo will not return) until the call has completed. This is the case regardless of whether the call is inside a block or not. Important note: the behaviour of throwTo differs from that described in the paper "Asynchronous exceptions in Haskell" (http://research.microsoft.com/~simonpj/Papers/asynch-exns.htm). In the paper, throwTo is non-blocking; but the library implementation adopts a more synchronous design in which throwTo does not return until the exception is received by the target thread. The trade-off is discussed in Section 8 of the paper. Like any blocking operation, throwTo is therefore interruptible (see Section 4.3 of the paper). There is currently no guarantee that the exception delivered by throwTo will be delivered at the first possible opportunity. In particular, if a thread may unblock and then re-block exceptions (using unblock and block) without receiving a pending throwTo. This is arguably undesirable behaviour. %throwSocketErrorIfMinus1RetryMayBlock %throwSocketErrorIfMinus1RetryMayBlock ::  Num a => String -> IO b -> IO a -> IO a  NumaStringIObIOaIOa Throw an IOError corresponding to the current socket error if the IO action returns a result of -1, but retries in case of an interrupted operation. Checks for operations that would block and executes an alternative action before retrying in that case. throwSocketErrorIfMinus1RetrythrowSocketErrorIfMinus1Retry ::  Num a => String -> IO a -> IO a  NumaStringIOaIOaThrow an IOError corresponding to the current socket error if the IO action returns a result of -1, but retries in case of an interrupted operation. throwSocketErrorIfMinus1_throwSocketErrorIfMinus1_ ::  Num a => String -> IO a -> IO ()  NumaStringIOaIO()Throw an IOError corresponding to the current socket error if the IO action returns a result of -1. Discards the result of the IO action after error handling. throwSocketErrorthrowSocketError :: String -> IO a< ( StringIOaCThrow an IOError corresponding to the current socket error. 4throwIOthrowIO :: Exception e => e -> IO a   ExceptioneeIOaA variant of throw that can be used within the IO monad. Although throwIO has a type that is an instance of the type of throw, the two functions are subtly different:
throw e   `seq` x  ===> throw e
throwIO e `seq` x  ===> x
The first example will cause the exception e to be raised, whereas the second one won't. In fact, throwIO will only cause an exception to be raised when it is used within the IO monad. The throwIO variant should be used in preference to throw to raise an exception within the IO monad because it guarantees ordering with respect to other IO operations, whereas throw does not. * throwIfNull throwIfNull :: String ->  IO (Ptr a) ->  IO (Ptr a)O $ StringIOPtraIOPtraGuards against null pointers * throwIfNeg_ throwIfNeg_ :: (Ord a, Num a) =>  (a -> String) -> IO a -> IO ()  OrdaNumaaStringIOaIO()2Like throwIfNeg, but discarding the result * throwIfNeg throwIfNeg :: (Ord a, Num a) =>  (a -> String) -> IO a -> IO a  OrdaNumaaStringIOaIOa&Guards against negative result values *throwIf_ throwIf_ ::  (a -> Bool) ->  (a -> String) -> IO a -> IO ()  aBoolaStringIOaIO()/Like throwIf, but discarding the result *throwIf throwIf ::  (a -> Bool) ->  (a -> String) -> IO a -> IO a r aBoolaStringIOaIOaExecute an IO action, throwing a userError if the predicate yields True when applied to the result returned by the IO action. If no exception is raised, return the result of the computation. .throwErrnoPathIfNull throwErrnoPathIfNull :: String -> FilePath ->  IO (Ptr a) ->  IO (Ptr a)B  StringFilePathIOPtraIOPtraTas throwErrnoIfNull, but exceptions include the given path when appropriate. .throwErrnoPathIfMinus1_ throwErrnoPathIfMinus1_ ::  Num a => String -> FilePath -> IO a -> IO ()_ - NumaStringFilePathIOaIO()Was throwErrnoIfMinus1_, but exceptions include the given path when appropriate. .throwErrnoPathIfMinus1 throwErrnoPathIfMinus1 ::  Num a => String -> FilePath -> IO a -> IO a{ J NumaStringFilePathIOaIOaVas throwErrnoIfMinus1, but exceptions include the given path when appropriate. .throwErrnoPathIf_ throwErrnoPathIf_ ::  (a -> Bool) -> String -> FilePath -> IO a -> IO () j aBoolStringFilePathIOaIO()Qas throwErrnoIf_, but exceptions include the given path when appropriate. .throwErrnoPathIf throwErrnoPathIf ::  (a -> Bool) -> String -> FilePath -> IO a -> IO a  aBoolStringFilePathIOaIOaPas throwErrnoIf, but exceptions include the given path when appropriate. .throwErrnoPaththrowErrnoPath :: String -> FilePath -> IO a q StringFilePathIOaNas throwErrno, but exceptions include the given path when appropriate. .throwErrnoIfRetryMayBlock_ throwErrnoIfRetryMayBlock_ ::  (a -> Bool) -> String -> IO a -> IO b -> IO ()  aBoolStringIOaIObIO()>as throwErrnoIfRetryMayBlock, but discards the result. .throwErrnoIfRetryMayBlock throwErrnoIfRetryMayBlock ::  (a -> Bool) -> String -> IO a -> IO b -> IO a  aBoolStringIOaIObIOaas throwErrnoIfRetry, but checks for operations that would block and executes an alternative action before retrying in that case. .throwErrnoIfRetry_ throwErrnoIfRetry_ ::  (a -> Bool) -> String -> IO a -> IO ()  aBoolStringIOaIO()6as throwErrnoIfRetry, but discards the result. .throwErrnoIfRetry throwErrnoIfRetry ::  (a -> Bool) -> String -> IO a -> IO a  aBoolStringIOaIOaas throwErrnoIf, but retry the IO action when it yields the error code eINTR - this amounts to the standard retry loop for interrupted POSIX system calls. .throwErrnoIfNullRetryMayBlock throwErrnoIfNullRetryMayBlock :: String ->  IO (Ptr a) -> IO b ->  IO (Ptr a)i 5 StringIOPtraIObIOPtraMas throwErrnoIfNullRetry, but checks for operations that would block. .throwErrnoIfNullRetrythrowErrnoIfNullRetry :: String ->  IO (Ptr a) ->  IO (Ptr a)b 7 StringIOPtraIOPtraThrow an IOError corresponding to the current value of getErrno if the IO action returns nullPtr, but retry in case of an interrupted operation. .throwErrnoIfNullthrowErrnoIfNull :: String ->  IO (Ptr a) ->  IO (Ptr a)  StringIOPtraIOPtra~Throw an IOError corresponding to the current value of getErrno if the IO action returns nullPtr. . throwErrnoIfMinus1RetryMayBlock_  throwErrnoIfMinus1RetryMayBlock_ ::  Num a => String -> IO a -> IO b -> IO ()  NumaStringIOaIObIO()Das throwErrnoIfMinus1RetryMayBlock, but discards the result. .throwErrnoIfMinus1RetryMayBlock throwErrnoIfMinus1RetryMayBlock ::  Num a => String -> IO a -> IO b -> IO a  NumaStringIOaIObIOaOas throwErrnoIfMinus1Retry, but checks for operations that would block. .throwErrnoIfMinus1Retry_throwErrnoIfMinus1Retry_ ::  Num a => String -> IO a -> IO () NumaStringIOaIO()7as throwErrnoIfMinus1, but discards the result. .throwErrnoIfMinus1RetrythrowErrnoIfMinus1Retry ::  Num a => String -> IO a -> IO aNumaStringIOaIOaThrow an IOError corresponding to the current value of getErrno if the IO action returns a result of -1, but retries in case of an interrupted operation. .throwErrnoIfMinus1_throwErrnoIfMinus1_ ::  Num a => String -> IO a -> IO ()R*NumaStringIOaIO()7as throwErrnoIfMinus1, but discards the result. .throwErrnoIfMinus1throwErrnoIfMinus1 ::  Num a => String -> IO a -> IO a(NumaStringIOaIOaThrow an IOError corresponding to the current value of getErrno if the IO action returns a result of -1. . throwErrnoIf_  throwErrnoIf_ ::  (a -> Bool) -> String -> IO a -> IO ()U,aBoolStringIOaIO()^as throwErrnoIf, but discards the result of the IO action after error handling. . throwErrnoIf  throwErrnoIf ::  (a -> Bool) -> String -> IO a -> IO aU-aBoolStringIOaIOaThrow an IOError corresponding to the current value of getErrno if the result value of the IO action meets the given predicate. . throwErrno throwErrno :: String -> IO aM9StringIOaOThrow an IOError corresponding to the current value of getErrno.  throwCGIthrowCGI :: (MonadCGI m, MonadIO m) =>  Exception -> m a7MonadCGImMonadIOm ExceptionmaThrow an exception in a CGI monad. The monad is required to be a MonadIO, so that we can use throwIO to guarantee ordering. 4throwthrow :: Exception e => e -> a&  ExceptioneeavThrow an exception. Exceptions may be thrown from purely functional code, but may only be caught within the IO monad.  threadsafe threadsafe :: SafetySafety Threadsafe Threadsafe :: Safety, # Safety4 ThreadKilled ThreadKilled :: AsyncException w AsyncExceptionThis exception is raised by another thread calling Control.Concurrent.killThread, or by the system if it needs to terminate the thread for some reason. thetypethetype :: String -> HtmlAttr m StringHtmlAttrthetypethetype :: String -> HtmlAttr  StringHtmlAttrthetypethetype :: String -> HtmlAttrF 1 StringHtmlAttrthetitlethetitle :: Html -> Html  HtmlHtmlthetitlethetitle :: Html -> Html  HtmlHtmlthetitlethetitle :: Html -> HtmlN ? HtmlHtmlthestylethestyle :: String -> HtmlAttr  StringHtmlAttrthestylethestyle :: String -> HtmlAttr  StringHtmlAttrthestylethestyle :: String -> HtmlAttrz e StringHtmlAttrthespanthespan :: Html -> Html  HtmlHtmlthespanthespan :: Html -> Html&HtmlHtmlthespanthespan :: Html -> Html|mHtmlHtmlthemenuthemenu :: Html -> HtmlHtmlHtmlthemapthemap :: Html -> Html&HtmlHtmlthemapthemap :: Html -> HtmlzkHtmlHtmlthemapthemap :: Html -> HtmlHtmlHtmlthelinkthelink :: Html -> Html$HtmlHtmlthelinkthelink :: Html -> HtmlzkHtmlHtmlthelinkthelink :: Html -> HtmlHtmlHtmlthehtmlthehtml :: Html -> Html&HtmlHtmlthehtmlthehtml :: Html -> Html|mHtmlHtmlthehtmlthehtml :: Html -> HtmlHtmlHtmltheforthefor :: String -> HtmlAttr2StringHtmlAttrtheforthefor :: String -> HtmlAttr}StringHtmlAttrtheforthefor :: String -> HtmlAttrStringHtmlAttrthedivthediv :: Html -> HtmlF7HtmlHtmlthedivthediv :: Html -> HtmlHtmlHtmlthedivthediv :: Html -> HtmlHtmlHtmlthecodethecode :: Html -> HtmlD5HtmlHtmlthecodethecode :: Html -> HtmlHtmlHtmlthecodethecode :: Html -> HtmlHtmlHtmltheclasstheclass :: String -> HtmlAttrT?StringHtmlAttrtheclasstheclass :: String -> HtmlAttrStringHtmlAttrtheclasstheclass :: String -> HtmlAttrStringHtmlAttrthebasethebase :: HtmlZSHtmlthebasethebase :: HtmlHtmlthebasethebase :: HtmlHtmltheadthead :: Html -> Html(HtmlHtmltheadthead :: Html -> HtmlzkHtmlHtmltheadthead :: Html -> HtmlHtmlHtmlthawthaw :: $(Ix i, IArray a e, MArray b e m) => a i e ->  m (b i e)7IxiIArrayaeMArraybemaiembieConverts an immutable array (any instance of IArray) into a mutable array (any instance of MArray) by taking a complete copy of it. thth :: Html -> Html_PHtmlHtmlthth :: Html -> HtmlHtmlHtmlthth :: Html -> HtmlHtmlHtmltfoottfoot :: Html -> HtmlI:HtmlHtmltfoottfoot :: Html -> HtmlHtmlHtmltfoottfoot :: Html -> HtmlHtmlHtml textfield textfield :: String -> HtmlK:StringHtml textfield textfield :: String -> HtmlStringHtml textfield textfield :: String -> HtmlStringHtmly TextDetailsdata  TextDetailsAtextareatextarea :: Html -> HtmlHtmlHtmltextareatextarea :: Html -> HtmlHtmlHtmltextareatextarea :: Html -> HtmlI:HtmlHtmltexttext :: String -> HtmlAttrStringHtmlAttrytexttext :: String -> DocStringDocA document of height 1 containing a literal string. text satisfies the following laws: The side condition on the last law is necessary because text "" has height 1, while empty has no height.  TestResultdata  TestResult TestOptions  TestOptions :: Int -> Int -> Bool ->  TestOptionsZ : IntIntBool TestOptions TestOptionsdata  TestOptions TestOk TestOk :: String -> Int ->  [[String]] ->  TestResult6!!StringInt[][]String TestResultTestListTestList :: [Test] -> Test!![]TestTest TestLabel TestLabel :: String -> Test -> Test "!StringTestTest TestFailed TestFailed :: [String] -> Int ->  TestResult"p"[]StringInt TestResult TestExausted  TestExausted :: String -> Int ->  [[String]] ->  TestResult@##StringInt[][]String TestResult testCasePaths testCasePaths :: Test -> [Path]##Test[]Path testCaseCount testCaseCount :: Test -> Int $#TestIntTestCaseTestCase ::  Assertion -> Testl$X$ AssertionTest TestAborted TestAborted ::  Exception ->  TestResult$$ Exception TestResultTestableclass Testable t%testtest :: Testable t => t -> Test~%c%TestablettTestTestdata Test%terminalAppearanceterminalAppearance :: String -> String& &StringStringtealteal :: StringZ&Q&Stringtdtd :: Html -> Html&&HtmlHtmltdtd :: Html -> Html&&HtmlHtmltdtd :: Html -> Html>'/'HtmlHtmltbodytbody :: Html -> Html''HtmlHtmltbodytbody :: Html -> Html''HtmlHtmltbodytbody :: Html -> Html4(%(HtmlHtmltargettarget :: String -> HtmlAttr((StringHtmlAttrg takeWhile takeWhile :: (Word8 -> Bool) ->  ByteString ->  ByteString0))Word8Bool ByteString ByteStringtakeWhile, applied to a predicate p and a ByteString xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p. f takeWhile takeWhile :: (Char -> Bool) ->  ByteString ->  ByteString|*S*CharBool ByteString ByteStringtakeWhile, applied to a predicate p and a ByteString xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p. ;takeMVartakeMVar :: MVar a -> IO a+y+MVaraIOaReturn the contents of the MVar. If the MVar is currently empty, takeMVar will wait until it is full. After a takeMVar, the MVar is left empty. There are two further important properties of takeMVar:
  • takeMVar is single-wakeup. That is, if there are multiple threads blocked in takeMVar, and the MVar becomes full, only one thread will be woken up. The runtime guarantees that the woken thread completes its takeMVar operation.
  • When multiple threads are blocked on an MVar, they are woken up in FIFO order. This is useful for providing fairness properties of abstractions built using MVars.
 takeInput takeInput :: [(String, String)] ->  ByteString ->  ByteString..[](,)StringString ByteString ByteString0Takes the right number of bytes from the input. q takeFileName takeFileName :: FilePath -> FilePath//FilePathFilePath&Get the file name.
takeFileName "test/" == ""
takeFileName x `isSuffixOf` x
takeFileName x == snd (splitFileName x)
Valid x => takeFileName (replaceFileName x "fred") == "fred"
Valid x => takeFileName (x </> "fred") == "fred"
Valid x => isRelative (takeFileName x)
r takeFileName takeFileName :: FilePath -> FilePath411FilePathFilePath&Get the file name.
takeFileName "test/" == ""
takeFileName x `isSuffixOf` x
takeFileName x == snd (splitFileName x)
Valid x => takeFileName (replaceFileName x "fred") == "fred"
Valid x => takeFileName (x </> "fred") == "fred"
Valid x => isRelative (takeFileName x)
qtakeExtensionstakeExtensions :: FilePath -> String22FilePathStringKGet all extensions
takeExtensions "file.tar.gz" == ".tar.gz"
rtakeExtensionstakeExtensions :: FilePath -> String3p3FilePathStringKGet all extensions
takeExtensions "file.tar.gz" == ".tar.gz"
q takeExtension takeExtension :: FilePath -> String>4)4FilePathStringGet the extension of a file, returns "" for no extension, .ext otherwise.
takeExtension x == snd (splitExtension x)
Valid x => takeExtension (addExtension x "ext") == ".ext"
Valid x => takeExtension (replaceExtension x "ext") == ".ext"
r takeExtension takeExtension :: FilePath -> String55FilePathStringGet the extension of a file, returns "" for no extension, .ext otherwise.
takeExtension x == snd (splitExtension x)
Valid x => takeExtension (addExtension x "ext") == ".ext"
Valid x => takeExtension (replaceExtension x "ext") == ".ext"
q takeDrive takeDrive :: FilePath -> FilePath:7#7FilePathFilePathOGet the drive from a filepath.
takeDrive x == fst (splitDrive x)
r takeDrive takeDrive :: FilePath -> FilePath77FilePathFilePathOGet the drive from a filepath.
takeDrive x == fst (splitDrive x)
q takeDirectory takeDirectory :: FilePath -> FilePath88FilePathFilePathGet the directory name, move up one level.
          takeDirectory x `isPrefixOf` x
          takeDirectory "foo" == ""
          takeDirectory "/foo/bar/baz" == "/foo/bar"
          takeDirectory "/foo/bar/baz/" == "/foo/bar/baz"
          takeDirectory "foo/bar/baz" == "foo/bar"
Windows:  takeDirectory "foo\\bar" == "foo"
Windows:  takeDirectory "foo\\bar\\\\" == "foo\\bar"
Windows:  takeDirectory "C:\\" == "C:\\"
r takeDirectory takeDirectory :: FilePath -> FilePath::FilePathFilePathGet the directory name, move up one level.
          takeDirectory x `isPrefixOf` x
          takeDirectory "foo" == ""
          takeDirectory "/foo/bar/baz" == "/foo/bar"
          takeDirectory "/foo/bar/baz/" == "/foo/bar/baz"
          takeDirectory "foo/bar/baz" == "foo/bar"
Windows:  takeDirectory "foo\\bar" == "foo"
Windows:  takeDirectory "foo\\bar\\\\" == "foo\\bar"
Windows:  takeDirectory "C:\\" == "C:\\"
q takeBaseName takeBaseName :: FilePath -> String<<FilePathStringGet the base name, without an extension or path.
takeBaseName "file/test.txt" == "test"
takeBaseName "dave.ext" == "dave"
takeBaseName "" == ""
takeBaseName "test" == "test"
takeBaseName (addTrailingPathSeparator x) == ""
takeBaseName "file/file.tar.gz" == "file.tar"
r takeBaseName takeBaseName :: FilePath -> String|>g>FilePathStringGet the base name, without an extension or path.
takeBaseName "file/test.txt" == "test"
takeBaseName "dave.ext" == "dave"
takeBaseName "" == ""
takeBaseName "test" == "test"
takeBaseName (addTrailingPathSeparator x) == ""
takeBaseName "file/file.tar.gz" == "file.tar"
gtaketake :: Int64 ->  ByteString ->  ByteString@?Int64 ByteString ByteStringO(n\c)/ take n, applied to a ByteString xs, returns the prefix of xs of length n, or xs itself if n > length xs. ftaketake :: Int ->  ByteString ->  ByteStringQA1AInt ByteString ByteStringO(1) take n, applied to a ByteString xs, returns the prefix of xs of length n, or xs itself if n > length xs. gtailstails ::  ByteString ->  [ByteString]B^B ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. ftailstails ::  ByteString ->  [ByteString]FC%C ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. gtailtail ::  ByteString ->  ByteStringDC ByteString ByteStringZO(1) Extract the elements after the head of a ByteString, which must be non-empty. ftailtail ::  ByteString ->  ByteStringDD ByteString ByteStringO(1) Extract the elements after the head of a ByteString, which must be non-empty. An exception will be thrown in the case of an empty ByteString. tagtag :: String -> Html -> HtmlEEStringHtmlHtml*Constructs an element with a custom name. tagtag :: String -> Html -> HtmlYFBFStringHtmlHtml*Constructs an element with a custom name. tagtag :: String -> Html -> HtmlFFStringHtmlHtml*Constructs an element with a custom name. tabletable :: Html -> HtmlgGXGHtmlHtmltabletable :: Html -> HtmlGGHtmlHtmltabletable :: Html -> Html HGHtmlHtmltabtab :: Stream s m Char => ParsecT s u m CharH[HStreamsmCharParsecTsumChar8Parses a tab character ('\t'). Returns a tab character. sysUnExpectErrorsysUnExpectError :: String ->  SourcePos ->  Reply s u acI;IString SourcePosReplysua SysUnExpect SysUnExpect :: String -> MessageIIStringMessage synthesize  synthesize :: s ->  (t -> s -> s) -> GenericQ (s -> t) ->  GenericQ tJQJstssGenericQstGenericQtBottom-up synthesis of a data structure; 1st argument z is the initial element for the synthesis; 2nd argument o is for reduction of results from subterms; 3rd argument f updates the synthesised data according to the given term symbolsymbol :: GenTokenParser s u m -> String -> ParsecT s u m String"LKGenTokenParsersumStringParsecTsumString`Lexeme parser symbol s parses string s and skips trailing white space. SymbolSymbol :: String -> LexemeLLStringLexeme4Haskell symbol, e.g. >>, :% ;swapMVarswapMVar :: MVar a -> a -> IO aMjMMVaraaIOaTake a value from an MVar, put a new value into the MVar and return the value taken. Note that there is a race condition whereby another process can put something in the MVar after the take happens but before the put does. supsup :: Html -> HtmlNNHtmlHtmlsupsup :: Html -> HtmlOOHtmlHtmlsupsup :: Html -> HtmlbOSOHtmlHtmlsubmitsubmit :: String -> String -> HtmlOOStringStringHtmlsubmitsubmit :: String -> String -> HtmlFP-PStringStringHtmlsubmitsubmit :: String -> String -> HtmlPPStringStringHtmlsubsub :: Html -> HtmlQPHtmlHtmlsubsub :: Html -> HtmlTQEQHtmlHtmlsubsub :: Html -> HtmlQQHtmlHtmlstylestyle :: Html -> HtmlQQHtmlHtmlstylestyle :: Html -> HtmlFR7RHtmlHtmlstylestyle :: Html -> HtmlRRHtmlHtmlystylestyle :: StyleRRStylePThe default style (mode=PageMode, lineLength=100, ribbonsPerLine=1.5). yStyle Style :: Mode -> Int -> Float -> StyleSSModeIntFloatStyleyStyledata StyleSA rendering style. STUArraydata STUArray s i eTA mutable array with unboxed elements, that can be manipulated in the ST monad. The type arguments are as follows:
  • s: the state variable argument for the ST type
  • i: the index type of the array (should be an instance of Ix)
  • e: the element type of the array. Only certain element types are supported.
An STUArray will generally be more efficient (in terms of both time and space) than the equivalent boxed version (STArray) with the same element type. However, STUArray is strict in its elements - so don't use STUArray if you require the non-strictness that STArray provides. GstToIOstToIO :: ST RealWorld a -> IO aJW*WST RealWorldaIOa'A monad transformer embedding strict state transformers in the IO monad. The RealWorld parameter indicates that the internal state used by the ST computation is a special one supplied by the IO monad, and thus distinct from those used by invocations of runST. strongstrong :: Html -> HtmlXXHtmlHtmlstrongstrong :: Html -> HtmlY YHtmlHtmlstrongstrong :: Html -> HtmlmY^YHtmlHtml StringTok StringTok :: String -> TokenYYStringTokenstringToHtmlStringstringToHtmlString :: String -> StringAZ.ZStringString.Processing Strings into Html friendly things.  stringToHtml stringToHtml :: String -> HtmlZZStringHtmlhConvert a String to Html, converting characters that need to be escaped to HTML entities.  stringToHtml stringToHtml :: String -> Html[[StringHtmlhConvert a String to Html, converting characters that need to be escaped to HTML entities.  stringToHtml stringToHtml :: String -> Htmlk\Z\StringHtmlhConvert a String to Html, converting characters that need to be escaped to HTML entities.  stringLiteral stringLiteral :: GenTokenParser s u m -> ParsecT s u m String]F]GenTokenParsersumParsecTsumStringThis lexeme parser parses a literal string. Returns the literal string value. This parsers deals correctly with escape sequences and gaps. The literal string is parsed according to the grammar rules defined in the Haskell report (which matches most programming languages quite closely).  stringLstringL :: String -> Lit^^StringLit StringLStringL :: String -> LitO_?_StringLit stringEstringE :: String -> ExpQ__StringExpQstringstring :: String ->  ReadP String`_StringReadPString)Parses and returns the specified string. stringstring :: Stream s m Char => String -> ParsecT s u m String``StreamsmCharStringParsecTsumStringstring s parses a sequence of characters given by s. Returns the parsed string (i.e. s).
divOrMod    =   string "div" 
            <|> string "mod"
StringString :: String -> LexemebaStringLexeme)String literal, with escapes interpreted strikestrike :: Html -> HtmlbqbHtmlHtml StrictTypeQtype  StrictTypeQ = Q StrictTypeb strictType strictType :: Q Strict -> TypeQ ->  StrictTypeQXc4cQStrictTypeQ StrictTypeQ Strictdata StrictcPSTRefdata STRef s ac{a value of type STRef s a is a mutable variable in state thread s, containing a value of type a StreamPermParserdata StreamPermParser s st adThe type StreamPermParser s st a denotes a permutation parser that, when converted by the permute function, parses s streams with user state st and returns a value of type a on success. Normally, a permutation parser is first build with special operators like (<||>) and than transformed into a normal parser using permute. strAttrstrAttr :: String -> String -> HtmlAttrfcfStringStringHtmlAttrstrAttrstrAttr :: String -> String -> HtmlAttrffStringStringHtmlAttrstrAttrstrAttr :: String -> String -> HtmlAttrxg[gStringStringHtmlAttrStrategytype Strategy a = a -> DonegvA strategy takes a value and returns a Done value to indicate that the specifed evaluation has been performed. yStrStr :: String ->  TextDetailshzhString TextDetails StorableArraydata  StorableArray i ehThe array type  StmtQtype StmtQ = Q Stmti Stmtdata StmtHistepstep ::  ReadPrec a ->  ReadPrec aiiReadPrecaReadPreca)Increases the precedence context by one.  stdCallstdCall :: Callconv%jjCallconv StdCallStdCall :: Callconvkj`jCallconv stateUser stateUser ::  State s u -> ujjStatesuustatePosstatePos ::  State s u ->  SourcePos=k kStatesu SourcePos stateInput stateInput ::  State s u -> skkStatesusState State :: s ->  SourcePos -> u ->  State s u+lls SourcePosuStatesuStatedata State s u]lStateState :: Path -> Counts -> StatellPathCountsStateStatedata Statel startToken startToken :: Lex a ()Im:mLexa()startstart :: Int -> HtmlAttrmmIntHtmlAttr4 StackOverflow StackOverflow :: AsyncExceptionmmAsyncExceptionThe current thread's stack exceeded its limit. Since an exception has been raised, the thread's stack will certainly be below its limit again, but the programmer should take remedial action immediately. ] StableNamedata  StableName aoiAn abstract name for an object, that supports equality and hashing. Stable names have the following property:
  • If sn1 :: StableName and sn2 :: StableName and sn1 == sn2 then sn1 and sn2 were created by calls to makeStableName on the same object.
The reverse is not necessarily true: if two stable names are not equal, then the objects they name may still be equal. Note in particular that mkStableName may return a different StableName after an object is evaluated. Stable Names are similar to Stable Pointers (Foreign.StablePtr), but differ in the following ways:
  • There is no freeStableName operation, unlike Foreign.StablePtrs. Stable names are reclaimed by the runtime system when they are no longer needed.
  • There is no deRefStableName operation. You can't get back from a stable name to the original Haskell object. The reason for this is that the existence of a stable name for an object does not guarantee the existence of the object itself; it can still be garbage collected.
GSTdata ST s asThe strict state-transformer monad. A computation of type ST s a transforms an internal state indexed by s, and returns a value of type a. The s parameter is either
  • an uninstantiated type variable (inside invocations of runST), or
  • RealWorld (inside invocations of Control.Monad.ST.stToIO).
It serves to keep the internal states of different invocations of runST separate from each other and from invocations of Control.Monad.ST.stToIO. The >>= and >> operations are strict in the state (though not in values stored in the state). For example,
runST (writeSTRef _|_ v >>= f) = _|_
sSeqsSeq :: a ->  Strategy bvvaStrategybA strategy corresponding to seq: x `seq` e = e `using` sSeq x. sSeq has been superceded by demanding. Replace e `using` sSeq x with e `demanding` rwhnf x. SrcLoc SrcLoc :: String -> Int -> Int -> SrcLoc$xxStringIntIntSrcLocSrcLocdata SrcLocTxA position in the source. srcLinesrcLine :: SrcLoc -> IntxxSrcLocInt srcFilename srcFilename :: SrcLoc -> String,yySrcLocString srcColumn srcColumn :: SrcLoc -> IntyxySrcLocIntsrcsrc :: String -> HtmlAttryyStringHtmlAttrsrcsrc :: String -> HtmlAttr HtmlAttrzzStringHtmlAttrsquaressquares :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a_{{GenTokenParsersumParsecTsumaParsecTsuma!DEPRECATED: Use brackets. g splitWith splitWith :: (Word8 -> Bool) ->  ByteString ->  [ByteString]$|{Word8Bool ByteString[] ByteStringmO(n) Splits a ByteString into components delimited by separators, where the predicate returns True for a separator element. The resulting components do not contain the separators. Two adjacent separators result in an empty component in the output. eg.
splitWith (=='a') "aabbaca" == ["","","bb","c",""]
splitWith (=='a') []        == []
f splitWith splitWith :: (Char -> Bool) ->  ByteString ->  [ByteString]3~~CharBool ByteString[] ByteStringKO(n) Splits a ByteString into components delimited by separators, where the predicate returns True for a separator element. The resulting components do not contain the separators. Two adjacent separators result in an empty component in the output. eg.
splitWith (=='a') "aabbaca" == ["","","bb","c",""]
 splitTyConApp splitTyConApp :: HsType -> P (HsName, [HsType])HsTypeP(,)HsName[]HsTypeqsplitSearchPathsplitSearchPath :: String ->  [FilePath]oString[]FilePathTake a string, split it on the searchPathSeparator character. Follows the recommendations in http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html
Posix:   splitSearchPath "File1:File2:File3"  == ["File1","File2","File3"]
Posix:   splitSearchPath "File1::File2:File3" == ["File1",".","File2","File3"]
Windows: splitSearchPath "File1;File2;File3"  == ["File1","File2","File3"]
Windows: splitSearchPath "File1;;File2;File3" == ["File1","File2","File3"]
rsplitSearchPathsplitSearchPath :: String ->  [FilePath]ڂString[]FilePathTake a string, split it on the searchPathSeparator character. Follows the recommendations in http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap08.html
Posix:   splitSearchPath "File1:File2:File3"  == ["File1","File2","File3"]
Posix:   splitSearchPath "File1::File2:File3" == ["File1",".","File2","File3"]
Windows: splitSearchPath "File1;File2;File3"  == ["File1","File2","File3"]
Windows: splitSearchPath "File1;;File2;File3" == ["File1","File2","File3"]
splitRequestURIsplitRequestURI :: URI ->  (String, URI)aEURI(,)StringURIq splitPath splitPath :: FilePath ->  [FilePath]ӅFilePath[]FilePathASplit a path by the directory separator.
concat (splitPath x) == x
splitPath "test//item/" == ["test//","item/"]
splitPath "test/item/file" == ["test/","item/","file"]
splitPath "" == []
Windows: splitPath "c:\\test\\path" == ["c:\\","test\\","path"]
Posix:   splitPath "/file/test" == ["/","file/","test"]
r splitPath splitPath :: FilePath ->  [FilePath]iFilePath[]FilePathASplit a path by the directory separator.
concat (splitPath x) == x
splitPath "test//item/" == ["test//","item/"]
splitPath "test/item/file" == ["test/","item/","file"]
splitPath "" == []
Windows: splitPath "c:\\test\\path" == ["c:\\","test\\","path"]
Posix:   splitPath "/file/test" == ["/","file/","test"]
q splitFileName splitFileName :: FilePath -> (String, String)N*FilePath(,)StringStringSplit a filename into directory and file. combine is the inverse.
uncurry (++) (splitFileName x) == x
Valid x => uncurry combine (splitFileName x) == x
splitFileName "file/bob.txt" == ("file/", "bob.txt")
splitFileName "file/" == ("file/", "")
splitFileName "bob" == ("", "bob")
Posix:   splitFileName "/" == ("/","")
Windows: splitFileName "c:" == ("c:","")
r splitFileName splitFileName :: FilePath -> (String, String)T0FilePath(,)StringStringSplit a filename into directory and file. combine is the inverse.
uncurry (++) (splitFileName x) == x
Valid x => uncurry combine (splitFileName x) == x
splitFileName "file/bob.txt" == ("file/", "bob.txt")
splitFileName "file/" == ("file/", "")
splitFileName "bob" == ("", "bob")
Posix:   splitFileName "/" == ("/","")
Windows: splitFileName "c:" == ("c:","")
qsplitExtensionssplitExtensions :: FilePath -> (FilePath, String)b<FilePath(,)FilePathStringZSplit on all extensions
splitExtensions "file.tar.gz" == ("file",".tar.gz")
rsplitExtensionssplitExtensions :: FilePath -> (FilePath, String)K%FilePath(,)FilePathStringZSplit on all extensions
splitExtensions "file.tar.gz" == ("file",".tar.gz")
qsplitExtensionsplitExtension :: FilePath -> (String, String). FilePath(,)StringString!Split on the extension. addExtension is the inverse.
uncurry (++) (splitExtension x) == x
uncurry addExtension (splitExtension x) == x
splitExtension "file.txt" == ("file",".txt")
splitExtension "file" == ("file","")
splitExtension "file/file.txt" == ("file/file",".txt")
splitExtension "file.txt/boris" == ("file.txt/boris","")
splitExtension "file.txt/boris.ext" == ("file.txt/boris",".ext")
splitExtension "file/path.txt.bob.fred" == ("file/path.txt.bob",".fred")
splitExtension "file/path.txt/" == ("file/path.txt/","")
rsplitExtensionsplitExtension :: FilePath -> (String, String)ؑFilePath(,)StringString!Split on the extension. addExtension is the inverse.
uncurry (++) (splitExtension x) == x
uncurry addExtension (splitExtension x) == x
splitExtension "file.txt" == ("file",".txt")
splitExtension "file" == ("file","")
splitExtension "file/file.txt" == ("file/file",".txt")
splitExtension "file.txt/boris" == ("file.txt/boris","")
splitExtension "file.txt/boris.ext" == ("file.txt/boris",".ext")
splitExtension "file/path.txt.bob.fred" == ("file/path.txt.bob",".fred")
splitExtension "file/path.txt/" == ("file/path.txt/","")
q splitDrive splitDrive :: FilePath -> (FilePath, FilePath)ZFilePath(,)FilePathFilePath.Split a path into a drive and a path. On Unix, / is a Drive.
uncurry (++) (splitDrive x) == x
Windows: splitDrive "file" == ("","file")
Windows: splitDrive "c:/file" == ("c:/","file")
Windows: splitDrive "c:\\file" == ("c:\\","file")
Windows: splitDrive "\\\\shared\\test" == ("\\\\shared\\","test")
Windows: splitDrive "\\\\shared" == ("\\\\shared","")
Windows: splitDrive "\\\\?\\UNC\\shared\\file" == ("\\\\?\\UNC\\shared\\","file")
Windows: splitDrive "\\\\?\\UNCshared\\file" == ("\\\\?\\","UNCshared\\file")
Windows: splitDrive "\\\\?\\d:\\file" == ("\\\\?\\d:\\","file")
Windows: splitDrive "/d" == ("","/d")
Posix:   splitDrive "/test" == ("/","test")
Posix:   splitDrive "//test" == ("//","test")
Posix:   splitDrive "test/file" == ("","test/file")
Posix:   splitDrive "file" == ("","file")
r splitDrive splitDrive :: FilePath -> (FilePath, FilePath)9FilePath(,)FilePathFilePath.Split a path into a drive and a path. On Unix, / is a Drive.
uncurry (++) (splitDrive x) == x
Windows: splitDrive "file" == ("","file")
Windows: splitDrive "c:/file" == ("c:/","file")
Windows: splitDrive "c:\\file" == ("c:\\","file")
Windows: splitDrive "\\\\shared\\test" == ("\\\\shared\\","test")
Windows: splitDrive "\\\\shared" == ("\\\\shared","")
Windows: splitDrive "\\\\?\\UNC\\shared\\file" == ("\\\\?\\UNC\\shared\\","file")
Windows: splitDrive "\\\\?\\UNCshared\\file" == ("\\\\?\\","UNCshared\\file")
Windows: splitDrive "\\\\?\\d:\\file" == ("\\\\?\\d:\\","file")
Windows: splitDrive "/d" == ("","/d")
Posix:   splitDrive "/test" == ("/","test")
Posix:   splitDrive "//test" == ("//","test")
Posix:   splitDrive "test/file" == ("","test/file")
Posix:   splitDrive "file" == ("","file")
qsplitDirectoriessplitDirectories :: FilePath ->  [FilePath]ʛFilePath[]FilePathJust as splitPath, but don't add the trailing slashes to each element.
splitDirectories "test/file" == ["test","file"]
splitDirectories "/test/file" == ["/","test","file"]
Valid x => joinPath (splitDirectories x) `equalFilePath` x
splitDirectories "" == []
rsplitDirectoriessplitDirectories :: FilePath ->  [FilePath]cFilePath[]FilePathJust as splitPath, but don't add the trailing slashes to each element.
splitDirectories "test/file" == ["test","file"]
splitDirectories "/test/file" == ["/","test","file"]
Valid x => joinPath (splitDirectories x) `equalFilePath` x
splitDirectories "" == []
gsplitAtsplitAt :: Int64 ->  ByteString -> (ByteString, ByteString)@ Int64 ByteString(,) ByteString ByteStringlO(n\c)/ splitAt n xs is equivalent to (take n xs, drop n xs). fsplitAtsplitAt :: Int ->  ByteString -> (ByteString, ByteString)OInt ByteString(,) ByteString ByteStringiO(1) splitAt n xs is equivalent to (take n xs, drop n xs). gsplitsplit :: Word8 ->  ByteString ->  [ByteString]BWord8 ByteString[] ByteStringO(n) Break a ByteString into pieces separated by the byte argument, consuming the delimiter. I.e.
split '\n' "a\nb\nd\ne" == ["a","b","d","e"]
split 'a'  "aXaXaXa"    == ["","X","X","X",""]
split 'x'  "x"          == ["",""]
and
intercalate [c] . split c == id
split == splitWith . (==)
As for all splitting functions in this library, this function does not copy the substrings, it just constructs new ByteStrings that are slices of the original. fsplitsplit :: Char ->  ByteString ->  [ByteString]Char ByteString[] ByteStringO(n) Break a ByteString into pieces separated by the byte argument, consuming the delimiter. I.e.
split '\n' "a\nb\nd\ne" == ["a","b","d","e"]
split 'a'  "aXaXaXa"    == ["","X","X","X",""]
split 'x'  "x"          == ["",""]
and
intercalate [c] . split c == id
split == splitWith . (==)
As for all splitting functions in this library, this function does not copy the substrings, it just constructs new ByteStrings that are slices of the original. SpecialSpecial ::  HsSpecialCon -> HsQName  HsSpecialConHsQName)built-in constructor with special syntax sparkingsparking :: a -> Done -> aaDoneaEvaluates the second argument in parallel with the first. Used to express control-oriented parallelism. The second argument is usually a strategy application. sParsPar :: a ->  Strategy bzaStrategybA strategy corresponding to par: x `par` e = e `using` sPar x. sPar has been superceded by sparking. Replace e `using` sPar x with e `sparking` rwhnf x. fspanEndspanEnd :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)ݨCharBool ByteString(,) ByteString ByteStringspanEnd behaves like span but from the end of the ByteString. We have
spanEnd (not.isSpace) "x y z" == ("x y ","z")
and
spanEnd (not . isSpace) ps
   == 
let (x,y) = span (not.isSpace) (reverse ps) in (reverse y, reverse x) 
gspanspan :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)ߪWord8Bool ByteString(,) ByteString ByteStringspan p xs breaks the ByteString into two segments. It is equivalent to (takeWhile p xs, dropWhile p xs) fspanspan :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)CharBool ByteString(,) ByteString ByteStringspan p xs breaks the ByteString into two segments. It is equivalent to (takeWhile p xs, dropWhile p xs) spacingspacing :: PPHsMode -> Bool PPHsModeBool blank lines between statements? spacesspaces :: Stream s m Char => ParsecT s u m ()StreamsmCharParsecTsum()LSkips zero or more white space characters. See also skipMany.  spaceHtml spaceHtml :: Html=6HtmlNon-breaking space.  spaceHtml spaceHtml :: HtmlHtmlNon-breaking space.  spaceHtml spaceHtml :: HtmlHtmlNon-breaking space. yspacespace :: Doc5/DocA space character spacespace :: Stream s m Char => ParsecT s u m Char̯StreamsmCharParsecTsumCharlParses a white space character (any character which satisfies isSpace) Returns the parsed character.  SourcePosdata  SourcePosnThe abstract data type SourcePos represents source positions. It contains the name of the source (i.e. file name), a line number and a column number. SourcePos is an instance of the Show, Eq and Ord class.  SourcePosdata  SourcePosThe abstract data type SourcePos represents source positions. It contains the name of the source (i.e. file name), a line number and a column number. SourcePos is an instance of the Show, Eq and Ord class.  sourceName sourceName ::  SourcePos ->  SourceName SourcePos SourceName8Extracts the name of the source from a source position.  sourceName sourceName ::  SourcePos ->  SourceName SourcePos SourceName8Extracts the name of the source from a source position.  SourceNametype  SourceName = String% SourceNametype  SourceName = Stringh sourceLine sourceLine ::  SourcePos -> Lineδ SourcePosLine1Extracts the line number from a source position.  sourceLine sourceLine ::  SourcePos -> LineeQ SourcePosLine1Extracts the line number from a source position.  sourceColumn sourceColumn ::  SourcePos -> Column SourcePosColumn3Extracts the column number from a source position.  sourceColumn sourceColumn ::  SourcePos -> Column SourcePosColumn3Extracts the column number from a source position. fsortsort ::  ByteString ->  ByteString@% ByteString ByteString@O(n) Sort a ByteString efficiently, using counting sort.  somewhere somewhere :: MonadPlus m =>  GenericM m ->  GenericM m MonadPlusmGenericMmGenericMm2Apply a monadic transformation at least somewhere  something something :: GenericQ (Maybe u) -> GenericQ (Maybe u)GenericQMaybeuGenericQMaybeu3Look up a subterm by means of a maybe-typed filter 4 SomeException SomeException :: e ->  SomeExceptionoe SomeException4 SomeExceptiondata  SomeException¹ SockAddrUnix SockAddrUnix :: String -> SockAddr.StringSockAddr SockAddrInet6  SockAddrInet6 ::  PortNumber -> FlowInfo ->  HostAddress6 -> ScopeID -> SockAddrʺ PortNumberFlowInfo HostAddress6ScopeIDSockAddr SockAddrInet SockAddrInet ::  PortNumber ->  HostAddress -> SockAddrv PortNumber HostAddressSockAddrSockAddrdata SockAddrлgsnocsnoc ::  ByteString -> Word8 ->  ByteStringP. ByteStringWord8 ByteString?O(n\c)/ Append a byte to the end of a ByteString fsnocsnoc ::  ByteString -> Char ->  ByteString  ByteStringChar ByteStringvO(n) Append a Char to the end of a ByteString. Similar to cons, this function performs a memcpy. smallsmall :: Html -> HtmlսƽHtmlHtmlsmallsmall :: Html -> Html'HtmlHtmlsmallsmall :: Html -> HtmlyjHtmlHtml skipSpaces skipSpaces :: ReadP ()ȾReadP()Skips all whitespace.  skipMany1 skipMany1 :: ReadP a -> ReadP ()L0ReadPaReadP(),Like many1, but discards the result.  skipMany1 skipMany1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()/StreamsmtParsecTsumaParsecTsum()bskipMany1 p applies the parser p one or more times, skipping its result. skipManyskipMany :: ReadP a -> ReadP ()ReadPaReadP()+Like many, but discards the result. skipManyskipMany :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()StreamsmtParsecTsumaParsecTsum()skipMany p applies the parser p zero or more times, skipping its result.
spaces  = skipMany space
sizeOfSockAddrByFamilysizeOfSockAddrByFamily :: Family -> IntFamilyIntjComputes the storage requirements (in bytes) required for a SockAddr with the given Family. sizeOfSockAddrsizeOfSockAddr :: SockAddr -> IntSockAddrIntComputes the storage requirements (in bytes) of the given SockAddr. This function differs from sizeOf in that the value of the argument is used. sizesize :: String -> HtmlAttrStringHtmlAttrsizesize :: String -> HtmlAttrStringHtmlAttrsizesize :: String -> HtmlAttrjUStringHtmlAttrg singleton singleton :: Word8 ->  ByteStringWord8 ByteString<O(1) Convert a Word8 into a ByteString f singleton singleton :: Char ->  ByteStringt_Char ByteString;O(1) Convert a Char into a ByteString singlesingle :: a ->  BlockTable aa BlockTablea simpleTable  simpleTable ::  [HtmlAttr] ->  [HtmlAttr] -> [[Html]] -> Html[]HtmlAttr[]HtmlAttr[][]HtmlHtmlIf you can't be bothered with the above, then you can build simple tables with simpleTable. Just provide the attributes for the whole table, attributes for the cells (same for every cell), and a list of lists of cell contents, and this function will build the table for you. It does presume that all the lists are non-empty, and there is at least one list. Different length lists means that the last cell gets padded. If you want more power, then use the system above, or build tables explicitly. $simpleHTTP_debugsimpleHTTP_debug :: HStream ty => FilePath ->  Request ty -> IO (Result (Response ty))RHStreamtyFilePathRequesttyIOResultResponsetysimpleHTTP_debug debugFile req behaves like simpleHTTP, but logs the HTTP operation via the debug file debugFile. # simpleHTTP_ simpleHTTP_ ::  Stream s => s -> Request_String -> IO (Result Response_String)StreamssRequest_StringIOResultResponse_String@Like simpleHTTP, but acting on an already opened stream. $ simpleHTTP_ simpleHTTP_ :: HStream ty => HandleStream ty ->  Request ty -> IO (Result (Response ty))HStreamty HandleStreamtyRequesttyIOResultResponsety@Like simpleHTTP, but acting on an already opened stream. # simpleHTTP simpleHTTP :: Request_String -> IO (Result Response_String)Request_StringIOResultResponse_StringFSimple way to transmit a resource across a non-persistent connection. $ simpleHTTP simpleHTTP :: HStream ty =>  Request ty -> IO (Result (Response ty))HStreamtyRequesttyIOResultResponsetyMsimpleHTTP transmits a resource across a non-persistent connection. silversilver :: StringString sigPsigP :: PatQ -> TypeQ -> PatQPatQTypeQPatQ SigPSigP :: Pat -> Type -> PatS@PatTypePat> signalQSemN signalQSemN :: QSemN -> Int -> IO ()QSemNIntIO()ESignal that a given quantity is now available from the QSemN. = signalQSem signalQSem :: QSem -> IO ()r_QSemIO()3Signal that a unit of the QSem is available  sigEsigE :: ExpQ -> TypeQ -> ExpQ ExpQTypeQExpQ SigESigE :: Exp -> Type -> Expo\ExpTypeExp sigDsigD :: Name -> TypeQ -> DecQNameTypeQDecQ SigDSigD :: Name -> Type -> Dec;'NameTypeDec showTable showTable ::  Show a =>  BlockTable a -> StringShowa BlockTableaString showsTable showsTable ::  Show a =>  BlockTable a -> ShowSG!Showa BlockTableaShowSshowPathshowPath :: Path -> StringPathStringshowHtmlFragmentshowHtmlFragment ::  HTML html => html -> String* HTMLhtmlhtmlStringpRender a piece of HTML without adding a DOCTYPE declaration or root element. Does not add any extra whitespace. showHtmlFragmentshowHtmlFragment ::  HTML html => html -> String!HTMLhtmlhtmlStringpRender a piece of HTML without adding a DOCTYPE declaration or root element. Does not add any extra whitespace. showHtmlFragmentshowHtmlFragment ::  HTML html => html -> StringHTMLhtmlhtmlStringpRender a piece of HTML without adding a DOCTYPE declaration or root element. Does not add any extra whitespace. showHtmlshowHtml ::  HTML html => html -> StringHTMLhtmlhtmlStringOutput the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable. showHtmlshowHtml ::  HTML html => html -> String&HTMLhtmlhtmlStringThe DOCTYPE for XHTML 1.0 Strict. Output the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable. showHtmlshowHtml ::  HTML html => html -> StringyZHTMLhtmlhtmlStringOutput the HTML without adding newlines or spaces within the markup. This should be the most time and space efficient way to render HTML, though the ouput is quite unreadable.   showGregorian showGregorian :: Day -> String}DayString%show in ISO 8601 format (yyyy-mm-dd) showErrorMessagesshowErrorMessages :: String -> String -> String -> String -> String ->  [Message] -> StringnStringStringStringStringString[]MessageString showCounts showCounts :: Counts -> StringCountsString showCookie showCookie :: Cookie -> StringxeCookieStringHShow a cookie on the format used as the value of the Set-Cookie header. shapeshape :: String -> HtmlAttr StringHtmlAttrshapeshape :: String -> HtmlAttr|gStringHtmlAttrshapeshape :: String -> HtmlAttrStringHtmlAttrsforcesforce ::  NFData a => a -> b -> bK2NFDataaabbsetStatesetState ::  Monad m => u -> ParsecT s u m ()MonadmuParsecTsum()3An alias for putState for backwards compatibility.  setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePosx SourcePos SourceName SourcePosSet the name of the source.  setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePosQ, SourcePos SourceName SourcePosSet the name of the source.  setSourceLine setSourceLine ::  SourcePos -> Line ->  SourcePos SourcePosLine SourcePos*Set the line number of a source position.  setSourceLine setSourceLine ::  SourcePos -> Line ->  SourcePos SourcePosLine SourcePos*Set the line number of a source position. setSourceColumnsetSourceColumn ::  SourcePos -> Column ->  SourcePosmL SourcePosColumn SourcePos,Set the column number of a source position. setSourceColumnsetSourceColumn ::  SourcePos -> Column ->  SourcePos-  SourcePosColumn SourcePos,Set the column number of a source position. setResponseVersionsetResponseVersion :: String ->  Response a ->  Response aStringResponseaResponseasetResponseVersion v rsp returns a new response, identical to rsp, but with its HTTP version set to v. setRequestVersionsetRequestVersion :: String ->  Request a ->  Request aStringRequestaRequestasetRequestVersion v req returns a new request, identical to req, but with its HTTP version set to v.  setPrompt setPrompt :: EditLine ->  IO String -> IO ()'EditLineIOStringIO()6Set a function that will determine the prompt string.  setPosition setPosition ::  Monad m =>  SourcePos -> ParsecT s u m ()Monadm SourcePosParsecTsum()KsetPosition pos sets the current source position to pos. setParserStatesetParserState ::  Monad m =>  State s u -> ParsecT s u m (State s u)MonadmStatesuParsecTsumStatesuEsetParserState st set the full parser state to st. setInputsetInput ::  Monad m => s -> ParsecT s u m ()MonadmsParsecTsum()setInput input continues parsing with input. The getInput and setInput functions can for example be used to deal with #include files.  setHeaders setHeaders :: HasHeaders x => x -> [Header] -> x HasHeadersxx[]Headerx setErrorPos setErrorPos ::  SourcePos ->  ParseError ->  ParseErrorw SourcePos ParseError ParseErrorsetErrorMessagesetErrorMessage :: Message ->  ParseError ->  ParseError7Message ParseError ParseError setEditor setEditor :: EditLine -> Editor -> IO ()EditLineEditorIO()Set the editor keymap mode. setBOLsetBOL :: Lex a () Lexa() seqTriple  seqTriple ::  Strategy a ->  Strategy b ->  Strategy c -> Strategy (a, b, c)StrategyaStrategybStrategycStrategy(,,)abcWApply three strategies to the elements of a triple in sequentially from left to right. seqPairseqPair ::  Strategy a ->  Strategy b -> Strategy (a, b)StrategyaStrategybStrategy(,)abPApply two strategies to the elements of a pair sequentially from left to right.  seqListNth seqListNth :: Int ->  Strategy b ->  Strategy [b]IntStrategybStrategy[]bApplies a strategy to the nth element of a list (if there is one) before returning the result. E.g. seqListNth 2 [e1, e2, e3] evaluates e3. seqListNseqListN :: Integral a => a ->  Strategy b ->  Strategy [b]+IntegralaaStrategybStrategy[]bCSequentially applies a strategy to the first n elements of a list. seqListseqList ::  Strategy a ->  Strategy [a]StrategyaStrategy[]a;Sequentially applies a strategy to each element of a list. seqArrseqArr :: Ix b =>  Strategy a -> Strategy (Array b a)IxbStrategyaStrategyArrayba;Apply a strategy to all elements of an array sequentially.  sepEndBy1 sepEndBy1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]StreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepEndBy1 p sep parses one or more occurrences of p, separated and optionally ended by sep. Returns a list of values returned by p. sepEndBysepEndBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a])StreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepEndBy p sep parses zero or more occurrences of p, separated and optionally ended by sep, ie. haskell style statements. Returns a list of values returned by p.
haskellStatements  = haskellStatement `sepEndBy` semi
sepBy1sepBy1 :: ReadP a ->  ReadP sep ->  ReadP [a].ReadPaReadPsepReadP[]asepBy1 p sep parses one or more occurrences of p, separated by sep. Returns a list of values returned by p. sepBy1sepBy1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]HStreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepBy1 p sep parses one or more occurrences of p, separated by sep. Returns a list of values returned by p. sepBysepBy :: ReadP a ->  ReadP sep ->  ReadP [a]ReadPaReadPsepReadP[]asepBy p sep parses zero or more occurrences of p, separated by sep. Returns a list of values returned by p. sepBysepBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]LStreamsmtParsecTsumaParsecTsumsepParsecTsum[]asepBy p sep parses zero or more occurrences of p, separated by sep. Returns a list of values returned by p.
commaSep p  = p `sepBy` (symbol ",")
ysepsep :: [Doc] -> DochU[]DocDoc#Either hsep or vcat. #sendHTTP_notify sendHTTP_notify ::  Stream s => s -> Request_String -> IO () -> IO (Result Response_String){-StreamssRequest_StringIO()IOResultResponse_String$sendHTTP_notify sendHTTP_notify :: HStream ty => HandleStream ty ->  Request ty -> IO () -> IO (Result (Response ty))'HStreamty HandleStreamtyRequesttyIO()IOResultResponsety#sendHTTP_notify hStream httpRequest action behaves like sendHTTP, but lets you supply an IO action to execute once the request has been successfully transmitted over the connection. Useful when you want to set up tracing of request transmission and its performance. #sendHTTPsendHTTP ::  Stream s => s -> Request_String -> IO (Result Response_String)p,StreamssRequest_StringIOResultResponse_String$sendHTTPsendHTTP :: HStream ty => HandleStream ty ->  Request ty -> IO (Result (Response ty))RHStreamty HandleStreamtyRequesttyIOResultResponsetysendHTTP hStream httpRequest transmits httpRequest over hStream, but does not alter the status of the connection, nor request it to be closed upon receiving the response. semiSep1semiSep1 :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]GenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser semiSep1 p parses one or more occurrences of p separated by semi. Returns a list of values returned by p. semiSepsemiSep :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]] GenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser semiSep p parses zero or more occurrences of p separated by semi. Returns a list of values returned by p.  SemiColon SemiColon :: TokenB:Tokenysemisemi :: DocxrDocA ';' character semisemi :: GenTokenParser s u m -> ParsecT s u m String#GenTokenParsersumParsecTsumStringjLexeme parser |semi| parses the character ';' and skips any trailing white space. Returns the string ";". selectedselected :: HtmlAttrHtmlAttrselectedselected :: HtmlAttrHtmlAttrselectedselected :: HtmlAttreZHtmlAttrselectselect :: Html -> HtmlHtmlHtmlselectselect :: Html -> Html HtmlHtmlselectselect :: Html -> HtmlaRHtmlHtml sectionRsectionR :: ExpQ -> ExpQ -> ExpQExpQExpQExpQ sectionLsectionL :: ExpQ -> ExpQ -> ExpQ= ( ExpQExpQExpQsecondsToDiffTimesecondsToDiffTime :: Integer -> DiffTime  IntegerDiffTimeICreate a DiffTime which represents an integral number of seconds. qsearchPathSeparatorsearchPathSeparator :: CharT M CharThe character that is used to separate the entries in the $PATH environment variable.
Windows: searchPathSeparator == ';'
Posix:   searchPathSeparator == ':'
rsearchPathSeparatorsearchPathSeparator :: CharV O CharThe character that is used to separate the entries in the $PATH environment variable.
Windows: searchPathSeparator == ';'
Posix:   searchPathSeparator == ':'
 scrolling scrolling :: String -> HtmlAttrh S StringHtmlAttr scrolling scrolling :: String -> HtmlAttr  StringHtmlAttrscriptscript :: Html -> Html"  HtmlHtmlscriptscript :: Html -> Htmlv g HtmlHtmlscriptscript :: Html -> Html  HtmlHtmlScopeIDtype ScopeID = Word32fscanr1scanr1 :: (Char -> Char -> Char) ->  ByteString ->  ByteStringzCharCharChar ByteString ByteStringPscanr1 is a variant of scanr that has no starting value argument. fscanr scanr :: (Char -> Char -> Char) -> Char ->  ByteString ->  ByteStringzCharCharCharChar ByteString ByteString*scanr is the right-to-left dual of scanl. fscanl1scanl1 :: (Char -> Char -> Char) ->  ByteString ->  ByteString{LCharCharChar ByteString ByteStringscanl1 is a variant of scanl that has no starting value argument:
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
gscanl scanl :: (Word8 -> Word8 -> Word8) -> Word8 ->  ByteString ->  ByteStringWord8Word8Word8Word8 ByteString ByteStringscanl is similar to foldl, but returns a list of successive reduced values from the left. This function will fuse.
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
last (scanl f z xs) == foldl f z xs.
fscanl scanl :: (Char -> Char -> Char) -> Char ->  ByteString ->  ByteStringUCharCharCharChar ByteString ByteStringscanl is similar to foldl, but returns a list of successive reduced values from the left:
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
last (scanl f z xs) == foldl f z xs.
satisfysatisfy :: (Char -> Bool) ->  ReadP CharCharBoolReadPCharRConsumes and returns the next character, if it satisfies the specified predicate. satisfysatisfy :: Stream s m Char => (Char -> Bool) -> ParsecT s u m CharStreamsmCharCharBoolParsecTsumCharThe parser satisfy f succeeds for any character for which the supplied function f returns True. Returns the character that is actually parsed. ? SampleVartype  SampleVar a = MVar (Int, MVar a)LSample variables are slightly different from a normal MVar:
  • Reading an empty SampleVar causes the reader to block. (same as takeMVar on empty MVar)
  • Reading a filled SampleVar empties it and returns value. (same as takeMVar)
  • Writing to an empty SampleVar fills it with a value, and potentially, wakes up a blocked reader (same as for putMVar on empty MVar).
  • Writing to a filled SampleVar overwrites the current value. (different from putMVar on full MVar.)
samplesample :: Html -> HtmlHtmlHtmlsamplesample :: Html -> HtmlHtmlHtmlsamplesample :: Html -> Html:+HtmlHtml Safetydata Safetyj safesafe :: SafetySafety SafeSafe :: SafetySafetyrwhnfrwhnf ::  Strategy a+Strategya/Reduces its argument to weak head normal form. 4 runtimeError runtimeError :: Addr# -> aAddr#a runTestTT runTestTT :: Test ->  IO CountsTestIOCounts runTestText runTestText ::  PutText st -> Test -> IO (Counts, st)PutTextstTestIO(,)CountsstrunTests runTests :: String ->  TestOptions -> [TestOptions -> IO TestResult] -> IO ()KString TestOptions[] TestOptionsIO TestResultIO()=Prints a one line summary of various tests with common theme  runSTUArray runSTUArray :: Ix i => ST s (STUArray s i e) ->  UArray i ey?IxiSTsSTUArraysieUArrayieA safe way to create and work with an unboxed mutable array before returning an immutable array for later perusal. This function avoids copying the array before returning it - it uses unsafeFreeze internally, but this wrapper is a safe interface to that function.  runSTArray runSTArray :: Ix i => ST s (STArray s i e) ->  Array i e* IxiSTsSTArraysieArrayieA safe way to create and work with a mutable array before returning an immutable array for later perusal. This function avoids copying the array before returning it - it uses unsafeFreeze internally, but this wrapper is a safe interface to that function. GrunSTrunST :: ST s a -> a!r!STsaaReturn the value computed by a state transformer computation. The forall ensures that the internal state used by the ST computation is inaccessible to the rest of the program.  runReaderT runReaderT ::  ReaderT r m a -> r -> m a""ReaderTrmarma runReader runReader ::  Reader r a -> r -> a<###ReaderraraRuns Reader and extracts the final value from it. To extract the value apply (runReader reader) to an environment value. Parameters:
  • A Reader to run.
  • An initial environment.
 runQrunQ ::  Quasi m => Q a -> m a$m$QuasimQamarunPT runPT :: Stream s m t => ParsecT s u m a -> u ->  SourceName -> s -> m (Either ParseError a)%-%StreamsmtParsecTsumau SourceNamesmEither ParseErrorarunParserWithMode runParserWithMode ::  ParseMode -> P a -> String ->  ParseResult aD&& ParseModePaString ParseResulta runParserT  runParserT :: Stream s m t => ParsecT s u m a -> u ->  SourceName -> s -> m (Either ParseError a)L'&StreamsmtParsecTsumau SourceNamesmEither ParseErroraThe most general way to run a parser. runParserT p state filePath input runs parser p on the input list of tokens input, obtained from source filePath with the initial user state st. The filePath is only used in error messages and may be the empty string. Returns a computation in the underlying monad m that return either a ParseError (Left) or a value of type a (Right).  runParser  runParser :: Stream s Identity t =>  Parsec s u a -> u ->  SourceName -> s -> Either ParseError a"*)StreamsIdentitytParsecsuau SourceNamesEither ParseErrora'The most general way to run a parser over the Identity monad. runParser p state filePath input runs parser p on the input list of tokens input, obtained from source filePath with the initial user state st. The filePath is only used in error messages and may be the empty string. Returns either a ParseError (Left) or a value of type a (Right).
parseFromFile p fname
  = do{ input <- readFile fname
      ; return (runParser p () fname input)
      }
 runParser runParser :: P a -> String ->  ParseResult a,,PaString ParseResulta runParsecT runParsecT :: ParsecT s u m a ->  State s u -> m (Consumed (m (Reply s u a)))-Z-ParsecTsumaStatesumConsumedmReplysuarunP runP :: Stream s Identity t =>  Parsec s u a -> u ->  SourceName -> s -> Either ParseError a.J.StreamsIdentitytParsecsuau SourceNamesEither ParseErrorarunListTrunListT ::  ListT m a -> m [a]/.ListTmam[]a runIOrunIO :: IO a -> Q aj/V/IOaQaThe runIO function lets you run an I/O computation in the Q monad. Take care: you are guaranteed the ordering of calls to runIO within a single Q computation, but not about the order in which splices are run. Note: for various murky reasons, stdout and stderr handles are not necesarily flushed when the compiler finishes running, so you should flush them yourself.  runIdentity runIdentity ::  Identity a -> a\1G1Identityaa runErrorT runErrorT ::  ErrorT e m a -> m (Either e a)11ErrorTemamEitherearunContTrunContT ::  ContT r m a ->  (a -> m r) -> m rs2I2ContTrmaamrmrrunContrunCont :: Cont r a -> (a -> r) -> r22ContraarrRuns a CPS computation, returns its result after applying the final continuation to it. Parameters:
  • a continuation computation (Cont).
  • the final continuation, which produces the final result (often id).
 runCGITrunCGIT ::  Monad m => CGIT m a ->  CGIRequest -> m (Headers, a)4\4MonadmCGITma CGIRequestm(,)HeadersaRun a CGI action.  runCGIEnvFPS  runCGIEnvFPS ::  Monad m => [(String, String)] ->  ByteString -> &(CGIRequest -> m (Headers, CGIResult)) ->  m ByteString5i5Monadm[](,)StringString ByteString CGIRequestm(,)Headers CGIResultm ByteStringVRuns a CGI action in a given environment. Uses lazy ByteStrings for input and output. runrun :: Testable a => a ->  TestOptions ->  IO TestResult66Testableaa TestOptionsIO TestResult\Run the test. Here we use the same random number each time, so we get reproducable results! rulesrules :: String -> HtmlAttr7y7StringHtmlAttrrulesrules :: String -> HtmlAttr77StringHtmlAttrrulesrules :: String -> HtmlAttrJ858StringHtmlAttr rspReason rspReason ::  Response a -> String88ResponseaString rspHeaders rspHeaders ::  Response a -> [Header].99Responsea[]HeaderrspCoderspCode ::  Response a ->  ResponseCode99Responsea ResponseCoderspBodyrspBody ::  Response a -> a:9ResponseaarqURIrqURI ::  Request a -> URI_:I:RequestaURImight need changing in future 1) to support * uri in OPTIONS request 2) transparent support for both relative & absolute uris, although this should already work (leave scheme & host parts empty). rqMethodrqMethod ::  Request a ->  RequestMethod;;Requesta RequestMethod rqHeaders rqHeaders ::  Request a -> [Header]<;Requesta[]HeaderrqBodyrqBody ::  Request a -> aw<c<Requestaayrparenrparen :: Doc<<DocA ')' character rowspanrowspan :: Int -> HtmlAttr= =IntHtmlAttrrowspanrowspan :: Int -> HtmlAttry=g=IntHtmlAttrrowspanrowspan :: Int -> HtmlAttr==IntHtmlAttrrowsrows :: String -> HtmlAttr1>>StringHtmlAttrrowsrows :: String -> HtmlAttr>x>StringHtmlAttrrowsrows :: String -> HtmlAttr>>StringHtmlAttrrnfrnf ::  NFData a =>  Strategy aG?*?NFDataaStrategya RightSquare RightSquare :: Token??Token RightParen RightParen :: Token??Token RightCurly RightCurly :: Token@@Token RightArrow RightArrow :: Tokena@Y@TokenyribbonsPerLineribbonsPerLine :: Style -> Float@@StyleFloat&Ratio of ribbon length to line length greversereverse ::  ByteString ->  ByteString]ABA ByteString ByteString]O(n) reverse xs returns the elements of xs in reverse order. freversereverse ::  ByteString ->  ByteString(B B ByteString ByteStringiO(n) reverse xs efficiently returns the elements of xs in reverse order. revrev :: String -> HtmlAttrBBStringHtmlAttrrevrev :: String -> HtmlAttrEC0CStringHtmlAttrrevrev :: String -> HtmlAttrCCStringHtmlAttrW ReturnInOrder ReturnInOrder ::  (String -> a) ->  ArgOrder a DDStringaArgOrderawrap non-options into options Areturnreturn ::  Monad m => a -> m aDDMonadmamaRetryRetry :: ResponseNextStepDDResponseNextStepretrieveHeadersretrieveHeaders :: HasHeaders a =>  HeaderName -> a -> [Header]EtE HasHeadersa HeaderNamea[]Header_retrieveHeaders hdrNm x gets a list of headers with HeaderName hdrNm. responseParseErrorresponseParseError :: String -> String -> Result aFyFStringStringResultaResponseNextStepdata ResponseNextStepF ResponseDatatype  ResponseData# = (ResponseCode, String, [Header])>GResponseData contains the head of a response payload; HTTP response code, accompanying text description + header fields.  ResponseCodetype  ResponseCode = (Int, Int, Int)HaFor easy pattern matching, HTTP response codes xyz are represented as (x,y,z). Response_Stringtype Response_String = Response StringHResponse Response ::  ResponseCode -> String -> [Header] -> a ->  Response aIQI ResponseCodeString[]HeaderaResponseaResponsedata Response aIAn HTTP Response. The Show instance of this type is used for message serialisation, which means no body data is output, additionally the output will show an HTTP version of 1.1 instead of the actual version returned by a server. # respondHTTP respondHTTP ::  Stream s => s -> Response_String -> IO ()NK KStreamssResponse_StringIO()}Very simple function, send a HTTP response over the given stream. This could be improved on to use different transfer types. $ respondHTTP respondHTTP :: HStream ty => HandleStream ty ->  Response ty -> IO ()LKLHStreamty HandleStreamtyResponsetyIO()respondHTTP hStream httpResponse transmits an HTTP Response over the HandleStream hStream. It could be used to implement simple web server interactions, performing the dual role to sendHTTP. . resetErrno resetErrno :: IO ()MMIO()?Reset the current thread's errno value to eOK. resetreset :: String -> String -> HtmliNPNStringStringHtmlresetreset :: String -> String -> HtmlNNStringStringHtmlresetreset :: String -> String -> HtmlIO0OStringStringHtmlresetreset ::  ReadPrec a ->  ReadPrec aOOReadPrecaReadPreca'Resets the precedence context to zero. resetreset :: EditLine -> IO ()?P(PEditLineIO()sReset the terminal and the parser. This should be called after an error which may have upset the terminal's state. reservedOpNamesreservedOpNames :: GenLanguageDef s u m -> [String]IQQGenLanguageDefsum[]String The list of reserved operators.  reservedOp reservedOp :: GenTokenParser s u m -> String -> ParsecT s u m ()"RQGenTokenParsersumStringParsecTsum()The lexeme parser reservedOp name parses symbol name, but it also checks that the name is not a prefix of a valid operator. A reservedOp is treated as a single token using try.  reservedNames reservedNames :: GenLanguageDef s u m -> [String]SeSGenLanguageDefsum[]String"The list of reserved identifiers. reservedreserved :: GenTokenParser s u m -> String -> ParsecT s u m ()hT*TGenTokenParsersumStringParsecTsum()The lexeme parser reserved name parses symbol name, but it also checks that the name is not a prefix of a valid identifier. A reserved word is treated as a single token using try.  reqURIAuth reqURIAuth ::  Request ty -> URIAuthUURequesttyURIAuthW RequireOrder RequireOrder ::  ArgOrder aVUArgOrdera,no option processing after first non-option RequestNormalizertype RequestNormalizer ty9 = NormalizeRequestOptions ty -> Request ty -> Request tyVpRequestNormalizer is the shape of a (pure) function that rewrites a request into some normalized form.  RequestMethoddata  RequestMethodmWThe HTTP request method, to be used in the Request object. We are missing a few of the stranger methods, but these are not really necessary until we add full TLS.  RequestDatatype  RequestData! = (RequestMethod, URI, [Header])tX{RequestData contains the head of a HTTP request; method, its URL along with the auxillary/supporting header data. Request_Stringtype Request_String = Request StringBYRequest Request :: URI ->  RequestMethod -> [Header] -> a ->  Request aYYURI RequestMethod[]HeaderaRequestaRequestdata Request a1Z~An HTTP Request. The Show instance of this type is used for message serialisation, which means no body data is output. WReqArgReqArg ::  (String -> a) -> String ->  ArgDescr a<[[StringaStringArgDescraoption requires argument  ReportStarttype  ReportStart us = State -> us -> IO us[ ReportProblemtype  ReportProblem us! = String -> State -> us -> IO us\ reportreport :: Bool -> String -> Q ()\f\BoolStringQ()Replydata Reply s u a\g replicate replicate :: Int64 -> Word8 ->  ByteString4]]Int64Word8 ByteString{O(n) replicate n x is a ByteString of length n with x the value of every element. f replicate replicate :: Int -> Char ->  ByteString)^^IntChar ByteStringO(n) replicate n x is a ByteString of length n with x the value of every element. The following holds:
replicate w c = unfoldr w (\u -> Just (u,u)) c
This implemenation uses memset(3)  replaceHeader replaceHeader :: HasHeaders a => HeaderSetter a__ HasHeadersa HeaderSetteraureplaceHeader hdr val o replaces the header hdr with the value val, dropping any existing qreplaceFileNamereplaceFileName :: FilePath -> String -> FilePath``FilePathStringFilePathVSet the filename.
Valid x => replaceFileName x (takeFileName x) == x
rreplaceFileNamereplaceFileName :: FilePath -> String -> FilePathasaFilePathStringFilePathVSet the filename.
Valid x => replaceFileName x (takeFileName x) == x
qreplaceExtensionreplaceExtension :: FilePath -> String -> FilePathzb[bFilePathStringFilePath@Set the extension of a file, overwriting one if already present.
replaceExtension "file.txt" ".bob" == "file.bob"
replaceExtension "file.txt" "bob" == "file.bob"
replaceExtension "file" ".bob" == "file.bob"
replaceExtension "file.txt" "" == "file"
replaceExtension "file.fred.bob" "txt" == "file.fred.txt"
rreplaceExtensionreplaceExtension :: FilePath -> String -> FilePathLd-dFilePathStringFilePath@Set the extension of a file, overwriting one if already present.
replaceExtension "file.txt" ".bob" == "file.bob"
replaceExtension "file.txt" "bob" == "file.bob"
replaceExtension "file" ".bob" == "file.bob"
replaceExtension "file.txt" "" == "file"
replaceExtension "file.fred.bob" "txt" == "file.fred.txt"
qreplaceDirectoryreplaceDirectory :: FilePath -> String -> FilePathfeFilePathStringFilePathwSet the directory, keeping the filename the same.
replaceDirectory x (takeDirectory x) `equalFilePath` x
rreplaceDirectoryreplaceDirectory :: FilePath -> String -> FilePath'ggFilePathStringFilePathwSet the directory, keeping the filename the same.
replaceDirectory x (takeDirectory x) `equalFilePath` x
replaceDiffArrayreplaceDiffArray :: (MArray a e IO, Ix i) => IOToDiffArray a i e ->  [(Int, e)] -> IO (IOToDiffArray a i e)hIhMArrayaeIOIxi IOToDiffArrayaie[](,)InteIO IOToDiffArrayaieqreplaceBaseNamereplaceBaseName :: FilePath -> String -> FilePathHi)iFilePathStringFilePathSet the base name.
replaceBaseName "file/test.txt" "bob" == "file/bob.txt"
replaceBaseName "fred" "bill" == "bill"
replaceBaseName "/dave/fred/bob.gz.tar" "new" == "/dave/fred/new.tar"
replaceBaseName x (takeBaseName x) == x
rreplaceBaseNamereplaceBaseName :: FilePath -> String -> FilePathjjFilePathStringFilePathSet the base name.
replaceBaseName "file/test.txt" "bob" == "file/bob.txt"
replaceBaseName "fred" "bill" == "bill"
replaceBaseName "/dave/fred/bob.gz.tar" "new" == "/dave/fred/new.tar"
replaceBaseName x (takeBaseName x) == x
 replace replace :: Eq a => a -> a -> [a] -> [a]AllEqaaa[]a[]a>Replaces all instances of a value in a list by another value. grepeatrepeat :: Word8 ->  ByteStringllWord8 ByteString`repeat x is an infinite ByteString, with x the value of every element. y renderStyle renderStyle :: Style -> Doc -> StringmmStyleDocString9Render the document as a string using a specified style. renderHtmlWithLanguagerenderHtmlWithLanguage ::  HTML html => String -> html -> StringnxnHTMLhtmlStringhtmlStringROutputs indented XHTML. Because space matters in HTML, the output is quite messy. renderHtmlFragmentrenderHtmlFragment ::  HTML html => html -> String|o]oHTMLhtmlhtmlStringRender a piece of indented HTML without adding a DOCTYPE declaration or root element. Only adds whitespace where it does not change the meaning of the document. renderHtmlFragmentrenderHtmlFragment ::  HTML html => html -> StringppHTMLhtmlhtmlStringRender a piece of indented HTML without adding a DOCTYPE declaration or root element. Only adds whitespace where it does not change the meaning of the document. renderHtmlFragmentrenderHtmlFragment ::  HTML html => html -> StringqqHTMLhtmlhtmlStringRender a piece of indented HTML without adding a DOCTYPE declaration or root element. Only adds whitespace where it does not change the meaning of the document.  renderHtml renderHtml ::  HTML html => html -> StringrrHTMLhtmlhtmlStringQOutputs indented HTML. Because space matters in HTML, the output is quite messy.  renderHtml renderHtml ::  HTML html => html -> StringssHTMLhtmlhtmlStringQOutputs indented HTML. Because space matters in HTML, the output is quite messy.  renderHtml renderHtml ::  HTML html => html -> StringtitHTMLhtmlhtmlStringQOutputs indented HTML. Because space matters in HTML, the output is quite messy. yrenderrender :: Doc -> String/uuDocStringARenders the document as a string using the default style. relrel :: String -> HtmlAttruuStringHtmlAttrrelrel :: String -> HtmlAttr$vvStringHtmlAttrrelrel :: String -> HtmlAttr~vivStringHtmlAttr reifyreify :: Name -> Q InfovvNameQInfo8reify looks up information about the Name redred :: StringIw@wString4 RecUpdError RecUpdError :: String ->  RecUpdErrorwwString RecUpdError4 RecUpdErrordata  RecUpdErrorw recUpdErecUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQxUxExpQ[]Q(,)NameExpExpQ RecUpdERecUpdE :: Exp ->  [FieldExp] -> ExpxxExp[]FieldExpExp4 recSelError recSelError :: Addr# -> aSyFyAddr#a4 RecSelError RecSelError :: String ->  RecSelErroryyString RecSelError4 RecSelErrordata  RecSelErrory recPrecP :: Name ->  [FieldPatQ] -> PatQuzUzName[] FieldPatQPatQ RecPRecP :: Name ->  [FieldPat] -> PatzzName[]FieldPatPat~ recoverQrecoverQ :: MonadPlus m => r -> GenericQ (m r) -> GenericQ (m r){b{ MonadPlusmrGenericQmrGenericQmr8Recover from the failure of monadic query by a constant ~ recoverMp recoverMp :: MonadPlus m =>  GenericM m ->  GenericM mo|>| MonadPlusmGenericMmGenericMm?Recover from the failure of monadic transformation by identity  recoverrecover :: Q a -> Q a -> Q a}}QaQaQa# receiveHTTP receiveHTTP ::  Stream s => s -> IO (Result Request_String)}}StreamssIOResultRequest_StringeReceive and parse a HTTP request from the given Stream. Should be used for server side interactions. $ receiveHTTP receiveHTTP :: HStream bufTy => HandleStream bufTy -> IO (Result (Request bufTy))~~HStreambufTy HandleStreambufTyIOResultRequestbufTybreceiveHTTP hStream reads a Request from the HandleStream hStream 4 recConError recConError :: Addr# -> aAddr#a4 RecConError RecConError :: String ->  RecConError" String RecConError4 RecConErrordata  RecConError\ recConErecConE :: Name -> [Q (Name, Exp)] -> ExpQName[]Q(,)NameExpExpQ RecConERecConE :: Name ->  [FieldExp] -> ExpdFName[]FieldExpExp recCrecC :: Name -> [VarStrictTypeQ] -> ConQName[]VarStrictTypeQConQ RecCRecC :: Name -> [VarStrictType] -> CondAName[] VarStrictTypeCon) reallocBytes reallocBytes :: Ptr a -> Int ->  IO (Ptr a)˂PtraIntIOPtramResize a memory area that was allocated with malloc or mallocBytes to the given size. The returned pointer may refer to an entirely different memory area, but will be sufficiently aligned for any of the basic foreign types that fits into a memory block of the given size. The contents of the referenced memory area will be the same as of the original pointer up to the minimum of the original size and the given size. If the pointer argument to reallocBytes is nullPtr, reallocBytes behaves like malloc. If the requested size is 0, reallocBytes behaves like free. , reallocArray0 reallocArray0 :: Storable a => Ptr a -> Int ->  IO (Ptr a)хStorableaPtraIntIOPtraLAdjust the size of an array including an extra position for the end marker. , reallocArray reallocArray :: Storable a => Ptr a -> Int ->  IO (Ptr a)ÆStorableaPtraIntIOPtraAdjust the size of an array )reallocrealloc :: Storable b => Ptr a ->  IO (Ptr b)lStorablebPtraIOPtrbResize a memory area that was allocated with malloc or mallocBytes to the size needed to store values of type b. The returned pointer may refer to an entirely different memory area, but will be suitably aligned to hold values of type b. The contents of the referenced memory area will be the same as of the original pointer up to the minimum of the original size and the size of values of type b. If the argument to realloc is nullPtr, realloc behaves like malloc. ureadTixreadTix :: String -> IO (Maybe Tix)!StringIOMaybeTixreadTime readTime :: ParseTime t =>  TimeLocale -> String -> String -> tҊ ParseTimet TimeLocaleStringStringtParse a time value given a format string. Fails if the input could not be parsed using the given format. See parseTime for details. readTillEmpty2 readTillEmpty2 ::  BufferOp a ->  IO (Result a) -> [a] -> IO (Result [a])2BufferOpaIOResulta[]aIOResult[]aRead lines until an empty line (CRLF), also accepts a connection close as end of input, which is not an HTTP/1.1 compliant thing to do - so probably indicates an error condition. readTillEmpty1readTillEmpty1 ::  BufferOp a ->  IO (Result a) -> IO (Result [a])dBufferOpaIOResultaIOResult[]aDRemove leading crlfs then call readTillEmpty2 (not required by RFC) P readSTRef readSTRef ::  STRef s a -> ST s aV8STRefsaSTsa readsTime readsTime :: ParseTime t =>  TimeLocale -> String -> ReadS tˎ ParseTimet TimeLocaleStringReadStLParse a time value given a format string. See parseTime for details. ? readSampleVar readSampleVar ::  SampleVar a -> IO a SampleVaraIOa?Wait for a value to become available, then take it and return.  readS_to_Prec readS_to_Prec :: (Int -> ReadS a) ->  ReadPrec adIntReadSaReadPreca readS_to_P readS_to_P :: ReadS a -> ReadP aܐReadSaReadPaConverts a Haskell ReadS-style function into a parser. Warning: This introduces local backtracking in the resulting parser, and therefore a possible inefficiency. ReadStype ReadS a = String -> [(a, String)] A parser for a type a, represented as a function that takes a String and returns a list of possible parses as (a,String) pairs. Note that this kind of backtracking parser is very inefficient; reading a large structure may be quite slow (cf ReadP).  readPrec_to_S readPrec_to_S ::  ReadPrec a -> Int -> ReadS aqReadPrecaIntReadSa readPrec_to_P readPrec_to_P ::  ReadPrec a -> Int -> ReadP a"ReadPrecaIntReadPaReadPrecdata ReadPrec aX readP_to_S readP_to_S :: ReadP a -> ReadS aƔReadPaReadSaConverts a parser into a Haskell ReadS-style function. This is the main way in which you can "run" a ReadP parser: the expanded type is readP_to_S :: ReadP a -> String -> [(a,String)]  readP_to_Prec readP_to_Prec :: (Int -> ReadP a) ->  ReadPrec a IntReadPaReadPrecaReadPdata ReadP aPreadOctPreadOctP ::  Num a => ReadP aNumaReadPa;readMVarreadMVar :: MVar a -> IO aMVaraIOaThis is a combination of takeMVar and putMVar; ie. it takes the value from the MVar, puts it back, and also returns it. vreadMixreadMix :: [String] -> Either String TixModule -> IO MixD []StringEitherString TixModuleIOMixRead a mix file. readIntP readIntP ::  Num a => a -> (Char -> Bool) ->  (Char -> Int) -> ReadP aژNumaaCharBoolCharIntReadPaf readInteger readInteger ::  ByteString -> Maybe (Integer, ByteString)} ByteStringMaybe(,)Integer ByteStringreadInteger reads an Integer from the beginning of the ByteString. If there is no integer at the beginning of the string, it returns Nothing, otherwise it just returns the int read, and the rest of the string. freadIntreadInt ::  ByteString -> Maybe (Int, ByteString) ByteStringMaybe(,)Int ByteStringreadInt reads an Int from the beginning of the ByteString. If there is no integer at the beginning of the string, it returns Nothing, otherwise it just returns the int read, and the rest of the string. readHexPreadHexP ::  Num a => ReadP a9"NumaReadPagreadFilereadFile :: FilePath ->  IO ByteStringFilePathIO ByteStringsRead an entire file lazily into a ByteString. The Handle will be held open until EOF is encountered. freadFilereadFile :: FilePath ->  IO ByteStringwFilePathIO ByteStringRead an entire file strictly into a ByteString. This is far more efficient than reading the characters into a String and then using pack. It also may be more efficient than opening the file and reading it using hGet. ReaderTReaderT ::  (r -> m a) ->  ReaderT r m aڞrmaReaderTrmaReaderTnewtype ReaderT r m a9dThe reader monad transformer. Can be used to add environment reading functionality to other monads. ReaderReader :: (r -> a) ->  Reader r araReaderraReadernewtype Reader r a>hThe parameterizable reader monad. The return function creates a Reader that ignores the environment, and produces the given value. The binding operator >>= produces a Reader that uses the environment to extract the value its left-hand side, and then applies the bound function to that value in the same environment.  readDiffArray readDiffArray :: (MArray a e IO, Ix i) => IOToDiffArray a i e -> Int -> IO ex0MArrayaeIOIxi IOToDiffArrayaieIntIOereadDecPreadDecP ::  Num a => ReadP aԢNumaReadPa readCookies readCookies :: String -> [(String, String)][3String[](,)StringString1Gets all the cookies from a Cookie: header value <readChanreadChan :: Chan a -> IO aףChanaIOa*Read the next value from the Chan.  readArray readArray :: (MArray a e m, Ix i) => a i e -> i -> m eMArrayaemIxiaieime%Read an element from a mutable array yrbrackrbrack :: DocDocA ']' character yrbracerbrace :: Docf`DocA '}' character  rationalL rationalL :: Rational -> Lit֥ĥRationalLit RationalL RationalL :: Rational -> Lit6$RationalLityrationalrational :: Rational -> DocRationalDoc(
rational n = text (show n)
RatRat :: Rational -> LexemeRationalLexemeFloating point literal  RangeQtype RangeQ = Q Rangei Rangedata Rangeradioradio :: String -> String -> HtmlStringStringHtmlradioradio :: String -> String -> Htmlw^StringStringHtmlradioradio :: String -> String -> HtmlΨStringStringHtmlr0r0 ::  Strategy a*Strategya/Performs no evaluation of its argument. QVarSymQVarSym :: (String, String) -> TokenΩ(,)StringStringTokenQVarIdQVarId :: (String, String) -> TokenA (,)StringStringTokenyquotesquotes :: Doc -> DocDocDoc Wrap document in '...' quotequote :: Html -> HtmlHtmlHtmlquotequote :: Html -> HtmlUFHtmlHtmlquotequote :: Html -> HtmlHtmlHtmlv QualBinBox QualBinBox :: CondBoxCondBoxQualQual :: Module -> HsName -> HsQNameeIModuleHsNameHsQName"name qualified with a module name >QSemNdata QSemNA QSemN is a quantity semaphore, in which the available "quantity" may be signalled or waited for in arbitrary amounts. =QSemdata QSem`vA QSem is a simple quantity semaphore, in which the available "quantity" is always dealt with in units of one. QConSymQConSym :: (String, String) -> TokenK*(,)StringStringTokenQConIdQConId :: (String, String) -> Token(,)StringStringToken Qdata Q a pwrapperpwrapper :: PortID -> ([(String, String)] -> IO Html) -> IO ()]PortID[](,)StringStringIOHtmlIO()Compatibility wrapper for the old CGI interface. Runs a simple CGI server. Note: if using Windows, you might need to wrap Network.withSocketsDo around main. putTextToShowSputTextToShowS ::  PutText ShowSPutTextShowSputTextToHandleputTextToHandle :: Handle -> Bool ->  PutText Int, HandleBoolPutTextIntPutTextPutText :: (String -> Bool -> st -> IO st) -> st ->  PutText stֱStringBoolstIOststPutTextstPutTextdata PutText st gputStrLnputStrLn ::  ByteString -> IO ()t[ ByteStringIO()7Write a ByteString to stdout, appending a newline byte fputStrLnputStrLn ::  ByteString -> IO () ByteStringIO()7Write a ByteString to stdout, appending a newline byte gputStrputStr ::  ByteString -> IO () ByteStringIO()Write a ByteString to stdout fputStrputStr ::  ByteString -> IO ()2 ByteStringIO()Write a ByteString to stdout putStateputState ::  Monad m => u -> ParsecT s u m ()ִMonadmuParsecTsum()8putState st set the user state to st. ;putMVarputMVar :: MVar a -> a -> IO ()eMVaraaIO()Put a value into an MVar. If the MVar is currently full, putMVar will wait until it becomes empty. There are two further important properties of putMVar:
  • putMVar is single-wakeup. That is, if there are multiple threads blocked in putMVar, and the MVar becomes empty, only one thread will be woken up. The runtime guarantees that the woken thread completes its putMVar operation.
  • When multiple threads are blocked on an MVar, they are woken up in FIFO order. This is useful for providing fairness properties of abstractions built using MVars.
PUTPUT ::  RequestMethodK; RequestMethodpushCurrentContextpushCurrentContext :: P ()P() pushContextL pushContextL ::  LexContext -> Lex a () LexContextLexa()purplepurple :: StringZQStringy punctuate punctuate :: Doc -> [Doc] -> [Doc]ԹDoc[]Doc[]Doc`
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
PuncPunc :: String -> LexemeyStringLexeme=Punctuation or reserved symbol, e.g. (, :: yptextptext :: String -> Doc StringDoc4An obsolete function, now identical to text. yPStrPStr :: String ->  TextDetailsString TextDetailsbPS PS :: ForeignPtr Word8 -> Int -> Int ->  ByteStringN  ForeignPtrWord8IntInt ByteString3 ProcessIDtype  ProcessID = CPid3ProcessGroupIDtype ProcessGroupID = CPidּ PrimTyConI  PrimTyConI :: Name -> Int -> Bool -> Info\BNameIntBoolInfo primHtmlChar primHtmlChar :: String -> HtmlStringHtml primHtmlChar primHtmlChar :: String -> Html$StringHtml primHtmlChar primHtmlChar :: String -> HtmlwStringHtmlprimHtmlprimHtml :: String -> HtmlӾStringHtmlThis is not processed for special chars. use stringToHtml or lineToHtml instead, for user strings, because they understand special chars, like <. primHtmlprimHtml :: String -> HtmlԿStringHtmlThis is not processed for special chars. use stringToHtml or lineToHtml instead, for user strings, because they understand special chars, like <. primHtmlprimHtml :: String -> HtmlStringHtmlThis is not processed for special chars. use stringToHtml or lineToHtml instead, for user strings, because they understand special chars, like <. prettyPrintWithModeprettyPrintWithMode ::  Pretty a => PPHsMode -> a -> String. PrettyaPPHsModeaString6pretty-print with the default style and a given mode. prettyPrintStyleMode prettyPrintStyleMode ::  Pretty a => Style -> PPHsMode -> a -> String!PrettyaStylePPHsModeaString*pretty-print with a given style and mode.  prettyPrint prettyPrint ::  Pretty a => a -> StringPrettyaaString<pretty-print with the default style and defaultMode. prettyHtmlFragmentprettyHtmlFragment ::  HTML html => html -> StringhHTMLhtmlhtmlStringfRender a piece of indented HTML without adding a DOCTYPE declaration or a root element. The indentation is done inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using showHtmlFragment or renderHtmlFragment. prettyHtmlFragmentprettyHtmlFragment ::  HTML html => html -> StringxYHTMLhtmlhtmlStringfRender a piece of indented HTML without adding a DOCTYPE declaration or a root element. The indentation is done inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using showHtmlFragment or renderHtmlFragment. prettyHtmlFragmentprettyHtmlFragment ::  HTML html => html -> StringiJHTMLhtmlhtmlStringfRender a piece of indented HTML without adding a DOCTYPE declaration or a root element. The indentation is done inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using showHtmlFragment or renderHtmlFragment.  prettyHtml prettyHtml ::  HTML html => html -> StringJ+HTMLhtmlhtmlStringOutputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using showHtml or renderHtml.  prettyHtml prettyHtml ::  HTML html => html -> StringHTMLhtmlhtmlStringOutputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using showHtml or renderHtml.  prettyHtml prettyHtml ::  HTML html => html -> String\=HTMLhtmlhtmlStringOutputs indented HTML, with indentation inside elements. This can change the meaning of the HTML document, and is mostly useful for debugging the HTML output. The implementation is inefficient, and you are normally better off using showHtml or renderHtml. Prettyclass Pretty ajThings that can be pretty-printed, including all the syntactic objects in Language.Haskell.Syntax.  prelude_mod prelude_mod :: ModuleQHModulePrefixPrefix :: ParsecT s u m (a -> a) -> Operator s u m aParsecTsumaaOperatorsumaprecprec :: Prec ->  ReadPrec a ->  ReadPrec aoHPrecReadPrecaReadPreca(prec n p) checks whether the precedence context is less than or equal to n, and
  • if not, fails
  • if so, parses p in context n.
Prectype Prec = Intbprepre :: Html -> HtmlHtmlHtmlprepre :: Html -> HtmlHtmlHtmlprepre :: Html -> HtmlL=HtmlHtml PPSemiColon PPSemiColon :: PPLayoutPPLayoutclassical layout made explicit  pprPatpprPat ::  Precedence -> Pat -> Doc+ PrecedencePatDoc pprParendType pprParendType :: Type -> Doc}TypeDoc pprLitpprLit ::  Precedence -> Lit -> Doc PrecedenceLitDoc pprintpprint ::  Ppr a => a -> StringbJPpraaString pprExppprExp ::  Precedence -> Exp -> Doc PrecedenceExpDoc ppr_listppr_list ::  Ppr a => [a] -> Doc?$Ppra[]aDoc pprppr ::  Ppr a => a -> DocPpraaDoc Pprclass Ppr a PPOffsideRule PPOffsideRule :: PPLayout PPLayoutclassical layout  PPNoLayout PPNoLayout :: PPLayouttiPPLayouteverything on a single line PPLayoutdata PPLayout Varieties of layout we can use. PPInLinePPInLine :: PPLayout,!PPLayout)inline decls, with newlines between them PPHsModePPHsMode :: Indent -> Indent -> Indent -> Indent -> Indent -> Indent -> Bool -> PPLayout -> Bool ->  Bool -> PPHsModeB IndentIndentIndentIndentIndentIndentBoolPPLayoutBoolBoolPPHsModePPHsModedata PPHsModetPretty-printing parameters. Note: the onsideIndent must be positive and less than all other indents. PostfixPostfix :: ParsecT s u m (a -> a) -> Operator s u m aParsecTsumaaOperatorsumaPOSTPOST ::  RequestMethod) RequestMethod PortNumbernewtype  PortNumberdPortNumPortNum :: Word16 ->  PortNumberWord16 PortNumberportport ::  URIAuthority ->  Maybe Int7 URIAuthorityMaybeInt popContextL popContextL :: String -> Lex a ()StringLexa() popContext popContext :: P ()P()0pooledReallocBytes pooledReallocBytes :: Pool -> Ptr a -> Int ->  IO (Ptr a)oPoolPtraIntIOPtraFAdjust the storage area for an element in the pool to the given size. 0pooledReallocArray0 pooledReallocArray0 :: Storable a => Pool -> Ptr a -> Int ->  IO (Ptr a)pStorableaPoolPtraIntIOPtraBAdjust the size of an array with an end marker in the given pool. 0pooledReallocArray pooledReallocArray :: Storable a => Pool -> Ptr a -> Int ->  IO (Ptr a)zStorableaPoolPtraIntIOPtra/Adjust the size of an array in the given pool. 0 pooledRealloc pooledRealloc :: Storable a => Pool -> Ptr a ->  IO (Ptr a)XStorableaPoolPtraIOPtra[Adjust the storage area for an element in the pool to the given size of the required type. 0pooledNewArray0 pooledNewArray0 :: Storable a => Pool -> a -> [a] ->  IO (Ptr a)lStorableaPoola[]aIOPtraAllocate consecutive storage for a list of values in the given pool and marshal these values into it, terminating the end with the given marker. 0pooledNewArraypooledNewArray :: Storable a => Pool -> [a] ->  IO (Ptr a)StorableaPool[]aIOPtrafAllocate consecutive storage for a list of values in the given pool and marshal these values into it. 0 pooledNew pooledNew :: Storable a => Pool -> a ->  IO (Ptr a)StorableaPoolaIOPtraXAllocate storage for a value in the given pool and marshal the value into this storage. 0pooledMallocBytespooledMallocBytes :: Pool -> Int ->  IO (Ptr a)PoolIntIOPtra;Allocate the given number of bytes of storage in the pool. 0pooledMallocArray0pooledMallocArray0 :: Storable a => Pool -> Int ->  IO (Ptr a)xStorableaPoolIntIOPtraAllocate storage for the given number of elements of a storable type in the pool, but leave room for an extra element to signal the end of the array. 0pooledMallocArraypooledMallocArray :: Storable a => Pool -> Int ->  IO (Ptr a)StorableaPoolIntIOPtraRAllocate storage for the given number of elements of a storable type in the pool. 0 pooledMalloc pooledMalloc :: Storable a => Pool ->  IO (Ptr a)StorableaPoolIOPtraAllocate space for storable type in the given pool. The size of the area allocated is determined by the sizeOf method from the instance of Storable for the appropriate type. 0Pooldata PoolA memory pool.  pokeSockAddr pokeSockAddr :: Ptr a -> SockAddr -> IO ()D#PtraSockAddrIO()>Write the given SockAddr to the given memory location. , pokeArray0  pokeArray0 :: Storable a => a -> Ptr a -> [a] -> IO ()-StorableaaPtra[]aIO()aWrite the list elements consecutive into memory and terminate them with the given marker element , pokeArray pokeArray :: Storable a => Ptr a -> [a] -> IO ()'StorableaPtra[]aIO()0Write the list elements consecutive into memory picosecondsToDiffTimepicosecondsToDiffTime :: Integer -> DiffTimeIntegerDiffTime7Create a DiffTime from a number of picoseconds. pfailpfail ::  ReadPrec aWGReadPrecaAlways fails. pfailpfail :: ReadP aReadPaAlways fails. permutepermute :: Stream s Identity tok => StreamPermParser s st a ->  Parsec s st a2StreamsIdentitytokStreamPermParsersstaParsecsstaThe parser permute perm parses a permutation of parser described by perm. For example, suppose we want to parse a permutation of: an optional string of a's, the character b and an optional c. This can be described by:
test  = permute (tuple <$?> ("",many1 (char 'a'))
                       <||> char 'b' 
                       <|?> ('_',char 'c'))
      where
        tuple a b c  = (a,b,c)
WPermutePermute ::  ArgOrder aArgOrdera+freely intersperse options and non-options  PermParsertype  PermParser tok st a = StreamPermParser String st a3?Provided for backwards compatibility. The tok type is ignored. !permissionErrorTypepermissionErrorType ::  IOErrorType IOErrorTypeI/O error where the operation failed because the user does not have sufficient operating system privilege to perform that operation. performTestCaseperformTestCase ::  Assertion -> IO (Maybe (Bool, String)) AssertionIOMaybe(,)BoolString performTest performTest :: ReportStart us -> ReportProblem us -> ReportProblem us -> us -> Test -> IO (Counts, us) ReportStartus ReportProblemus ReportProblemususTestIO(,)Countsus peekSockAddr peekSockAddr ::  Ptr SockAddr ->  IO SockAddr{PtrSockAddrIOSockAddr7Read a SockAddr from the given memory location. -peekCWStringLenpeekCWStringLen ::  CWStringLen ->  IO StringW9 CWStringLenIOStringDMarshal a C wide string with explicit length into a Haskell string. - peekCWString peekCWString :: CWString ->  IO StringCWStringIOString>Marshal a NUL terminated C wide string into a Haskell string. -peekCStringLenpeekCStringLen ::  CStringLen ->  IO String CStringLenIOString?Marshal a C string with explicit length into a Haskell string. - peekCString peekCString :: CString ->  IO String{aCStringIOString9Marshal a NUL terminated C string into a Haskell string. -peekCAStringLenpeekCAStringLen ::  CStringLen ->  IO String3 CStringLenIOString?Marshal a C string with explicit length into a Haskell string. - peekCAString peekCAString :: CString ->  IO StringCStringIOString9Marshal a NUL terminated C string into a Haskell string. , peekArray0 peekArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO [a]StorableaEqaaPtraIO[]aHConvert an array terminated by the given end marker into a Haskell list , peekArray peekArray :: Storable a => Int -> Ptr a -> IO [a]{StorableaIntPtraIO[]aConvert an array of given length into a Haskell list. This version traverses the array backwards using an accumulating parameter, which uses constant stack space. The previous version using mapM needed linear stack space. 4PatternMatchFailPatternMatchFail :: String -> PatternMatchFail StringPatternMatchFail4PatternMatchFaildata PatternMatchFailQ PatQtype PatQ = Q PatqpathSeparatorspathSeparators :: [Char][]CharThe list of all possible separators.
Windows: pathSeparators == ['\\', '/']
Posix:   pathSeparators == ['/']
pathSeparator `elem` pathSeparators
rpathSeparatorspathSeparators :: [Char][]CharThe list of all possible separators.
Windows: pathSeparators == ['\\', '/']
Posix:   pathSeparators == ['/']
pathSeparator `elem` pathSeparators
q pathSeparator pathSeparator :: CharCharThe character that separates directories. In the case where more than one character is possible, pathSeparator is the 'ideal' one.
Windows: pathSeparator == '\\'
Posix:   pathSeparator ==  '/'
isPathSeparator pathSeparator
r pathSeparator pathSeparator :: CharCharThe character that separates directories. In the case where more than one character is possible, pathSeparator is the 'ideal' one.
Windows: pathSeparator == '\\'
Posix:   pathSeparator ==  '/'
isPathSeparator pathSeparator
pathpath :: State -> Path;+StatePathPathtype Path = [Node]r patGEpatGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)[]StmtQExpQQ(,)GuardExp patGpatG :: [StmtQ] -> GuardQ^F[]StmtQGuardQ PatGPatG :: [Stmt] -> Guard[]StmtGuard4patErrorpatError :: Addr# -> a Addr#a Patdata Pat6passwordpassword :: String -> HtmlStringHtmlpasswordpassword :: String -> HtmlStringHtmlpasswordpassword :: String -> HtmlJ9StringHtmlpasswordpassword ::  URIAuthority ->  Maybe String URIAuthorityMaybeString parZipWith  parZipWith ::  Strategy c ->  (a -> b -> c) -> [a] -> [b] -> [c]NStrategycabc[]a[]b[]cUZips together two lists using a function, and evaluates the result list in parallel.  parTriple  parTriple ::  Strategy a ->  Strategy b ->  Strategy c -> Strategy (a, b, c)fStrategyaStrategybStrategycStrategy(,,)abc@Apply three strategies to the elements of a triple in parallel. g partition partition :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)sWord8Bool ByteString(,) ByteString ByteStringO(n) The partition function takes a predicate a ByteString and returns the pair of ByteStrings with elements which do and do not satisfy the predicate, respectively; i.e.,
partition p bs == (filter p xs, filter (not . p) xs)
parseURIAuthorityparseURIAuthority :: String -> Maybe URIAuthority:StringMaybe URIAuthority&Parse the authority part of a URL.
RFC 1732, section 3.1:

      //<user>:<password>@<host>:<port>/<url-path>
 Some or all of the parts "<user>:<password>@", ":<password>",
 ":<port>", and "/<url-path>" may be excluded.
 parseTime  parseTime :: ParseTime t =>  TimeLocale -> String -> String -> Maybe t"  ParseTimet TimeLocaleStringStringMaybetParses a time value given a format string. Supports the same %-codes as formatTime. Leading and trailing whitespace is accepted. Case is not significant. Some variations in the input are accepted:
  • %z accepts any of -HHMM or -HH:MM.
  • %Z accepts any string of letters, or any of the formats accepted by %z.
 ParseTimeclass  ParseTime t NThe class of types which can be parsed given a UNIX-style time format string.  parseTest parseTest :: !(Stream s Identity t, Show a) =>  Parsec s () a -> s -> IO ()  StreamsIdentitytShowaParsecs()asIO()The expression parseTest p input applies a parser p against input input and prints the result to stdout. Used for testing parsers.  parserZero parserZero ::  Monad m => ParsecT s u m a  MonadmParsecTsumaparserZero always fails without consuming any input. parserZero is defined equal to the mzero member of the MonadPlus class and to the Control.Applicative.empty member of the Control.Applicative.Applicative class.  parserReturn parserReturn ::  Monad m => a -> ParsecT s u m amMonadmaParsecTsuma parserPlus parserPlus ::  Monad m => ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m asMonadmParsecTsumaParsecTsumaParsecTsuma parserFail parserFail ::  Monad m => String -> ParsecT s u m aMonadmStringParsecTsuma ParseResultdata  ParseResult aBThe result of a parse.  ParseResultdata  ParseResult aThe result of a parse. parseResponseHeadparseResponseHead :: [String] -> Result ResponseDataC[]StringResult ResponseDataparseRequestHeadparseRequestHead :: [String] -> Result RequestData[]StringResult RequestData parserBind parserBind ::  Monad m => ParsecT s u m a -> (a -> ParsecT s u m b) -> ParsecT s u m bfMonadmParsecTsumaaParsecTsumbParsecTsumbParsertype Parser = Parsec String ()Parsertype Parser = Parsec ByteString ()MParseOkParseOk :: a ->  ParseResult aa ParseResulta'The parse succeeded, yielding a value. ParseOkParseOk :: a ->  ParseResult a>&a ParseResulta'The parse succeeded, yielding a value. parseModuleWithModeparseModuleWithMode ::  ParseMode -> String -> ParseResult HsModule ParseModeString ParseResultHsModuleFParse of a string, which should contain a complete Haskell 98 module.  parseModule parseModule :: String -> ParseResult HsModuleString ParseResultHsModuleFParse of a string, which should contain a complete Haskell 98 module.  ParseMode ParseMode :: String ->  ParseMode}String ParseMode ParseModedata  ParseModebStatic parameters governing a parse. More to come later, e.g. literate mode, language extensions.  ParseMode ParseMode :: String ->  ParseMode}String ParseMode ParseModedata  ParseModebStatic parameters governing a parse. More to come later, e.g. literate mode, language extensions.  parseHeaders parseHeaders :: [String] -> Result [Header][]StringResult[]HeaderparseHeaders hdrs takes a sequence of strings holding header information and parses them into a set of headers (preserving their order in the input argument.) Handles header values split up over multiple lines.  parseHeader parseHeader :: String ->  Result HeaderStringResultHeaderparseHeader headerNameAndValueString tries to unscramble a header: value pairing and returning it as a Header.  parseFromFile parseFromFile :: Parser a -> String -> IO (Either ParseError a)C ParseraStringIOEither ParseErroraparseFromFile p filePath runs a string parser p on the input read from filePath using readFile. Returns either a ParseError (Left) or a value of type a (Right).
main    = do{ result <- parseFromFile numbers "digits.txt"
            ; case result of
                Left err  -> print err
                Right xs  -> print (sum xs)
            }
 parseFromFile parseFromFile :: Parser a -> String -> IO (Either ParseError a)qParseraStringIOEither ParseErroraparseFromFile p filePath runs a strict bytestring parser p on the input read from filePath using ByteString.Char8.readFile. Returns either a ParseError (Left) or a value of type a (Right).
main    = do{ result <- parseFromFile numbers "digits.txt"
            ; case result of
                Left err  -> print err
                Right xs  -> print (sum xs)
            }
 parseFilename parseFilename ::  ParseMode -> String ParseModeString'original name of the file being parsed  parseFilename parseFilename ::  ParseMode -> Stringu _  ParseModeString'original name of the file being parsed  ParseFailed ParseFailed :: SrcLoc -> String ->  ParseResult a-!!SrcLocString ParseResultaJThe parse failed at the specified source location, with an error message.  ParseFailed ParseFailed :: SrcLoc -> String ->  ParseResult a"!SrcLocString ParseResultaJThe parse failed at the specified source location, with an error message.  ParseErrordata  ParseError">The abstract data type ParseError represents parse errors. It provides the source position (SourcePos) of the error and a list of error messages (Message). A ParseError can be returned by the function Text.Parsec.Prim.parse. ParseError is an instance of the Show class.  ParseErrordata  ParseError$>The abstract data type ParseError represents parse errors. It provides the source position (SourcePos) of the error and a list of error messages (Message). A ParseError can be returned by the function Text.Parsec.Prim.parse. ParseError is an instance of the Show class. ParsecTParsecT :: -(State s u -> m (Consumed (m (Reply s u a)))) -> ParsecT s u m a &%StatesumConsumedmReplysuaParsecTsumaParsecTdata ParsecT s u m aF&ParserT monad transformer and Parser type ParsecT s u m a is a parser with stream type s, user state type u, underlying monad m and return type a  parsecMap parsecMap ::  Monad m => (a -> b) -> ParsecT s u m a -> ParsecT s u m b''MonadmabParsecTsumaParsecTsumbParsectype Parsec s u = ParsecT s u Identity(parse parse :: Stream s Identity t =>  Parsec s () a ->  SourceName -> s -> Either ParseError a)(StreamsIdentitytParsecs()a SourceNamesEither ParseErroraparse p filePath input runs a parser p over Identity without user state. The filePath is only used in error messages and may be the empty string. Returns either a ParseError (Left) or a value of type a (Right).
main    = case (parse numbers "" "11, 2, 43") of
           Left err  -> print err
           Right xs  -> print (sum xs)

numbers = commaSep integer
 parSparS ::  [[StmtQ]] -> StmtQ ++[][]StmtQStmtQ ParSParS :: [[Stmt]] -> Stmt+e+[][]StmtStmtparPairparPair ::  Strategy a ->  Strategy b -> Strategy (a, b)(,+StrategyaStrategybStrategy(,)ab<Apply two strategies to the elements of a pair in parallel. parMap parMap ::  Strategy b -> (a -> b) -> [a] -> [b],,Strategybab[]a[]bApplies a function to each element of a list and and evaluates the result list in parallel, using the given strategy for each element.  parListNth parListNth :: Int ->  Strategy a ->  Strategy [a].-IntStrategyaStrategy[]aEvaluates n elements of the spine of the argument list and applies the given strategy to the nth element (if there is one) in parallel with the result. E.g. parListNth 2 [e1, e2, e3] evaluates e3. parListNparListN :: Integral b => b ->  Strategy a ->  Strategy [a]/u/IntegralbbStrategyaStrategy[]aKApplies a strategy to the first n elements of a list in parallel.  parListChunk parListChunk :: Int ->  Strategy a ->  Strategy [a]0g0IntStrategyaStrategy[]aSplits a list into chunks (sub-sequences) of length n, and applies a strategy sequentially to the elements in each chunk. The chunks are evaluated in parallel. This is useful for increasing the grain size. parListparList ::  Strategy a ->  Strategy [a]11StrategyaStrategy[]a;Applies a strategy to every element of a list in parallel.  parFlatMap  parFlatMap ::  Strategy [b] ->  (a -> [b]) -> [a] -> [b]22Strategy[]ba[]b[]a[]bxUses parMap to apply a list-valued function to each element of a list in parallel, and concatenates the results. yparensparens :: Doc -> Doc33DocDoc Wrap document in (...) parensparens :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a454GenTokenParsersumParsecTsumaParsecTsumanLexeme parser parens p parses p enclosed in parenthesis, returning the value of p.  parBuffer  parBuffer :: Int ->  Strategy a -> [a] -> [a]5]5IntStrategya[]a[]aApplies a strategy to the nth element of list when the head is demanded. More precisely:
  • semantics: parBuffer n s = id :: [a] -> [a]
  • dynamic behaviour: evalutates the nth element of the list when the head is demanded.
The idea is to provide a `rolling buffer' of length n. parBuffer has been added for the revised version of the strategies paper and supersedes the older fringeList. parArrparArr :: Ix b =>  Strategy a -> Strategy (Array b a)77IxbStrategyaStrategyArrayba:Apply a strategy to all elements of an array in parallel. paramparam :: HtmlN8G8Htmlparamparam :: Html88Htmlparamparam :: Html88Html paragraph paragraph :: Html -> Html9 9HtmlHtml paragraph paragraph :: Html -> Htmlv9g9HtmlHtml paragraph paragraph :: Html -> Html99HtmlHtmlyPageModePageMode :: Mode: :ModeNormal fpackCStringLenpackCStringLen ::  CStringLen ->  IO ByteString:{: CStringLenIO ByteStringO(n). Construct a new ByteString from a CStringLen. The resulting ByteString is an immutable copy of the original CStringLen. The ByteString is a normal Haskell value and will be managed on the Haskell heap. f packCString packCString :: CString ->  IO ByteString<;CStringIO ByteStringO(n). Construct a new ByteString from a CString. The resulting ByteString is an immutable copy of the original CString, and is managed on the Haskell heap. The original CString must be null terminated. gpackpack :: [Word8] ->  ByteString}=a=[]Word8 ByteString:O(n) Convert a '[Word8]' into a ByteString. fpackpack :: String ->  ByteString>>String ByteStringO(n) Convert a String into a ByteString For applications with large numbers of string literals, pack can be a bottleneck. pp :: Html -> Html>>HtmlHtmlSame as paragraph. pp :: Html -> HtmlU?F?HtmlHtmlSame as paragraph. pp :: Html -> Html??HtmlHtmlSame as paragraph. Pdata P a?Monad for parsing 4OverflowOverflow :: ArithExceptiona@P@ArithException~ orElseorElse :: Maybe a -> Maybe a -> Maybe a@@MaybeaMaybeaMaybeaLeft-biased choice on maybies ordListordList ::  HTML a => [a] -> HtmlqATAHTMLa[]aHtmlordListordList ::  HTML a => [a] -> HtmlAAHTMLa[]aHtmlordListordList ::  HTML a => [a] -> HtmlKB.BHTMLa[]aHtmlOrdGAMMAtype OrdGAMMA = Poly OrdGAMMA_BOrdBETAtype OrdBETA = Poly OrdBETA_BOrdALPHAtype OrdALPHA = Poly OrdALPHA_COPTIONSOPTIONS ::  RequestMethodmC]C RequestMethod optionMaybe optionMaybe :: Stream s m t => ParsecT s u m a -> ParsecT s u m (Maybe a)7DCStreamsmtParsecTsumaParsecTsumMaybeaoption p tries to apply parser p. If p fails without consuming input, it return Nothing, otherwise it returns Just the value returned by p. optionaloptional :: ReadP a -> ReadP ()aEEEReadPaReadP()Qoptional p optionally parses p and always returns (). optionaloptional :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()gF"FStreamsmtParsecTsumaParsecTsum()optional p tries to apply parser p. It will parse p or nothing. It only fails if p fails after consuming input. It discards the result of p. optionoption :: Html -> HtmluGfGHtmlHtmloptionoption :: Html -> HtmlGGHtmlHtmloptionoption :: Html -> HtmlHHHtmlHtmloptionoption :: a -> ReadP a -> ReadP aHuHaReadPaReadPacoption x p will either parse p or return x without consuming any input. optionoption :: Stream s m t => a -> ParsecT s u m a -> ParsecT s u m aInIStreamsmtaParsecTsumaParsecTsuma2option x p tries to apply parser p. If p fails without consuming input, it returns the value x, otherwise the value returned by p.
priority  = option 0 (do{ d <- digit
                        ; return (digitToInt d) 
                        })
WOption Option :: [Char] -> [String] ->  ArgDescr a -> String ->  OptDescr aKpK[]Char[]StringArgDescraStringOptDescraoptgroupoptgroup :: Html -> Html LKHtmlHtmloptgroupoptgroup :: Html -> HtmlcLTLHtmlHtmloptgroupoptgroup :: Html -> HtmlLLHtmlHtmlWOptDescrdata OptDescr aLEach OptDescr describes a single option. The arguments to Option are:
  • list of short option characters
  • list of long option strings (without "--")
  • argument descriptor
  • explanation of option for user
WOptArgOptArg :: (Maybe String -> a) -> String ->  ArgDescr aN`NMaybeStringaStringArgDescraoptional argument opStartopStart :: GenLanguageDef s u m -> ParsecT s u m Char?OOGenLanguageDefsumParsecTsumCharzThis parser should accept any start characters of operators. For example oneOf ":!#$%&*+./<=>?@\\^|-~" opLetteropLetter :: GenLanguageDef s u m -> ParsecT s u m CharXP PGenLanguageDefsumParsecTsumCharThis parser should accept any legal tail characters of operators. Note that this parser should even be defined if the language doesn't support user-defined operators, or otherwise the reservedOp parser won't work correctly.  OperatorTabletype  OperatorTable s u m a = [[Operator s u m a]]QAn OperatorTable s u m a is a list of Operator s u m a lists. The list is ordered in descending precedence. All operators in one list have the same precedence (but may have a different associativity). operatoroperator :: GenTokenParser s u m -> ParsecT s u m StringSRGenTokenParsersumParsecTsumString_This lexeme parser parses a legal operator. Returns the name of the operator. This parser will fail on any operators that are reserved operators. Legal operator (start) characters and reserved operators are defined in the LanguageDef that is passed to makeTokenParser. An operator is treated as a single token using try. Operatordata Operator s u m aTThis data type specifies operators that work on values of type a. An operator is either binary infix or unary prefix or postfix. A binary operator has also an associated associativity.  onsideIndent onsideIndent :: PPHsMode -> IndentUUPPHsModeIndentIindentation added for continuation lines that would otherwise be offside 4 onException onException :: IO a -> IO b -> IO aVVIOaIObIOaoneOfoneOf :: Stream s m Char => [Char] -> ParsecT s u m CharPWWStreamsmChar[]CharParsecTsumCharoneOf cs succeeds if the current character is in the supplied list of characters cs. Returns the parsed character. See also satisfy.
vowel  = oneOf "aeiou"
y OneLineMode OneLineMode :: ModeYXRXModeAll on one line oliveolive :: StringXXStringolistolist :: Html -> HtmlXXHtmlHtmlolistolist :: Html -> HtmlKY HtmlYYHtmlHtmlOk Ok :: a ->  State s u ->  ParseError ->  Reply s u a ParsecT s u m CharZZStreamsmCharParsecTsumCharWParses an octal digit (a character between '0' and '7'). Returns the parsed character. octaloctal :: GenTokenParser s u m -> ParsecT s u m Integer[[GenTokenParsersumParsecTsumIntegerParses a positive whole number in the octal system. The number should be prefixed with "0o" or "0O". Returns the value of the number. objectobject :: Html -> Html\\HtmlHtmlobjectobject :: Html -> Html\\HtmlHtmlobjectobject :: Html -> Html?]0]HtmlHtmlbnullForeignPtrnullForeignPtr :: ForeignPtr Word8]] ForeignPtrWord86The 0 pointer. Used to indicate the empty Bytestring. gnullnull ::  ByteString -> Bool8^#^ ByteStringBool0O(1) Test whether a ByteString is empty. fnullnull ::  ByteString -> Bool^^ ByteStringBool0O(1) Test whether a ByteString is empty. nowrapnowrap :: HtmlAttr8_-_HtmlAttr notStrict notStrict :: Q Strict_w_QStrict NotStrict NotStrict :: Strict__Strict notFollowedBy notFollowedBy :: (Stream s m t, Show t) => ParsecT s u m t -> ParsecT s u m ()`O`StreamsmtShowtParsecTsumtParsecTsum()7notFollowedBy p only succeeds when parser p fails. This parser does not consume any input. This parser can be used to implement the 'longest match' rule. For example, when recognizing keywords (for example let), we want to make sure that a keyword is not followed by a legal identifier character, in which case the keyword is actually an identifier (for example lets). We can program this behaviour as follows:
keywordLet  = try (do{ string "let"
                     ; notFollowedBy alphaNum
                     })
gnotElemnotElem :: Word8 ->  ByteString -> BoolPc4cWord8 ByteStringBool9O(n) notElem is the inverse of elem fnotElemnotElem :: Char ->  ByteString -> BooldcChar ByteStringBool9O(n) notElem is the inverse of elem noshadenoshade :: HtmlAttrdudHtmlAttrnoscriptnoscript :: Html -> HtmlddHtmlHtmlnoscriptnoscript :: Html -> Html0e!eHtmlHtmlnoscriptnoscript :: Html -> HtmleyeHtmlHtml normUserAgent normUserAgent :: NormalizeRequestOptions ty ->  Maybe String,feNormalizeRequestOptionstyMaybeString normForProxy normForProxy :: NormalizeRequestOptions ty -> BoolffNormalizeRequestOptionstyBool normDoClose normDoClose :: NormalizeRequestOptions ty -> BoolHg gNormalizeRequestOptionstyBool normCustoms normCustoms :: NormalizeRequestOptions ty -> [RequestNormalizer ty]hgNormalizeRequestOptionsty[]RequestNormalizertynormalizeRequestURI normalizeRequestURI :: Bool -> String ->  Request ty ->  Request tyhhBoolStringRequesttyRequesttyNormalizeRequestOptions NormalizeRequestOptions :: Bool -> Bool ->  Maybe String -> [RequestNormalizer ty] -> NormalizeRequestOptions tyiiBoolBoolMaybeString[]RequestNormalizertyNormalizeRequestOptionstyNormalizeRequestOptionsdata NormalizeRequestOptions ty6jNormalizeRequestOptions brings together the various defaulting/normalization options over Requests. Use defaultNormalizeRequestOptions for the standard selection of option normalizeRequestnormalizeRequest :: NormalizeRequestOptions ty ->  Request ty ->  Request tykkNormalizeRequestOptionstyRequesttyRequesttynormalizeRequest opts req is the entry point to use to normalize your request prior to transmission (or other use.) Normalization is controlled via the NormalizeRequestOptions record. normalizeHostHeadernormalizeHostHeader ::  Request ty ->  Request tymlRequesttyRequesttyq normalise normalise :: FilePath -> FilePathmmmFilePathFilePathNormalise a file
  • // outside of the drive can be made blank
  • / -> pathSeparator
  • ./ -> ""
Posix:   normalise "/file/\\test////" == "/file/\\test/"
Posix:   normalise "/file/./test" == "/file/test"
Posix:   normalise "/test/file/../bob/fred/" == "/test/file/../bob/fred/"
Posix:   normalise "../bob/fred/" == "../bob/fred/"
Posix:   normalise "./bob/fred/" == "bob/fred/"
Windows: normalise "c:\\file/bob\\" == "C:\\file\\bob\\"
Windows: normalise "c:\\" == "C:\\"
Windows: normalise "\\\\server\\test" == "\\\\server\\test"
Windows: normalise "c:/file" == "C:\\file"
         normalise "." == "."
Posix:   normalise "./" == "./"
r normalise normalise :: FilePath -> FilePathppFilePathFilePathNormalise a file
  • // outside of the drive can be made blank
  • / -> pathSeparator
  • ./ -> ""
Posix:   normalise "/file/\\test////" == "/file/\\test/"
Posix:   normalise "/file/./test" == "/file/test"
Posix:   normalise "/test/file/../bob/fred/" == "/test/file/../bob/fred/"
Posix:   normalise "../bob/fred/" == "../bob/fred/"
Posix:   normalise "./bob/fred/" == "bob/fred/"
Windows: normalise "c:\\file/bob\\" == "C:\\file\\bob\\"
Windows: normalise "c:\\" == "C:\\"
Windows: normalise "\\\\server\\test" == "\\\\server\\test"
Windows: normalise "c:/file" == "C:\\file"
         normalise "." == "."
Posix:   normalise "./" == "./"
 normalGEnormalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)ssExpQExpQQ(,)GuardExp normalGnormalG :: ExpQ -> GuardQ:t)tExpQGuardQ NormalGNormalG :: Exp -> GuardttExpGuard normalCnormalC :: Name ->  [StrictTypeQ] -> ConQutName[] StrictTypeQConQ NormalCNormalC :: Name ->  [StrictType] -> ConupuName[] StrictTypeCon normalBnormalB :: ExpQ -> BodyQuuExpQBodyQ NormalBNormalB :: Exp -> Body a>x1xAddr#anoneOfnoneOf :: Stream s m Char => [Char] -> ParsecT s u m CharxxStreamsmChar[]CharParsecTsumCharAs the dual of oneOf, noneOf cs succeeds if the current character not in the supplied list of characters cs. Returns the parsed character.
consonant = noneOf "aeiou"
NominalDiffTimedata NominalDiffTimeyHThis is a length of time, as measured by UTC. Conversion functions will treat it as seconds. It has a precision of 10^-12 s. It ignores leap-seconds, so it's not necessarily a fixed amount of clock time. For instance, 23:00 UTC + 2 hours of NominalDiffTime = 01:00 UTC (+ 1 day), regardless of whether a leap-second intervened. 4 NoMethodError NoMethodError :: String ->  NoMethodError{{String NoMethodError4 NoMethodErrordata  NoMethodError{4noMethodBindingErrornoMethodBindingError :: Addr# -> ae|X|Addr#aNoLayoutNoLayout ::  LexContext|| LexContextnoHtmlnoHtml :: Html||HtmlAn empty piece of HTML. noHtmlnoHtml :: HtmlA}:}HtmlAn empty piece of HTML. noHtmlnoHtml :: Html}}HtmlAn empty piece of HTML. nohrefnohref :: HtmlAttr}}HtmlAttrnohrefnohref :: HtmlAttr5~*~HtmlAttrnohrefnohref :: HtmlAttry~n~HtmlAttrnoframesnoframes :: Html -> Html~~HtmlHtmlnoframesnoframes :: Html -> Html)HtmlHtmlNodedata NodeU NoCompression NoCompression :: CompressionLevelCompressionLevel#No compression, just a block copy.  NoCompression NoCompression :: CompressionLevel<)CompressionLevel#No compression, just a block copy.  noBindSnoBindS :: ExpQ -> StmtQExpQStmtQ NoBindSNoBindS :: Exp -> Stmt ExpStmtWNoArgNoArg :: a ->  ArgDescr afQaArgDescrano argument expected  no_of_tests no_of_tests ::  TestOptions -> IntЁ TestOptionsIntnumber of tests to run. NFDataclass NFData a0 newtypeDnewtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQCxtQName[]NameConQ[]NameDecQ NewtypeDNewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> DeczCxtName[]NameCon[]NameDecPnewSTRefnewSTRef :: a -> ST s (STRef s a)aSTsSTRefsa? newSampleVar newSampleVar :: a -> IO (SampleVar a)taIO SampleVara0Build a SampleVar with an initial value. >newQSemNnewQSemN :: Int -> IO QSemN! IntIOQSemN;Build a new QSemN with a supplied initial quantity. =newQSemnewQSem :: Int -> IO QSemIntIOQSemBuild a new QSem newPos newPos ::  SourceName -> Line -> Column ->  SourcePoskC SourceNameLineColumn SourcePosYCreate a new SourcePos with the given source name, line number and column number. 0newPoolnewPool :: IO Pool IOPoolAllocate a fresh memory pool.  newNamenewName :: String -> Q NametStringQName;newMVarnewMVar :: a ->  IO (MVar a)ՇaIOMVara9Create an MVar which contains the supplied value.  newListArray newListArray :: (MArray a e m, Ix i) => (i, i) -> [e] ->  m (a i e)MArrayaemIxi(,)ii[]emaieConstructs a mutable array from a list of initial elements. The list gives the elements of the array in ascending order beginning with the lowest index. newlinenewline :: Stream s m Char => ParsecT s u m Char ډStreamsmCharParsecTsumChar@Parses a newline character ('\n'). Returns a newline character. newErrorUnknownnewErrorUnknown ::  SourcePos ->  ParseErrorNJ SourcePos ParseErrornewErrorMessagenewErrorMessage :: Message ->  SourcePos ->  ParseError_<Message SourcePos ParseError?newEmptySampleVarnewEmptySampleVar :: IO (SampleVar a)͋IO SampleVara%Build a new, empty, SampleVar ; newEmptyMVar newEmptyMVar ::  IO (MVar a)L:IOMVara0Create an MVar which is initially empty.  newDiffArray newDiffArray :: (MArray a e IO, Ix i) => (i, i) ->  [(Int, e)] -> IO (IOToDiffArray a i e)tMArrayaeIOIxi(,)ii[](,)InteIO IOToDiffArrayaie-newCWStringLennewCWStringLen :: String -> IO CWStringLenՍStringIO CWStringLenMarshal a Haskell string into a C wide string (ie, wide character array) with explicit length information.
  • new storage is allocated for the C wide string and must be explicitly freed using Foreign.Marshal.Alloc.free or Foreign.Marshal.Alloc.finalizerFree.
- newCWString newCWString :: String ->  IO CWString{`StringIOCWString.Marshal a Haskell string into a NUL terminated C wide string.
  • the Haskell string may not contain any NUL characters
  • new storage is allocated for the C wide string and must be explicitly freed using Foreign.Marshal.Alloc.free or Foreign.Marshal.Alloc.finalizerFree.
- newCStringLen newCStringLen :: String ->  IO CStringLen$StringIO CStringLenMarshal a Haskell string into a C string (ie, character array) with explicit length information.
  • new storage is allocated for the C string and must be explicitly freed using Foreign.Marshal.Alloc.free or Foreign.Marshal.Alloc.finalizerFree.
- newCString newCString :: String ->  IO CStringStringIOCString$Marshal a Haskell string into a NUL terminated C string.
  • the Haskell string may not contain any NUL characters
  • new storage is allocated for the C string and must be explicitly freed using Foreign.Marshal.Alloc.free or Foreign.Marshal.Alloc.finalizerFree.
 newCookie newCookie :: String -> String -> Cookie9StringStringCookieConstruct a cookie with only name and value set. This client will expire when the browser sessions ends, will only be sent to the server and path which set it and may be sent using any means. <newChannewChan ::  IO (Chan a)I7IOChana1Build and returns a new instance of Chan. -newCAStringLennewCAStringLen :: String ->  IO CStringLenڕStringIO CStringLenMarshal a Haskell string into a C string (ie, character array) with explicit length information.
  • new storage is allocated for the C string and must be explicitly freed using Foreign.Marshal.Alloc.free or Foreign.Marshal.Alloc.finalizerFree.
- newCAString newCAString :: String ->  IO CStringnTStringIOCString$Marshal a Haskell string into a NUL terminated C string.
  • the Haskell string may not contain any NUL characters
  • new storage is allocated for the C string and must be explicitly freed using Foreign.Marshal.Alloc.free or Foreign.Marshal.Alloc.finalizerFree.
 newArray_ newArray_ :: (MArray a e m, Ix i) => (i, i) ->  m (a i e)8MArrayaemIxi(,)iimaie, newArray0 newArray0 :: Storable a => a -> [a] ->  IO (Ptr a)љStorableaa[]aIOPtraWrite a list of storable elements into a newly allocated, consecutive sequence of storable values, where the end is fixed by the given end marker ,newArraynewArray :: Storable a => [a] ->  IO (Ptr a)Storablea[]aIOPtraWrite a list of storable elements into a newly allocated, consecutive sequence of storable values (like Foreign.Marshal.Utils.new, but for multiple elements). newArraynewArray :: (MArray a e m, Ix i) => (i, i) -> e ->  m (a i e)=MArrayaemIxi(,)iiemaie+newnew :: Storable a => a ->  IO (Ptr a)StorableaaIOPtra}Allocate a block of memory and marshal a value into it (the combination of malloc and poke). The size of the area allocated is determined by the Foreign.Storable.sizeOf method from the instance of Storable for the appropriate type. The memory may be deallocated using Foreign.Marshal.Alloc.free or Foreign.Marshal.Alloc.finalizerFree when no longer required. nestedCommentsnestedComments :: GenLanguageDef s u m -> BoolGenLanguageDefsumBoolCSet to True if the language supports nested block comments. 4nestedAtomicallynestedAtomically ::  SomeException]M SomeException4NestedAtomicallyNestedAtomically :: NestedAtomicallyşNestedAtomically4NestedAtomicallydata NestedAtomically ynestnest :: Int -> Doc -> DociWIntDocDocNest (or indent) a document by a given number of positions (which may also be negative). nest satisfies the laws: The side condition on the last law is needed because empty is a left identity for <>. navynavy :: StringriStringnaturalOrFloatnaturalOrFloat :: GenTokenParser s u m -> %ParsecT s u m (Either Integer Double)EGenTokenParsersumParsecTsumEitherIntegerDouble This lexeme parser parses either natural or a float. Returns the value of the number. This parsers deals with any overlap in the grammar rules for naturals and floats. The number is parsed according to the grammar rules defined in the Haskell report. naturalnatural :: GenTokenParser s u m -> ParsecT s u m IntegerGenTokenParsersumParsecTsumIntegerThis lexeme parser parses a natural number (a positive whole number). Returns the value of the number. The number can be specified in decimal, hexadecimal or octal. The number is parsed according to the grammar rules in the Haskell report.  nameModule nameModule :: Name ->  Maybe StringeKNameMaybeString nameBasenameBase :: Name -> StringNameStringnamename :: String -> HtmlAttrStringHtmlAttrnamename :: String -> HtmlAttrydStringHtmlAttrnamename :: String -> HtmlAttrըStringHtmlAttr Namedata Name;MVardata MVar a/An MVar (pronounced "em-var") is a synchronising variable, used for communication between concurrent threads. It can be thought of as a a box, which may be empty or full. munch1munch1 :: (Char -> Bool) ->  ReadP StringZ8CharBoolReadPStringBParses the first one or more characters satisfying the predicate. munchmunch :: (Char -> Bool) ->  ReadP StringCharBoolReadPStringCParses the first zero or more characters satisfying the predicate. multiplemultiple :: HtmlAttrHtmlAttrmultiplemultiple :: HtmlAttr۫HtmlAttrmultiplemultiple :: HtmlAttr.#HtmlAttr+ moveBytes  moveBytes :: Ptr a -> Ptr a -> Int -> IO ()PtraPtraIntIO()Copies the given number of bytes from the second area (source) into the first (destination); the copied areas may overlap , moveArray  moveArray :: Storable a => Ptr a -> Ptr a -> Int -> IO ()StorableaPtraPtraIntIO()Copy the given number of elements from the second array (source) into the first array (destination); the copied areas may overlap  mondrianDef mondrianDef :: LanguageDef stخĮ LanguageDefst3The language definition for the language Mondrian. mondrianmondrian :: TokenParser stbN TokenParserst#A lexer for the mondrian language.  MonadTransclass  MonadTrans tMonadIOclass  Monad m => MonadIO mEMonadFixclass  Monad m => MonadFix mBMonads having fixed points with a 'knot-tying' semantics. Instances of MonadFix should satisfy the following laws:
  • purity mfix (return . h) = return (fix h)
  • left shrinking (or tightening) mfix (\x -> a >>= \y -> f x y) = a >>= \y -> mfix (\x -> f x y)
  • sliding mfix (Control.Monad.liftM h . f) = Control.Monad.liftM h (mfix (f . h)), for strict h.
  • nesting mfix (\x -> mfix (\y -> f x y)) = mfix (\x -> f x x)
This class is used in the translation of the recursive do notation supported by GHC and Hugs.  MonadCGIclass  Monad m => MonadCGI mThe class of CGI monads. Most CGI actions can be run in any monad which is an instance of this class, which means that you can use your own monad transformers to add extra functionality. AMonadclass Monad mThe Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions. Haskell's do expressions provide a convenient syntax for writing monadic expressions. Minimal complete definition: >>= and return. Instances of Monad should satisfy the following laws:
return a >>= k  ==  k a
m >>= return  ==  m
m >>= (\x -> k x >>= h)  ==  (m >>= k) >>= h
Instances of both Monad and Functor should additionally satisfy the law:
fmap f xs  ==  xs >>= return . f
The instances of Monad for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws. ModuleModule :: String -> ModulegTStringModuleModulenewtype ModuleThe name of a Haskell module.  ModJulianDate ModJulianDate :: Rational ->  UniversalTime4Rational UniversalTimeP modifySTRef modifySTRef ::  STRef s a -> (a -> a) -> ST s ()ƹSTRefsaaaSTs() modifyState modifyState ::  Monad m => (u -> u) -> ParsecT s u m ()_0MonadmuuParsecTsum() updateState f applies function f to the user state. Suppose that we want to count identifiers in a source, we could use the user state as:
expr  = do{ x <- identifier
          ; updateState (+1)
          ; return (Id x)
          }
; modifyMVar_ modifyMVar_ :: MVar a ->  (a -> IO a) -> IO ()ջMVaraaIOaIO()A safe wrapper for modifying the contents of an MVar. Like withMVar, modifyMVar will replace the original contents of the MVar if an exception is raised during the operation. ; modifyMVar modifyMVar :: MVar a -> (a -> IO (a, b)) -> IO b`1MVaraaIO(,)abIObA slight variation on modifyMVar_ that allows a value to be returned (b) in addition to the modified value of the MVar. ! modifyIOError modifyIOError :: (IOError -> IOError) -> IO a -> IO abIOErrorIOErrorIOaIOaVCatch any IOError that occurs in the computation and throw a modified version.  ModifiedJulianDayModifiedJulianDay :: Integer -> DayO>IntegerDayymodemode :: Style -> ModeStyleModeThe rendering mode yModedata ModeRendering mode. ^ mkWeakPtr mkWeakPtr :: k ->  Maybe (IO ()) ->  IO (Weak k)XkMaybeIO()IOWeakkA specialised version of mkWeak, where the key and the value are the same object:
mkWeakPtr key finalizer = mkWeak key key finalizer
^ mkWeakPair  mkWeakPair :: k -> v ->  Maybe (IO ()) -> IO (Weak (k, v))kvMaybeIO()IOWeak(,)kv.A specialised version of mkWeak where the value is actually a pair of the key and value passed to mkWeakPair:
mkWeakPair key val finalizer = mkWeak key (key,val) finalizer
The advantage of this is that the key can be retrieved by deRefWeak in addition to the value. ^mkWeak mkWeak :: k -> v ->  Maybe (IO ()) ->  IO (Weak v)lkvMaybeIO()IOWeakvEstablishes a weak pointer to k, with value v and a finalizer. This is the most general interface for building a weak pointer. ~ mkTmkT :: (Typeable a, Typeable b) => (b -> b) -> a -> aTypeableaTypeablebbbaa\Make a generic transformation; start from a type-specific case; preserve the term otherwise  mkRequest mkRequest :: BufferType ty =>  RequestMethod -> URI ->  Request ty BufferTypety RequestMethodURIRequestty'mkRequest method uri' constructs a well formed request for the given HTTP method and URI. It does not normalize the URI for the request _nor_ add the required Host: header. That is done either explicitly by the user or when requests are normalized prior to transmission. mkRecConstrOrUpdatemkRecConstrOrUpdate :: HsExp -> [HsFieldUpdate] -> P HsExp_HsExp[] HsFieldUpdatePHsExp~ mkRmkR :: )(MonadPlus m, Typeable a, Typeable b) => m b -> m a1 MonadPlusmTypeableaTypeablebmbmacMake a generic builder; start from a type-specific ase; resort to no build (i.e., mzero) otherwise ~ mkQ mkQ :: (Typeable a, Typeable b) => r -> (b -> r) -> a -> r< TypeableaTypeablebrbrarSMake a generic query; start from a type-specific case; return a constant otherwise  mkNamemkName :: String -> NameStringName~ mkMpmkMp :: )(MonadPlus m, Typeable a, Typeable b) =>  (b -> m b) -> a -> m ac MonadPlusmTypeableaTypeablebbmbamauMake a generic monadic transformation for MonadPlus; use "const mzero" (i.e., failure) instead of return as default. ~ mkMmkM :: %(Monad m, Typeable a, Typeable b) =>  (b -> m b) -> a -> m aMonadmTypeableaTypeablebbmbamacMake a generic monadic transformation; start from a type-specific case; resort to return otherwise ! mkIOError  mkIOError ::  IOErrorType -> String ->  Maybe Handle -> Maybe FilePath -> IOError IOErrorTypeStringMaybeHandleMaybeFilePathIOErrorConstruct an IOError of the given type where the second argument describes the error location and the third and fourth argument contain the file handle and file path of the file involved in the error if applicable. mkHeadermkHeader ::  HeaderName -> String -> Header}^ HeaderNameStringHeader4Header constructor as a function, hiding above rep. v MixEntryDomtype  MixEntryDom a = Tree (HpcPos, a)vMixEntrytype MixEntry = (HpcPos, BoxLabel)Mv mixCreate  mixCreate :: String -> String -> Mix -> IO ()StringStringMixIO()Create is mix file. vMixMix :: FilePath -> Integer -> Hash -> Int ->  [MixEntry] -> Mix|FilePathIntegerHashInt[]MixEntryMixvMixdata MixMix is the information about a modules static properties, like location of Tix's in a file. tab stops are the size of a tab in the provided line:colunm values. * In GHC, this is 1 (a tab is just a character) * With hpc-tracer, this is 8 (a tab represents several spaces). minutesToTimeZoneminutesToTimeZone :: Int -> TimeZonecQIntTimeZoneACreate a nameless non-summer timezone for this number of minutes MinusMinus :: TokenTokenminPrecminPrec :: PrecPrecMinMemoryLevelMinMemoryLevel ::  MemoryLevelxj MemoryLevelrUse minimum memory. This is slow and reduces the compression ratio. (Equivalent to MemoryLevel 1) MinMemoryLevelMinMemoryLevel ::  MemoryLevelD6 MemoryLevelrUse minimum memory. This is slow and reduces the compression ratio. (Equivalent to MemoryLevel 1) gminimumminimum ::  ByteString -> Word8 ByteStringWord8NO(n) minimum returns the minimum value from a ByteString fminimumminimum ::  ByteString -> Char ByteStringCharBminimum returns the minimum value from a ByteString midnightmidnight ::  TimeOfDayVJ TimeOfDay Hour zero middaymidday ::  TimeOfDay TimeOfDay Hour twelve Emfixmfix :: MonadFix m =>  (a -> m a) -> m a-MonadFixmamamamethodmethod :: String -> HtmlAttrxStringHtmlAttrmethodmethod :: String -> HtmlAttrStringHtmlAttrmethodmethod :: String -> HtmlAttrM8StringHtmlAttrMethoddata Method}The compression method Methoddata MethodThe compression method metameta :: Html Htmlmetameta :: HtmlKDHtmlmetameta :: Html|Html messageString messageString :: Message -> StringMessageString1Extract the message string from an error message MessageMessage :: String -> MessagelStringMessageMessagedata MessageThis abstract data type represents parse error messages. There are four kinds of messages:
data Message = SysUnExpect String
             | UnExpect String
             | Expect String
             | Message String
The fine distinction between different kinds of parse errors allows the system to generate quite good error messages for the user. It also allows error messages that are formatted in different languages. Each kind of message is generated by different combinators:
  • A SysUnExpect message is automatically generated by the Text.Parsec.Combinator.satisfy combinator. The argument is the unexpected input.
  • A UnExpect message is generated by the Text.Parsec.Prim.unexpected combinator. The argument describes the unexpected item.
  • A Expect message is generated by the Text.Parsec.Prim.<?> combinator. The argument describes the expected item.
  • A Message message is generated by the fail combinator. The argument is some general parser message.
mergeErrorReplymergeErrorReply ::  ParseError ->  Reply s u a ->  Reply s u aL ParseErrorReplysuaReplysua mergeError mergeError ::  ParseError ->  ParseError ->  ParseError ParseError ParseError ParseErrormenumenu :: String -> [Html] -> HtmljString[]HtmlHtmlmenumenu :: String -> [Html] -> HtmlString[]HtmlHtmlmenumenu :: String -> [Html] -> HtmlkNString[]HtmlHtmlbmemset memset ::  Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8)PtrWord8Word8CSizeIOPtrWord8 MemoryLevel MemoryLevel :: Int ->  MemoryLevel~iInt MemoryLevel0Use a specific level in the range 1..9  MemoryLeveldata  MemoryLevelBThe MemoryLevel parameter specifies how much memory should be allocated for the internal compression state. It is a tradoff between memory usage, compression ratio and compression speed. Using more memory allows faster compression and a better compression ratio. The total amount of memory used for compression depends on the WindowBits and the MemoryLevel. For decompression it depends only on the WindowBits. The totals are given by the functions:
compressTotal windowBits memLevel = 4 * 2^windowBits + 512 * 2^memLevel
decompressTotal windowBits = 2^windowBits
For example, for compression with the default windowBits = 15 and memLevel = 8 uses 256Kb. So for example a network server with 100 concurrent compressed streams would use 25Mb. The memory per stream can be halved (at the cost of somewhat degraded and slower compressionby) by reducing the windowBits and memLevel by one. Decompression takes less memory, the default windowBits = 15 corresponds to just 32Kb.  MemoryLevel MemoryLevel :: Int ->  MemoryLevelInt MemoryLevel0Use a specific level in the range 1..9  MemoryLeveldata  MemoryLevelBThe MemoryLevel parameter specifies how much memory should be allocated for the internal compression state. It is a tradoff between memory usage, compression ratio and compression speed. Using more memory allows faster compression and a better compression ratio. The total amount of memory used for compression depends on the WindowBits and the MemoryLevel. For decompression it depends only on the WindowBits. The totals are given by the functions:
compressTotal windowBits memLevel = 4 * 2^windowBits + 512 * 2^memLevel
decompressTotal windowBits = 2^windowBits
For example, for compression with the default windowBits = 15 and memLevel = 8 uses 256Kb. So for example a network server with 100 concurrent compressed streams would use 25Mb. The memory per stream can be halved (at the cost of somewhat degraded and slower compressionby) by reducing the windowBits and memLevel by one. Decompression takes less memory, the default windowBits = 15 corresponds to just 32Kb. bmemcpy_ptr_baoff memcpy_ptr_baoff :: Ptr a ->  RawBuffer -> CInt -> CSize ->  IO (Ptr ()) Ptra RawBufferCIntCSizeIOPtr()bmemcpy memcpy ::  Ptr Word8 ->  Ptr Word8 -> CSize -> IO ()~PtrWord8PtrWord8CSizeIO()bmemcmp memcmp ::  Ptr Word8 ->  Ptr Word8 -> CSize -> IO CIntS!PtrWord8PtrWord8CSizeIOCIntbmemchr memchr ::  Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8)PtrWord8Word8CSizeIOPtrWord8+ maybeWith  maybeWith :: (a -> (Ptr b -> IO c) -> IO c) -> Maybe a -> (Ptr b -> IO c) -> IO caPtrbIOcIOcMaybeaPtrbIOcIOcConverts a withXXX combinator into one marshalling a value wrapped into a Maybe, using nullPtr to represent Nothing.  maybeRead maybeRead ::  Read a => String -> Maybe aReadaStringMaybea+ maybePeek maybePeek :: (Ptr a -> IO b) -> Ptr a ->  IO (Maybe b)]PtraIObPtraIOMaybeb]Convert a peek combinator into a one returning Nothing if applied to a nullPtr +maybeNewmaybeNew :: (a -> IO (Ptr a)) -> Maybe a ->  IO (Ptr a)]aIOPtraMaybeaIOPtraAllocate storage and marshall a storable value wrapped into a Maybe  maxPrecedence maxPrecedence :: IntpjIntMaxMemoryLevelMaxMemoryLevel ::  MemoryLevel MemoryLevel`Use maximum memory for optimal compression speed. (Equivalent to MemoryLevel 9) MaxMemoryLevelMaxMemoryLevel ::  MemoryLevelv MemoryLevel`Use maximum memory for optimal compression speed. (Equivalent to MemoryLevel 9)  maxlength maxlength :: Int -> HtmlAttrD2IntHtmlAttr maxlength maxlength :: Int -> HtmlAttrIntHtmlAttr maxlength maxlength :: Int -> HtmlAttrIntHtmlAttrgmaximummaximum ::  ByteString -> Word8hR ByteStringWord8NO(n) maximum returns the maximum value from a ByteString fmaximummaximum ::  ByteString -> Char ByteStringCharBmaximum returns the maximum value from a ByteString  matchResponse matchResponse ::  RequestMethod ->  ResponseCode -> ResponseNextStep  RequestMethod ResponseCodeResponseNextStep MatchQtype MatchQ = Q MatchH match match :: PatQ -> BodyQ -> [DecQ] -> MatchQPatQBodyQ[]DecQMatchQ Match Match :: Pat -> Body -> [Dec] -> MatchX8PatBody[]DecMatch Matchdata MatchMArrayclass  Monad m => MArray a e m!Class of mutable array types. An array type has the form (a i e) where a is the array type constructor (kind * -> * -> *), i is the index type (a member of the class Ix), and e is the element type. The MArray class is parameterised over both a and e (so that instances specialised to certain element types can be defined, in the same way as for IArray), and also over the type of the monad, m, in which the mutable array will be manipulated. maroonmaroon :: String) String marginwidth marginwidth :: Int -> HtmlAttr{IntHtmlAttr marginwidth marginwidth :: Int -> HtmlAttrIntHtmlAttr marginheight marginheight :: Int -> HtmlAttrWEIntHtmlAttr marginheight marginheight :: Int -> HtmlAttrIntHtmlAttr mapReaderT mapReaderT ::  (m a -> n b) ->  ReaderT w m a ->  ReaderT w n bq4manbReaderTwmaReaderTwnb mapReader mapReader :: (a -> b) ->  Reader r a ->  Reader r babReaderraReaderrbmapListTmapListT :: (m [a] -> n [b]) ->  ListT m a ->  ListT n bvm[]an[]bListTmaListTnb mapIndices  mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e ->  m (a i e)LMArrayaemIxiIxj(,)iiijajemaiefConstructs a new array derived from the original array by applying a function to each of the indices. 4 mapException mapException ::  (Exception e1, Exception e2) =>  (e1 -> e2) -> a -> a Exceptione1 Exceptione2e1e2aaoThis function maps one exception into another as proposed in the paper "A semantics for imprecise exceptions".  mapErrorT mapErrorT :: #(m (Either e a) -> n (Either e' b)) ->  ErrorT e m a ->  ErrorT e' n bmEithereanEithere'bErrorTemaErrorTe'nbmapContTmapContT ::  (m r -> m r) ->  ContT r m a ->  ContT r m amrmrContTrmaContTrmamapContmapCont :: (r -> r) -> Cont r a -> Cont r aCrrContraContramapArraymapArray :: '(MArray a e' m, MArray a e m, Ix i) =>  (e' -> e) -> a i e' ->  m (a i e)'MArrayae'mMArrayaemIxie'eaie'maiegConstructs a new array derived from the original array by applying a function to each of the elements. g mapAccumR  mapAccumR :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)r%accWord8(,)accWord8acc ByteString(,)acc ByteStringThe mapAccumR function behaves like a combination of map and foldr; it applies a function to each element of a ByteString, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new ByteString. f mapAccumR  mapAccumR :: (acc -> Char -> (acc, Char)) -> acc ->  ByteString -> (acc, ByteString)jaccChar(,)accCharacc ByteString(,)acc ByteStringThe mapAccumR function behaves like a combination of map and foldr; it applies a function to each element of a ByteString, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new ByteString. g mapAccumL  mapAccumL :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)f  accWord8(,)accWord8acc ByteString(,)acc ByteStringThe mapAccumL function behaves like a combination of map and foldl; it applies a function to each element of a ByteString, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new ByteString. f mapAccumL  mapAccumL :: (acc -> Char -> (acc, Char)) -> acc ->  ByteString -> (acc, ByteString)^  accChar(,)accCharacc ByteString(,)acc ByteStringThe mapAccumL function behaves like a combination of map and foldl; it applies a function to each element of a ByteString, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new list. gmapmap :: (Word8 -> Word8) ->  ByteString ->  ByteString Word8Word8 ByteString ByteStringwO(n) map f xs is the ByteString obtained by applying f to each element of xs. fmapmap :: (Char -> Char) ->  ByteString ->  ByteStringCharChar ByteString ByteStringvO(n) map f xs is the ByteString obtained by applying f to each element of xs manyTillmanyTill :: ReadP a ->  ReadP end ->  ReadP [a]ReadPaReadPendReadP[]amanyTill p end parses zero or more occurrences of p, until end succeeds. Returns a list of values returned by p. manyTillmanyTill :: Stream s m t => ParsecT s u m a -> ParsecT s u m end -> ParsecT s u m [a]5StreamsmtParsecTsumaParsecTsumendParsecTsum[]amanyTill p end applies parser p zero or more times until parser end succeeds. Returns the list of values returned by p. This parser can be used to scan comments:
simpleComment   = do{ string "<!--"
                    ; manyTill anyChar (try (string "-->"))
                    }
Note the overlapping parsers anyChar and string "<!--", and therefore the use of the try combinator.  manyAccum manyAccum :: Stream s m t => (a -> [a] -> [a]) -> ParsecT s u m a -> ParsecT s u m [a]bStreamsmta[]a[]aParsecTsumaParsecTsum[]amany1many1 :: ReadP a ->  ReadP [a]ReadPaReadP[]a4Parses one or more occurrences of the given parser. many1many1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m [a]mStreamsmtParsecTsumaParsecTsum[]amany p applies the parser p one or more times. Returns a list of the returned values of p.
word  = many1 letter
manymany :: ReadP a ->  ReadP [a]ReadPaReadP[]a5Parses zero or more occurrences of the given parser. manymany :: Stream s m t => ParsecT s u m a -> ParsecT s u m [a]_StreamsmtParsecTsumaParsecTsum[]amany p applies the parser p zero or more times. Returns a list of the returned values of p.
identifier  = do{ c  <- letter
                ; cs <- many (alphaNum <|> char '_')
                ; return (c:cs)
                }
bmallocByteStringmallocByteString :: Int -> IO (ForeignPtr a)K,IntIO ForeignPtrahWrapper of mallocForeignPtrBytes with faster implementation for GHC 6.5 builds newer than 060606 ) mallocBytes mallocBytes :: Int ->  IO (Ptr a)IntIOPtraAllocate a block of memory of the given number of bytes. The block of memory is sufficiently aligned for any of the basic foreign types that fits into a memory block of the allocated size. The memory may be deallocated using free or finalizerFree when no longer required. , mallocArray0 mallocArray0 :: Storable a => Int ->  IO (Ptr a)StorableaIntIOPtraZLike mallocArray, but add an extra position to hold a special termination element. , mallocArray mallocArray :: Storable a => Int ->  IO (Ptr a)StorableaIntIOPtraAllocate storage for the given number of elements of a storable type (like Foreign.Marshal.Alloc.malloc, but for multiple elements). )mallocmalloc :: Storable a =>  IO (Ptr a)zStorableaIOPtra;Allocate a block of memory that is sufficient to hold values of type a. The size of the area allocated is determined by the sizeOf method from the instance of Storable for the appropriate type. The memory may be deallocated using free or finalizerFree when no longer required. q makeValid makeValid :: FilePath -> FilePath?(FilePathFilePathTake a FilePath and make it valid; does not change already valid FilePaths.
isValid (makeValid x)
isValid x ==> makeValid x == x
makeValid "" == "_"
Windows: makeValid "c:\\test:of_test" == "c:\\test_of_test"
Windows: makeValid "test*" == "test_"
Windows: makeValid "c:\\test\\nul" == "c:\\test\\nul_"
Windows: makeValid "c:\\test\\prn.txt" == "c:\\test\\prn_.txt"
Windows: makeValid "c:\\test/prn.txt" == "c:\\test/prn_.txt"
Windows: makeValid "c:\\nul\\file" == "c:\\nul_\\file"
r makeValid makeValid :: FilePath -> FilePath!!FilePathFilePathTake a FilePath and make it valid; does not change already valid FilePaths.
isValid (makeValid x)
isValid x ==> makeValid x == x
makeValid "" == "_"
Windows: makeValid "c:\\test:of_test" == "c:\\test_of_test"
Windows: makeValid "test*" == "test_"
Windows: makeValid "c:\\test\\nul" == "c:\\test\\nul_"
Windows: makeValid "c:\\test\\prn.txt" == "c:\\test\\prn_.txt"
Windows: makeValid "c:\\test/prn.txt" == "c:\\test/prn_.txt"
Windows: makeValid "c:\\nul\\file" == "c:\\nul_\\file"
makeTokenParsermakeTokenParser :: Stream s m Char => GenLanguageDef s u m -> GenTokenParser s u mf$$StreamsmCharGenLanguageDefsumGenTokenParsersumThe expression makeTokenParser language creates a GenTokenParser record that contains lexical parsers that are defined using the definitions in the language record. The use of this function is quite stylized - one imports the appropiate language definition and selects the lexical parsers that are needed from the resulting GenTokenParser.
module Main where

import Text.Parsec
import qualified Text.Parsec.Token as P
import Text.Parsec.Language (haskellDef)

-- The parser
...

expr  =   parens expr
      <|> identifier
      <|> ...
     

-- The lexer
lexer       = P.makeTokenParser haskellDef    
    
parens      = P.parens lexer
braces      = P.braces lexer
identifier  = P.identifier lexer
reserved    = P.reserved lexer
...
]makeStableNamemakeStableName :: a -> IO (StableName a)''aIO StableNameaMakes a StableName for an arbitrary object. The object passed as the first argument is not evaluated by makeStableName. q makeRelative makeRelative :: FilePath -> FilePath -> FilePath)(FilePathFilePathFilePathhContract a filename, based on a relative path. There is no corresponding makeAbsolute function, instead use System.Directory.canonicalizePath which has the same effect.
         Valid y => equalFilePath x y || (isRelative x && makeRelative y x == x) || equalFilePath (y </> makeRelative y x) x
         makeRelative x x == "."
         null y || equalFilePath (makeRelative x (x </> y)) y || null (takeFileName x)
Windows: makeRelative "C:\\Home" "c:\\home\\bob" == "bob"
Windows: makeRelative "C:\\Home" "c:/home/bob" == "bob"
Windows: makeRelative "C:\\Home" "D:\\Home\\Bob" == "D:\\Home\\Bob"
Windows: makeRelative "C:\\Home" "C:Home\\Bob" == "C:Home\\Bob"
Windows: makeRelative "/Home" "/home/bob" == "bob"
Posix:   makeRelative "/Home" "/home/bob" == "/home/bob"
Posix:   makeRelative "/home/" "/home/bob/foo/bar" == "bob/foo/bar"
Posix:   makeRelative "/fred" "bob" == "bob"
Posix:   makeRelative "/file/test" "/file/test/fred" == "fred"
Posix:   makeRelative "/file/test" "/file/test/fred/" == "fred/"
Posix:   makeRelative "some/path" "some/path/a/b/c" == "a/b/c"
r makeRelative makeRelative :: FilePath -> FilePath -> FilePath.-FilePathFilePathFilePathhContract a filename, based on a relative path. There is no corresponding makeAbsolute function, instead use System.Directory.canonicalizePath which has the same effect.
         Valid y => equalFilePath x y || (isRelative x && makeRelative y x == x) || equalFilePath (y </> makeRelative y x) x
         makeRelative x x == "."
         null y || equalFilePath (makeRelative x (x </> y)) y || null (takeFileName x)
Windows: makeRelative "C:\\Home" "c:\\home\\bob" == "bob"
Windows: makeRelative "C:\\Home" "c:/home/bob" == "bob"
Windows: makeRelative "C:\\Home" "D:\\Home\\Bob" == "D:\\Home\\Bob"
Windows: makeRelative "C:\\Home" "C:Home\\Bob" == "C:Home\\Bob"
Windows: makeRelative "/Home" "/home/bob" == "bob"
Posix:   makeRelative "/Home" "/home/bob" == "/home/bob"
Posix:   makeRelative "/home/" "/home/bob/foo/bar" == "bob/foo/bar"
Posix:   makeRelative "/fred" "bob" == "bob"
Posix:   makeRelative "/file/test" "/file/test/fred" == "fred"
Posix:   makeRelative "/file/test" "/file/test/fred/" == "fred/"
Posix:   makeRelative "some/path" "some/path/a/b/c" == "a/b/c"
 main_name main_name :: HsName22HsNamemain_modmain_mod :: Module22Moduleylparenlparen :: Doc13+3DocA '(' character lowerlower :: Stream s m Char => ParsecT s u m Char33StreamsmCharParsecTsumChar_Parses a lower case character (a character between 'a' and 'z'). Returns the parsed character. 4LossOfPrecisionLossOfPrecision :: ArithException4v4ArithException lookupHeader lookupHeader ::  HeaderName -> [Header] ->  Maybe String(54 HeaderName[]HeaderMaybeStringilookupHeader hdr hdrs locates the first header matching hdr in the list hdrs.  lookAhead lookAhead :: Stream s m t => ParsecT s u m a -> ParsecT s u m aF66StreamsmtParsecTsumaParsecTsumaDlookAhead p parses p without consuming any input. looklook :: ReadPrec String66ReadPrecStringNLook-ahead: returns the part of the input that is left, without consuming it. looklook ::  ReadP Stringt7b7ReadPStringNLook-ahead: returns the part of the input that is left, without consuming it.  logCGIlogCGI ::  MonadIO m => String -> m ()888MonadIOmStringm()Logs some message using the server's logging facility. FIXME: does this have to be more general to support FastCGI etc? Maybe we should store log messages in the CGIState?  locationlocation :: Q Loc)99QLocMlocation gives you the Location at which this computation is spliced. localToUTCTimeOfDaylocalToUTCTimeOfDay :: TimeZone ->  TimeOfDay -> (Integer, TimeOfDay)1:9TimeZone TimeOfDay(,)Integer TimeOfDayPConvert a ToD in some timezone to a ToD in UTC, together with a day adjustment. localTimeToUTClocalTimeToUTC :: TimeZone ->  LocalTime -> UTCTime;:TimeZone LocalTimeUTCTimeAfind out what UTC time a given LocalTime in a given time zone is localTimeToUT1localTimeToUT1 :: Rational ->  LocalTime ->  UniversalTime;;Rational LocalTime UniversalTime=1st arg is observation meridian in degrees, positive is East localTimeOfDaylocalTimeOfDay ::  LocalTime ->  TimeOfDay<< LocalTime TimeOfDay LocalTime LocalTime :: Day ->  TimeOfDay ->  LocalTime)= =Day TimeOfDay LocalTime LocalTimedata  LocalTime_=A simple day and time aggregate, where the day is of the specified parameter, and the time is a TimeOfDay. Conversion of this (as local civil time) to UTC depends on the time zone. Conversion of this (as local mean time) to UT1 depends on the longitude. localDaylocalDay ::  LocalTime -> Day>> LocalTimeDayvLocalBoxLocalBox :: [String] -> BoxLabel)??[]StringBoxLabel loc_start loc_start :: Loc -> CharPos?v?LocCharPos loc_package loc_package :: Loc -> String??LocString loc_module loc_module :: Loc -> StringE@5@LocString loc_filename loc_filename :: Loc -> String@@LocString loc_endloc_end :: Loc -> CharPosA@LocCharPos LocLoc :: String -> String -> String -> CharPos -> CharPos -> LocAAStringStringStringCharPosCharPosLoc Locdata LocA litPlitP :: Lit -> PatQ5B'BLitPatQ LitPLitP :: Lit -> PatBtBLitPat litElitE :: Lit -> ExpQBBLitExpQ LitELitE :: Lit -> ExpCCLitExp Litdata LitEC listTlistT :: TypeQCyCTypeQ ListTListT :: TypeCCTypeListTListT :: m [a] ->  ListT m a$DDm[]aListTmaListTnewtype ListT m aYD listPlistP :: [PatQ] -> PatQDD[]PatQPatQ ListPListP :: [Pat] -> Pat ED[]PatPatListItemListItem :: Int -> Node_EQEIntNode listifylistify :: Typeable r =>  (r -> Bool) ->  GenericQ [r]EETypeablerrBoolGenericQ[]r1Get a list of all entities that meet a predicate  listElistE :: [ExpQ] -> ExpQFkF[]ExpQExpQ ListEListE :: [Exp] -> ExpFF[]ExpExpListAssertableclass ListAssertable tG listAssert listAssert :: ListAssertable t => [t] ->  AssertionG~GListAssertablet[]t Assertion listArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i eZHHIArrayaeIxi(,)ii[]eaieConstructs an immutable array from a list of initial elements. The list gives the elements of the array in ascending order beginning with the lowest index. list_tycon_namelist_tycon_name :: HsQNameJI@IHsQName list_tycon list_tycon :: HsTypeIIHsTypelist_cons_namelist_cons_name :: HsQNameIIHsQNamelinklink :: String -> HtmlAttr@J+JStringHtmlAttr lineToHtml lineToHtml :: String -> HtmlJJStringHtml@This converts a string, but keeps spaces as non-line-breakable.  lineToHtml lineToHtml :: String -> Html@K/KStringHtml@This converts a string, but keeps spaces as non-line-breakable.  lineToHtml lineToHtml :: String -> HtmlKKStringHtml@This converts a string, but keeps spaces as non-line-breakable.  linesToHtml linesToHtml :: [String] -> HtmlLsL[]StringHtmlThis converts a string, but keeps spaces as non-line-breakable, and adds line breaks between each of the strings in the input list.  linesToHtml linesToHtml :: [String] -> HtmlxMaM[]StringHtmlThis converts a string, but keeps spaces as non-line-breakable, and adds line breaks between each of the strings in the input list.  linesToHtml linesToHtml :: [String] -> HtmlfNON[]StringHtmlThis converts a string, but keeps spaces as non-line-breakable, and adds line breaks between each of the strings in the input list. flineslines ::  ByteString ->  [ByteString]\O;O ByteString[] ByteStringlines breaks a ByteString up into a list of ByteStrings at newline Chars. The resulting strings do not contain newlines.  linePragmas linePragmas :: PPHsMode -> BoolBP/PPPHsModeBool/add GHC-style LINE pragmas to output? y lineLength lineLength :: Style -> IntPPStyleIntLength of line, in chars linearTransferlinearTransfer :: (Int -> IO (Result a)) -> Int -> IO (Result ([Header], a))QqQIntIOResultaIntIOResult(,)[]Headera4Used when we know exactly how many bytes to expect. Linetype Line = Int#RLinetype Line = IntWR3Limittype Limit = CLongRlimelime :: StringRRStringliftIOliftIO ::  MonadIO m => IO a -> m a>SSMonadIOmIOamaliftlift :: ReadP a ->  ReadPrec aSSReadPaReadPrecaALift a precedence-insensitive ReadP to a ReadPrec. liftlift :: (MonadTrans t, Monad m) => m a -> t m avTCT MonadTranstMonadmmatmalibUAlibUA :: StringTTStringlili :: Html -> HtmlUTHtmlHtmllili :: Html -> HtmlLU=UHtmlHtmllili :: Html -> HtmlUUHtmlHtmllexWhilelexWhile :: (Char -> Bool) ->  Lex a StringVUCharBoolLexaStringlexTablexTab :: Lex a ()^VOVLexa()1Discard the next character, which must be a tab.  lexNewline lexNewline :: Lex a ()VVLexa()5Discard the next character, which must be a newline. lexerlexer :: (Token -> P a) -> P a|W`WTokenPaPalexemelexeme :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m aCXWGenTokenParsersumParsecTsumaParsecTsumalexeme p first applies parser p and than the whiteSpace parser, returning the value of p. Every lexical token (lexeme) is defined using lexeme, this way every parse starts at a point without white space. Parsers that use lexeme are called lexeme parsers in this document. The only point where the whiteSpace parser should be called explicitly is the start of the main parser in order to skip any leading white space.
mainParser  = do{ whiteSpace
                 ; ds <- many (lexeme digit)
                 ; eof
                 ; return (sum ds)
                 }
Lexemedata LexemeZHaskell lexemes.  LexContextdata  LexContextH[lexCharlexChar ::  ReadP Char[[ReadPCharlexlex ::  ReadP Lexeme[[ReadPLexemeLexdata Lex r a \letterletter :: Stream s m Char => ParsecT s u m Char\b\StreamsmCharParsecTsumCharWParses a letter (an upper case or lower case character). Returns the parsed character.  letSletS :: [DecQ] -> StmtQD].][]DecQStmtQ LetSLetS :: [Dec] -> Stmt]][]DecStmt letIndent letIndent :: PPHsMode -> Indent^]PPHsModeIndent=indentation of the declarations in a let expression  letEletE :: [DecQ] -> ExpQ -> ExpQ^^[]DecQExpQExpQ LetELetE :: [Dec] -> Exp -> Exp_^[]DecExpExp, lengthArray0 lengthArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO Int__StorableaEqaaPtraIOIntDReturn the number of elements in an array, excluding the terminator length_of_testslength_of_tests ::  TestOptions -> Ints`^` TestOptionsIntetime limit for test, in seconds. If zero, no time limit. Note: only GHC supports time limits. glengthlength ::  ByteString -> Int64:a$a ByteStringInt64SO(n\c)/ length returns the length of a ByteString as an Int64 flengthlength ::  ByteString -> Intaa ByteStringIntOO(1) length returns the length of a ByteString as an Int. legendlegend :: Html -> HtmlbbHtmlHtmllegendlegend :: Html -> HtmlbbHtmlHtmllegendlegend :: Html -> Html6c'cHtmlHtml LeftSquare LeftSquare :: Token|ctcToken LeftParen LeftParen :: TokenccTokenyLeftModeLeftMode :: ModedcMode&No indentation, infinitely long lines  LeftCurly LeftCurly :: TokenjdbdToken LeftArrow LeftArrow :: TokenddTokenylbracklbrack :: DocddDocA '[' character ylbracelbrace :: Doc2e,eDocA '{' character layoutlayout :: PPHsMode -> PPLayouteePPHsModePPLayoutPretty-printing style to use LayoutLayout :: Int ->  LexContext!f fInt LexContextglastlast ::  ByteString -> Word8fif ByteStringWord8]O(n\c)/ Extract the last element of a ByteString, which must be finite and non-empty. flastlast ::  ByteString -> Char8g#g ByteStringCharRO(1) Extract the last element of a packed string, which must be non-empty.  LanguageDef LanguageDef :: String -> String -> String -> Bool -> ParsecT s u m Char -> ParsecT s u m Char -> ParsecT s u m Char -> ParsecT s u m Char -> [String] ->  [String] ->  Bool -> GenLanguageDef s u mih StringStringStringBoolParsecTsumCharParsecTsumCharParsecTsumCharParsecTsumChar[]String[]StringBoolGenLanguageDefsum LanguageDeftype  LanguageDef st$ = GenLanguageDef String st Identityi LanguageDeftype  LanguageDef st$ = GenLanguageDef String st Identity[jlanglang :: String -> HtmlAttrjjStringHtmlAttrlanglang :: String -> HtmlAttrkjStringHtmlAttrlanglang :: String -> HtmlAttrokZkStringHtmlAttr lamElamE :: [PatQ] -> ExpQ -> ExpQkk[]PatQExpQExpQ LamELamE :: [Pat] -> Exp -> ExpEl-l[]PatExpExp lam1Elam1E :: PatQ -> ExpQ -> ExpQllPatQExpQExpQlabelslabels ::  Monad m => ParsecT s u m a -> [String] -> ParsecT s u m arm'mMonadmParsecTsuma[]StringParsecTsumalabellabel :: Html -> HtmlmmHtmlHtmllabellabel :: Html -> HtmlnnHtmlHtmllabellabel :: Html -> HtmlhnYnHtmlHtmllabellabel ::  Monad m => ParsecT s u m a -> String -> ParsecT s u m a#onMonadmParsecTsumaStringParsecTsumaLabelLabel :: String -> NodeyohoStringNodeKW_WhereKW_Where :: TokenooToken KW_Unsafe KW_Unsafe :: TokenooTokenKW_TypeKW_Type :: Token?p7pTokenKW_ThenKW_Then :: TokenpwpTokenKW_SafeKW_Safe :: TokenppToken KW_Qualified KW_Qualified :: Token qqTokenKW_OfKW_Of :: TokenEq=qToken KW_NewType KW_NewType :: TokenqqToken KW_Module KW_Module :: TokenqqTokenKW_LetKW_Let :: Token rrToken KW_Instance KW_Instance :: TokenUrMrToken KW_InfixR KW_InfixR :: TokenrrToken KW_InfixL KW_InfixL :: TokenrrTokenKW_InfixKW_Infix :: TokenssTokenKW_InKW_In :: Token[sSsToken KW_Import KW_Import :: TokenssTokenKW_IfKW_If :: TokenssToken KW_Hiding KW_Hiding :: TokenttToken KW_Foreign KW_Foreign :: Tokenet]tToken KW_Export KW_Export :: TokenttTokenKW_ElseKW_Else :: TokenttTokenKW_DoKW_Do :: Token%uuToken KW_Deriving KW_Deriving :: TokenmueuToken KW_Default KW_Default :: TokenuuTokenKW_DataKW_Data :: TokenuuTokenKW_ClassKW_Class :: Token5v-vTokenKW_CaseKW_Case :: TokenuvmvTokenKW_AsKW_As :: TokenvvTokenkeyboardkeyboard :: Html -> Html wvHtmlHtmlkeyboardkeyboard :: Html -> HtmlawRwHtmlHtmlkeyboardkeyboard :: Html -> HtmlwwHtmlHtmlqjoinPathjoinPath ::  [FilePath] -> FilePath)x x[]FilePathFilePathJoin path elements back together.
Valid x => joinPath (splitPath x) == x
joinPath [] == ""
Posix: joinPath ["test","file","path"] == "test/file/path"
rjoinPathjoinPath ::  [FilePath] -> FilePath@y#y[]FilePathFilePathJoin path elements back together.
Valid x => joinPath (splitPath x) == x
joinPath [] == ""
Posix: joinPath ["test","file","path"] == "test/file/path"
q joinDrive joinDrive :: FilePath -> FilePath -> FilePathozNzFilePathFilePathFilePathJoin a drive and the rest of the path.
         uncurry joinDrive (splitDrive x) == x
Windows: joinDrive "C:" "foo" == "C:foo"
Windows: joinDrive "C:\\" "bar" == "C:\\bar"
Windows: joinDrive "\\\\share" "foo" == "\\\\share\\foo"
Windows: joinDrive "/:" "foo" == "/:\\foo"
r joinDrive joinDrive :: FilePath -> FilePath -> FilePath|{FilePathFilePathFilePathJoin a drive and the rest of the path.
         uncurry joinDrive (splitDrive x) == x
Windows: joinDrive "C:" "foo" == "C:foo"
Windows: joinDrive "C:\\" "bar" == "C:\\bar"
Windows: joinDrive "\\\\share" "foo" == "\\\\share\\foo"
Windows: joinDrive "/:" "foo" == "/:\\foo"
 javaStyle javaStyle :: LanguageDef st}x} LanguageDefstThis is a minimal token definition for Java style languages. It defines the style of comments, valid identifiers and case sensitivity. It does not define any reserved words or operators. ixmap ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i e~IArrayaeIxiIxj(,)iiijajeaiecReturns a new array derived from the original array by applying a function to each of the indices. giterateiterate :: (Word8 -> Word8) -> Word8 ->  ByteStringWord8Word8Word8 ByteStringiterate f x returns an infinite ByteString of repeated applications of f to x:
iterate f x == [x, f x, f (f x), ...]
italicsitalics :: Html -> Html HtmlHtmlitalicsitalics :: Html -> HtmlbSHtmlHtmlitalicsitalics :: Html -> HtmlHtmlHtmlitagitag :: String -> Html StringHtmlDConstructs an element with a custom name, and without any children. itagitag :: String -> HtmlStringHtmlDConstructs an element with a custom name, and without any children. itagitag :: String -> Html<+StringHtmlDConstructs an element with a custom name, and without any children. . isValidErrno isValidErrno :: Errno -> Bool҃ErrnoBoolYield True if the given Errno value is valid on the system. This implies that the Eq instance of Errno is also system dependent as it is only defined for valid values of Errno. qisValidisValid :: FilePath -> BoolFilePathBoolIs a FilePath valid, i.e. could you create a file like it?
         isValid "" == False
Posix:   isValid "/random_ path:*" == True
Posix:   isValid x == not (null x)
Windows: isValid "c:\\test" == True
Windows: isValid "c:\\test:of_test" == False
Windows: isValid "test*" == False
Windows: isValid "c:\\test\\nul" == False
Windows: isValid "c:\\test\\prn.txt" == False
Windows: isValid "c:\\nul\\file" == False
Windows: isValid "\\\\" == False
risValidisValid :: FilePath -> Bool<)FilePathBoolIs a FilePath valid, i.e. could you create a file like it?
         isValid "" == False
Posix:   isValid "/random_ path:*" == True
Posix:   isValid x == not (null x)
Windows: isValid "c:\\test" == True
Windows: isValid "c:\\test:of_test" == False
Windows: isValid "test*" == False
Windows: isValid "c:\\test\\nul" == False
Windows: isValid "c:\\test\\prn.txt" == False
Windows: isValid "c:\\nul\\file" == False
Windows: isValid "\\\\" == False
!isUserErrorTypeisUserErrorType ::  IOErrorType -> Boolzd IOErrorTypeBool&I/O error that is programmer-defined. ! isUserError isUserError :: IOError -> BoolIOErrorBoolEA programmer-defined error value constructed using userError.  isTotalOrder isTotalOrder ::  (Arbitrary a, Show a, Ord a) => a -> a -> PropertyȊ ArbitraryaShowaOrdaaaPropertyg isSuffixOf isSuffixOf ::  ByteString ->  ByteString -> Booli ByteString ByteStringBoolO(n) The isSuffixOf function takes two ByteStrings and returns True iff the first is a suffix of the second. The following holds:
isSuffixOf x y == reverse x `isPrefixOf` reverse y
f isSuffixOf isSuffixOf ::  ByteString ->  ByteString -> Booľ ByteString ByteStringBoolHO(n) The isSuffixOf function takes two ByteStrings and returns True iff the first is a suffix of the second. The following holds:
isSuffixOf x y == reverse x `isPrefixOf` reverse y
However, the real implemenation uses memcmp to compare the end of the string only, with no reverse required..  isStrictisStrict :: Q StrictrQStrict IsStrictIsStrict :: StrictĎStrictb isSpaceWord8 isSpaceWord8 :: Word8 -> Bool&Word8BoolaSelects words corresponding to white-space characters in the Latin-1 range ordered by frequency. b isSpaceChar8 isSpaceChar8 :: Char -> Bool؏CharBool4Selects white-space characters in the Latin-1 range qisSearchPathSeparatorisSearchPathSeparator :: Char -> Bool~CharBoolgIs the character a file separator?
isSearchPathSeparator a == (a == searchPathSeparator)
risSearchPathSeparatorisSearchPathSeparator :: Char -> BoolfWCharBoolgIs the character a file separator?
isSearchPathSeparator a == (a == searchPathSeparator)
q isRelative isRelative :: FilePath -> Bool1FilePathBoollIs a path relative, or is it fixed to the root?
Windows: isRelative "path\\test" == True
Windows: isRelative "c:\\test" == False
Windows: isRelative "c:test" == True
Windows: isRelative "c:" == True
Windows: isRelative "\\\\foo" == False
Windows: isRelative "/foo" == True
Posix:   isRelative "test/path" == True
Posix:   isRelative "/test" == False
r isRelative isRelative :: FilePath -> BoolFilePathBoollIs a path relative, or is it fixed to the root?
Windows: isRelative "path\\test" == True
Windows: isRelative "c:\\test" == False
Windows: isRelative "c:test" == True
Windows: isRelative "c:" == True
Windows: isRelative "\\\\foo" == False
Windows: isRelative "/foo" == True
Posix:   isRelative "test/path" == True
Posix:   isRelative "/test" == False
g isPrefixOf isPrefixOf ::  ByteString ->  ByteString -> Bool֕ ByteString ByteStringBoolO(n) The isPrefixOf function takes two ByteStrings and returns True iff the first is a prefix of the second. f isPrefixOf isPrefixOf ::  ByteString ->  ByteString -> Bool ByteString ByteStringBoolO(n) The isPrefixOf function takes two ByteStrings and returns True iff the first is a prefix of the second. !isPermissionErrorTypeisPermissionErrorType ::  IOErrorType -> Bool IOErrorTypeBoolI/O error where the operation failed because the user does not have sufficient operating system privilege to perform that operation. !isPermissionErrorisPermissionError :: IOError -> BoolIOErrorBoolAn error indicating that an IO operation failed because the user does not have sufficient operating system privilege to perform that operation. qisPathSeparatorisPathSeparator :: Char -> BoolCharBoolRather than using (== pathSeparator), use this. Test if something is a path separator.
isPathSeparator a == (a `elem` pathSeparators)
risPathSeparatorisPathSeparator :: Char -> BoolCharBoolRather than using (== pathSeparator), use this. Test if something is a path separator.
isPathSeparator a == (a `elem` pathSeparators)
isNoHtmlisNoHtml :: Html -> BoolHtmlBool1Checks whether the given piece of HTML is empty. isNoHtmlisNoHtml :: Html -> BoolwHtmlBool1Checks whether the given piece of HTML is empty. isNoHtmlisNoHtml :: Html -> BoolHtmlBool1Checks whether the given piece of HTML is empty. ismapismap :: HtmlAttrwHtmlAttrismapismap :: HtmlAttrĝHtmlAttrismapismap :: HtmlAttrHtmlAttr  isLeapYear isLeapYear :: Integer -> BoolhVIntegerBoolHIs this year a leap year according to the proleptic Gregorian calendar? f isInfixOf isInfixOf ::  ByteString ->  ByteString -> Bool8 ByteString ByteStringBoolCheck whether one string is a substring of another. isInfixOf p s is equivalent to not (null (findSubstrings p s)). isindexisindex :: HtmlHtml!isIllegalOperationErrorTypeisIllegalOperationErrorType ::  IOErrorType -> Boolr IOErrorTypeBool/I/O error where the operation is not possible. !isIllegalOperationisIllegalOperation :: IOError -> Bool)IOErrorBoolZAn error indicating that an IO operation failed because the operation was not possible. Any computation which returns an IO result may fail with isIllegalOperation. In some cases, an implementation will not be able to distinguish between the possible error causes. In this case it should fail with isIllegalOperation. !isFullErrorTypeisFullErrorType ::  IOErrorType -> Bool IOErrorTypeBoolAI/O error where the operation failed because the device is full. ! isFullError isFullError :: IOError -> BoolIOErrorBoolSAn error indicating that an IO operation failed because the device is full. qisExtSeparatorisExtSeparator :: Char -> BoolSDCharBool_Is the character an extension character?
isExtSeparator a == (a == extSeparator)
risExtSeparatorisExtSeparator :: Char -> BoolCharBool_Is the character an extension character?
isExtSeparator a == (a == extSeparator)
!isEOFErrorTypeisEOFErrorType ::  IOErrorType -> Boolѥ IOErrorTypeBoolOI/O error where the operation failed because the end of file has been reached. ! isEOFError isEOFError :: IOError -> BoolIOErrorBoolaAn error indicating that an IO operation failed because the end of file has been reached. ?isEmptySampleVarisEmptySampleVar ::  SampleVar a -> IO Bool{\ SampleVaraIOBool>Returns True if the SampleVar is currently empty. Note that this function is only useful if you know that no other threads can be modifying the state of the SampleVar, because otherwise the state of the SampleVar may have changed by the time you see the result of isEmptySampleVar. ; isEmptyMVar isEmptyMVar :: MVar a -> IO Bool' MVaraIOBool9Check whether a given MVar is empty. Notice that the boolean value returned is just a snapshot of the state of the MVar. By the time you get to react on its result, the MVar may have been filled (or emptied) - so be extremely careful when using this operation. Use tryTakeMVar instead if possible. < isEmptyChan isEmptyChan :: Chan a -> IO BoolΪChanaIOBool:Returns True if the supplied Chan is empty. yisEmptyisEmpty :: Doc -> Bool\NDocBool-Returns True if the document is empty qisDriveisDrive :: FilePath -> BoolԫFilePathBoolIs an element a drive risDriveisDrive :: FilePath -> Bool[HFilePathBoolIs an element a drive !isDoesNotExistErrorTypeisDoesNotExistErrorType ::  IOErrorType -> Bool߬ IOErrorTypeBoolRI/O error where the operation failed because one of its arguments does not exist. !isDoesNotExistErrorisDoesNotExistError :: IOError -> BoolIOErrorBooldAn error indicating that an IO operation failed because one of its arguments does not exist. isCommutableBy isCommutableBy :: (Show a, Testable prop) => (b -> b -> prop) -> Gen a ->  (a -> a -> b) -> PropertyɮShowaTestablepropbbpropGenaaabProperty isCommutable isCommutable :: (Arbitrary a, Show a, Eq b) =>  (a -> a -> b) -> Propertyϯ ArbitraryaShowaEqbaabPropertyisBottomisBottom :: a -> Bool!aBoolLook out behind you! These can be misused badly. However, in the context of a batch tester, can also be very useful. Examples of use of bottom and isBottom:
{- test for abort -}
prop_head2 = isBottom (head [])
{- test for strictness -}
prop_head3 = isBottom (head bottom)
isAssociativeBy isAssociativeBy :: (Show a, Testable prop) => (a -> a -> prop) -> Gen a ->  (a -> a -> a) -> Property9ShowaTestablepropaapropGenaaaaProperty isAssociative isAssociative :: (Arbitrary a, Show a, Eq a) =>  (a -> a -> a) -> Property ArbitraryaShowaEqaaaaProperty!isAlreadyInUseErrorTypeisAlreadyInUseErrorType ::  IOErrorType -> Boolxb IOErrorTypeBoolyI/O error where the operation failed because one of its arguments is a single-use resource, which is already being used. !isAlreadyInUseErrorisAlreadyInUseError :: IOError -> BooleSIOErrorBoolAn error indicating that an IO operation failed because one of its arguments is a single-use resource, which is already being used (for example, opening the same file twice for writing might give this error). !isAlreadyExistsErrorTypeisAlreadyExistsErrorType ::  IOErrorType -> Boolõ IOErrorTypeBoolRI/O error where the operation failed because one of its arguments already exists. !isAlreadyExistsErrorisAlreadyExistsError :: IOError -> BoolyIOErrorBooldAn error indicating that an IO operation failed because one of its arguments already exists. q isAbsolute isAbsolute :: FilePath -> BoolS@FilePathBoolV
not . isRelative
isAbsolute x == not (isRelative x)
r isAbsolute isAbsolute :: FilePath -> Bool FilePathBoolV
not . isRelative
isAbsolute x == not (isRelative x)
4irrefutPatErrorirrefutPatError :: Addr# -> aŸAddr#aIOUArraydata IOUArray i eQMutable, unboxed, strict arrays in the IO monad. The type arguments are as follows:
  • i: the index type of the array (should be an instance of Ix)
  • e: the element type of the array. Only certain element types are supported: see Data.Array.MArray for a list of instances.
 IOToDiffArraydata  IOToDiffArray a i e`An arbitrary MArray type living in the IO monad can be converted to a diff array. 4 IOExceptiondata  IOException,Exceptions that occur in the IO monad. An IOException records a more specific error type, a descriptive string and maybe the handle that was used when the error was flagged. !ioeSetLocationioeSetLocation :: IOError -> String -> IOErrorvYIOErrorStringIOError! ioeSetHandle ioeSetHandle :: IOError -> Handle -> IOError߼IOErrorHandleIOError!ioeSetFileNameioeSetFileName :: IOError -> FilePath -> IOErrorkIOErrorFilePathIOError!ioeSetErrorTypeioeSetErrorType :: IOError ->  IOErrorType -> IOError IOError IOErrorTypeIOError!ioeSetErrorStringioeSetErrorString :: IOError -> String -> IOErrorIOErrorStringIOError! IOErrorTypedata  IOErrorTypeKAn abstract type that contains a value for each variant of IOError. !ioErrorioError :: IOError -> IO aIOErrorIOa0Raise an IOError in the IO monad. 4ioErrorioError :: IOError -> IO a#IOErrorIOa0Raise an IOError in the IO monad. !IOErrortype IOError = IOException%The Haskell 98 type for exceptions in the IO monad. Any I/O operation may raise an IOError instead of returning a result. For a more general type of exception, including also those that arise in pure code, see Control.Exception.Exception. In Haskell 98, this is an opaque type. !ioeGetLocationioeGetLocation :: IOError -> String(IOErrorString! ioeGetHandle ioeGetHandle :: IOError ->  Maybe HandleIOErrorMaybeHandle!ioeGetFileNameioeGetFileName :: IOError -> Maybe FilePath"IOErrorMaybeFilePath!ioeGetErrorTypeioeGetErrorType :: IOError ->  IOErrorTypeIOError IOErrorType!ioeGetErrorStringioeGetErrorString :: IOError -> StringIOErrorStringIntTokIntTok :: Integer -> TokenlYIntegerToken intPrimLintPrimL :: Integer -> LitIntegerLit IntPrimLIntPrimL :: Integer -> Lit$IntegerLitg intersperse intersperse :: Word8 ->  ByteString ->  ByteStringWord8 ByteString ByteStringThe intersperse function takes a Word8 and a ByteString and `intersperses' that byte between the elements of the ByteString. It is analogous to the intersperse function on Lists. f intersperse intersperse :: Char ->  ByteString ->  ByteString Char ByteString ByteStringO(n) The intersperse function takes a Char and a ByteString and `intersperses' that Char between the elements of the ByteString. It is analogous to the intersperse function on Lists. g intercalate intercalate ::  ByteString ->  [ByteString] ->  ByteStringS ByteString[] ByteString ByteStringO(n) The intercalate function takes a ByteString and a list of ByteStrings and concatenates the list after interspersing the first argument between each element of the list. f intercalate intercalate ::  ByteString ->  [ByteString] ->  ByteString ByteString[] ByteString ByteStringO(n) The intercalate function takes a ByteString and a list of ByteStrings and concatenates the list after interspersing the first argument between each element of the list. ginteractinteract :: (ByteString -> ByteString) -> IO (); ByteString ByteStringIO()The interact function takes a function of type ByteString -> ByteString as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device. finteractinteract :: (ByteString -> ByteString) -> IO () ByteString ByteStringIO()The interact function takes a function of type ByteString -> ByteString as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device.  integerLintegerL :: Integer -> Lit$IntegerLit IntegerLIntegerL :: Integer -> LitoIntegerLityintegerinteger :: Integer -> DocIntegerDoc'
integer n = text (show n)
integerinteger :: GenTokenParser s u m -> ParsecT s u m IntegeriGenTokenParsersumParsecTsumIntegerUThis lexeme parser parses an integer (a whole number). This parser is like natural except that it can be prefixed with sign (i.e. '-' or '+'). Returns the value of the number. The number can be specified in decimal, hexadecimal or octal. The number is parsed according to the grammar rules in the Haskell report. intAttrintAttr :: String -> Int -> HtmlAttroUStringIntHtmlAttrintAttrintAttr :: String -> Int -> HtmlAttrStringIntHtmlAttrintAttrintAttr :: String -> Int -> HtmlAttr[AStringIntHtmlAttryintint :: Int -> DocIntDoc#
int n = text (show n)
IntInt :: Integer -> Lexeme  IntegerLexemeInteger literal  instanceD  instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQCxtQTypeQ[]DecQDecQ InstanceD  InstanceD :: Cxt -> Type -> [Dec] -> DecH*CxtType[]DecDect insideHpcPos insideHpcPos :: HpcPos -> HpcPos -> BoolHpcPosHpcPosBoolEasks the question, is the first argument inside the second argument.  insertHeaders insertHeaders :: HasHeaders a => [Header] -> a -> a| HasHeadersa[]HeaderaaUinsertHeaders hdrs x appends multiple headers to x's existing set. insertHeaderIfMissinginsertHeaderIfMissing :: HasHeaders a => HeaderSetter af HasHeadersa HeaderSetterainsertHeaderIfMissing hdr val x adds the new header only if no previous header with name hdr exists in x.  insertHeader insertHeader :: HasHeaders a => HeaderSetter ak HasHeadersa HeaderSetterainsertHeader hdr val x inserts a header with the given header name and value. Does not check for existing headers with same name, allowing duplicates to be introduce (use replaceHeader if you want to avoid this.) insins :: Html -> HtmlHtmlHtmlinsins :: Html -> HtmlHtmlHtmlinsins :: Html -> Html_PHtmlHtml inputValue inputValue :: Input ->  ByteStringInput ByteString inputFilename inputFilename :: Input ->  Maybe String@%InputMaybeString inputContentTypeinputContentType :: Input ->  ContentTypeInput ContentTypeinputinput :: HtmlHtmlinputinput :: Html,%Htmlinputinput :: Htmlf_Html Input Input ::  ByteString ->  Maybe String ->  ContentType -> Input ByteStringMaybeString ContentTypeInput Inputdata InputA4The value of an input parameter, and some metadata. binlinePerformIOinlinePerformIO :: IO a -> aIOaaJust like unsafePerformIO, but we inline it. Big performance gains as it exposes lots of things to further inlining. Very unsafe. In particular, you should do no memory allocation inside an inlinePerformIO block. On Hugs this is just unsafePerformIO. ginitsinits ::  ByteString ->  [ByteString]\; ByteString[] ByteStringXO(n) Return all initial segments of the given ByteString, shortest first. finitsinits ::  ByteString ->  [ByteString]& ByteString[] ByteStringXO(n) Return all initial segments of the given ByteString, shortest first.  initialPos initialPos ::  SourceName ->  SourcePos SourceName SourcePosvCreate a new SourcePos with the given source name, and line number and column number set to 1, the upper left. ginitinit ::  ByteString ->  ByteString ByteString ByteStringSO(n\c)/ Return all the elements of a ByteString except the last one. finitinit ::  ByteString ->  ByteStringn ByteString ByteStringO(1) Return all the elements of a ByteString except the last one. An exception will be thrown in the case of an empty ByteString.  InfoQtype InfoQ = Q InfoR Infodata Info~ InfixRInfixR :: FixityDirectionFixityDirection infixP infixP :: PatQ -> Name -> PatQ -> PatQP5PatQNamePatQPatQ InfixP InfixP :: Pat -> Name -> Pat -> PatPatNamePatPat InfixNInfixN :: FixityDirection FixityDirection InfixLInfixL :: FixityDirectionn\FixityDirection infixE infixE ::  Maybe ExpQ -> ExpQ ->  Maybe ExpQ -> ExpQ MaybeExpQExpQMaybeExpQExpQ InfixE InfixE ::  Maybe Exp -> Exp ->  Maybe Exp -> ExpyMaybeExpExpMaybeExpExp infixC infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQbQ(,)StrictTypeNameQ(,)StrictTypeConQ InfixC InfixC ::  StrictType -> Name ->  StrictType -> Con StrictTypeName StrictTypeCon infixApp infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQ|aExpQExpQExpQExpQInfixInfix :: ParsecT s u m (a -> a -> a) -> Assoc -> Operator s u m a4ParsecTsumaaaAssocOperatorsumaindicesindices :: (IArray a e, Ix i) => a i e -> [i]IArrayaeIxiaie[]i5Returns a list of all the valid indices in an array. 4IndexOutOfBoundsIndexOutOfBounds :: String -> ArrayExceptionv[StringArrayExceptionCAn attempt was made to index an array outside its declared bounds. gindexindex ::  ByteString -> Int64 -> Word81 ByteStringInt64Word8KO(c) ByteString index (subscript) operator, starting from 0. findexindex ::  ByteString -> Int -> Char ByteStringIntCharKO(1) ByteString index (subscript) operator, starting from 0. Indenttype Indent = Intq incSourceLine incSourceLine ::  SourcePos -> Line ->  SourcePos SourcePosLine SourcePos1Increments the line number of a source position.  incSourceLine incSourceLine ::  SourcePos -> Line ->  SourcePos SourcePosLine SourcePos1Increments the line number of a source position. incSourceColumnincSourceColumn ::  SourcePos -> Column ->  SourcePos^ SourcePosColumn SourcePos3Increments the column number of a source position. incSourceColumnincSourceColumn ::  SourcePos -> Column ->  SourcePosF% SourcePosColumn SourcePos3Increments the column number of a source position.  importSpecs importSpecs ::  HsImportDecl -> Maybe (Bool, [HsImportSpec])# HsImportDeclMaybe(,)Bool[] HsImportSpecuoptional list of import specifications. The Bool is True if the names are excluded by hiding. importQualifiedimportQualified ::  HsImportDecl -> Bool HsImportDeclBoolimported qualified?  importModule importModule ::  HsImportDecl -> Module HsImportDeclModulename of the module imported.  importLoc importLoc ::  HsImportDecl -> SrcLoc* HsImportDeclSrcLoc)position of the import keyword.  ImportFImportF :: Callconv -> Safety -> String -> Name -> Type -> ForeignCallconvSafetyStringNameTypeForeignimportAsimportAs ::  HsImportDecl ->  Maybe Modulep HsImportDeclMaybeModule.optional alias name in an as clause. imageimage :: HtmlHtmlimageimage :: Html4-Htmlimageimage :: HtmlngHtml!illegalOperationErrorTypeillegalOperationErrorType ::  IOErrorType IOErrorType/I/O error where the operation is not possible. iframeiframe :: Html -> HtmlaRHtmlHtml identStart identStart :: GenLanguageDef s u m -> ParsecT s u m CharGenLanguageDefsumParsecTsumCharoThis parser should accept any start characters of identifiers. For example letter <|> char "_".  identLetter identLetter :: GenLanguageDef s u m -> ParsecT s u m CharGenLanguageDefsumParsecTsumCharvThis parser should accept any legal tail characters of identifiers. For example alphaNum <|> char "_". IdentityIdentity :: a ->  Identity aaIdentityaIdentitynewtype Identity a('Identity wrapper. Abstraction for wrapping up a object. If you have an monadic function, say:
example :: Int -> Identity Int
example x = return (x*x)
you can "run" it, using
Main> runIdentity (example 42)
1764 :: Int
A typical use of the Identity monad is to derive a monad from a monad transformer.
-- derive the Control.Monad.State.State monad using the Control.Monad.State.StateT monad transformer
type Control.Monad.State.State s a = Control.Monad.State.StateT s Identity a
The runIdentity label is used in the type definition because it follows a style of monad definition that explicitly represents monad values as computations. In this style, a monadic computation is built up using the monadic operators and then the value of the computation is extracted using the run****** function. Because the Identity monad does not do any computation, its definition is trivial. For a better example of this style of monad, see the Control.Monad.State.State monad.  identifier identifier :: String -> HtmlAttrStringHtmlAttr identifier identifier :: String -> HtmlAttr StringHtmlAttr identifier identifier :: String -> HtmlAttrrStringHtmlAttr identifier identifier :: GenTokenParser s u m -> ParsecT s u m String.GenTokenParsersumParsecTsumStringXThis lexeme parser parses a legal identifier. Returns the identifier string. This parser will fail on identifiers that are reserved words. Legal identifier (start) characters and reserved words are defined in the LanguageDef that is passed to makeTokenParser. An identifier is treated as a single token using try. IdentIdent :: String -> LexemeStringLexeme4Haskell identifier, e.g. foo, Baz IArrayclass IArray a eIClass of immutable array types. An array type has the form (a i e) where a is the array type constructor (kind * -> * -> *), i is the index type (a member of the class Ix), and e is the element type. The IArray class is parameterised over both a and e, so that instances specialised to certain element types can be defined.  HuffmanOnly HuffmanOnly :: CompressionStrategyG1CompressionStrategyIUse HuffmanOnly to force Huffman encoding only (no string match).  HuffmanOnly HuffmanOnly :: CompressionStrategyCompressionStrategyIUse HuffmanOnly to force Huffman encoding only (no string match).  httpVersion httpVersion :: String~String HTTPResponsetype  HTTPResponse a = Response a HTTPRequesttype  HTTPRequest a = Request a httpequiv httpequiv :: String -> HtmlAttroStringHtmlAttr httpequiv httpequiv :: String -> HtmlAttrStringHtmlAttr httpequiv httpequiv :: String -> HtmlAttrP;StringHtmlAttrHtmlTreedata HtmlTreeThe basic idea is you render your structure in the form of this tree, and then use treeHtml to turn it into a Html object with the structure explicit.  HtmlTabledata  HtmlTableQWe internally represent the Cell inside a Table with an object of the type
Int -> Int -> Html
When we render it later, we find out how many columns or rows this cell will span over, and can include the correct colspan/rowspan command.  HTMLTABLEclass  HTMLTABLE htHtmlNode HtmlNode :: Html ->  [HtmlTree] -> Html -> HtmlTree'Html[]HtmlTreeHtmlHtmlTreeHtmlLeafHtmlLeaf :: Html -> HtmlTreetHtmlHtmlTreehtmlAttrhtmlAttr :: String -> Html -> HtmlAttrStringHtmlHtmlAttrhtmlAttrhtmlAttr :: String -> Html -> HtmlAttr{`StringHtmlHtmlAttrhtmlAttrhtmlAttr :: String -> Html -> HtmlAttrStringHtmlHtmlAttrHtmlAttrdata HtmlAttr)  Attributes with name and value. HtmlAttrdata HtmlAttr}  Attributes with name and value. HtmlAttrdata HtmlAttr  Attributes with name and value. Htmldata Html Htmldata HtmlI Htmldata Htmlu HTMLclass HTML a HTML is the class of things that can be validly put inside an HTML tag. So this can be one or more Html elements, or a String, for example. HTMLclass HTML am HTML is the class of things that can be validly put inside an HTML tag. So this can be one or more Html elements, or a String, for example. HTMLclass HTML a6 HTML is the class of things that can be validly put inside an HTML tag. So this can be one or more Html elements, or a String, for example.  HsWildCard HsWildCard :: HsExp  HsExppatterns only HsVarOpHsVarOp :: HsName -> HsOp~ m HsNameHsOp!variable operator (varop)  HsVarName HsVarName :: HsName -> HsCName HsNameHsCNamename of a method or field HsVarHsVar :: HsQName -> HsExpwdHsQNameHsExp variable HsUnsafeHsUnsafe :: HsSafetyHsSafety!call will not generate callbacks  HsUnitCon HsUnitCon ::  HsSpecialCon;, HsSpecialCon+unit type and data constructor () HsUnGuardedRhsHsUnGuardedRhs :: HsExp -> HsRhsHsExpHsRhs'unguarded right hand side (exp) HsUnGuardedAltHsUnGuardedAlt :: HsExp ->  HsGuardedAltsmTHsExp HsGuardedAlts-> exp  HsUnBangedTy HsUnBangedTy :: HsType ->  HsBangTypeHsType HsBangTypenon-strict component HsTyVarHsTyVar :: HsName -> HsTypejWHsNameHsTypetype variable  HsTyTuple HsTyTuple :: [HsType] -> HsType[]HsTypeHsType tuple type  HsTypeSig  HsTypeSig :: SrcLoc -> [HsName] ->  HsQualType -> HsDeclfSrcLoc[]HsName HsQualTypeHsDecl HsTypeDecl  HsTypeDecl :: SrcLoc -> HsName -> [HsName] -> HsType -> HsDeclMSrcLocHsName[]HsNameHsTypeHsDeclHsTypedata HsType}%Haskell types and type constructors. HsTyFunHsTyFun :: HsType -> HsType -> HsTypeHsTypeHsTypeHsTypefunction type HsTyConHsTyCon :: HsQName -> HsTypetHsQNameHsTypenamed type or type constructor HsTyAppHsTyApp :: HsType -> HsType -> HsTypeHsTypeHsTypeHsType"application of a type constructor  HsTupleCon HsTupleCon :: Int ->  HsSpecialConInt HsSpecialCon?n-ary tuple type and data constructors (,) etc HsTupleHsTuple :: [HsExp] -> HsExpL5[]HsExpHsExptuple expression HsSymbolHsSymbol :: String -> HsNameStringHsNamevarsym or consym  HsStringPrim HsStringPrim :: String ->  HsLiteralJ4String HsLiteralGHC unboxed string literal HsStringHsString :: String ->  HsLiteralString HsLiteralstring literal HsStmtdata HsStmt lThis type represents both stmt in a do-expression, and qual in a list comprehension.  HsSpecialCondata  HsSpecialConzConstructors with special syntax. These names are never qualified, and always refer to builtin type or data constructors. HsSafetydata HsSafety`+Safety level for invoking a foreign entity HsSafeHsSafe :: HsSafetyHsSafetycall may generate callbacks HsRightSectionHsRightSection :: HsQOp -> HsExp -> HsExpkSHsQOpHsExpHsExp8right section (qop exp) HsRhsdata HsRhs6The right hand side of a function or pattern binding.  HsRecUpdate HsRecUpdate :: HsExp -> [HsFieldUpdate] -> HsExpsHsExp[] HsFieldUpdateHsExprecord update expression  HsRecDecl  HsRecDecl :: SrcLoc -> HsName -> [([HsName], HsBangType)] ->  HsConDecl:SrcLocHsName[](,)[]HsName HsBangType HsConDeclrecord constructor  HsRecConstr HsRecConstr :: HsQName -> [HsFieldUpdate] -> HsExp(HsQName[] HsFieldUpdateHsExprecord construction expression HsQVarOpHsQVarOp :: HsQName -> HsQOpHsQNameHsQOp"variable operator (qvarop)  HsQualType HsQualType ::  HsContext -> HsType ->  HsQualTypeU3 HsContextHsType HsQualType HsQualTypedata  HsQualTypeKA type qualified with a context. An unqualified type has an empty context.  HsQualifier HsQualifier :: HsExp -> HsStmt<*HsExpHsStmtan exp by itself: in a do-expression, an action whose result is discarded; in a list comprehension, a guard expression HsQOpdata HsQOpKPossibly qualified infix operators (qop), appearing in expressions. HsQNamedata HsQNamen UThis type is used to represent qualified variables, and also qualified constructors. HsQConOpHsQConOp :: HsQName -> HsQOp#!!HsQNameHsQOp%constructor operator (qconop)  HsPWildCard HsPWildCard :: HsPat!!HsPatwildcard pattern (_) HsPVarHsPVar :: HsName -> HsPat"!HsNameHsPat variable HsPTupleHsPTuple :: [HsPat] -> HsPatu"^"[]HsPatHsPattuple pattern HsPRecHsPRec :: HsQName ->  [HsPatField] -> HsPat #"HsQName[] HsPatFieldHsPatlabelled pattern HsPParenHsPParen :: HsPat -> HsPatv#e#HsPatHsPatparenthesized pattern HsPNegHsPNeg :: HsPat -> HsPat##HsPatHsPatnegated pattern HsPLitHsPLit ::  HsLiteral -> HsPatT$?$ HsLiteralHsPatliteral constant HsPListHsPList :: [HsPat] -> HsPat$$[]HsPatHsPat list pattern  HsPIrrPat HsPIrrPat :: HsPat -> HsPat2%!%HsPatHsPat!irrefutable pattern (~)  HsPInfixApp  HsPInfixApp :: HsPat -> HsQName -> HsPat -> HsPat%%HsPatHsQNameHsPatHsPat$pattern with infix data constructor  HsPFieldPat HsPFieldPat :: HsQName -> HsPat ->  HsPatField&v&HsQNameHsPat HsPatField HsPatFielddata  HsPatField&,An fpat in a labeled record pattern.  HsPatBind  HsPatBind :: SrcLoc -> HsPat -> HsRhs -> [HsDecl] -> HsDecl'~'SrcLocHsPatHsRhs[]HsDeclHsDeclHsPatdata HsPat'*A pattern, to be matched against a value. HsPAsPatHsPAsPat :: HsName -> HsPat -> HsPat{(b(HsNameHsPatHsPat@-pattern HsParenHsParen :: HsExp -> HsExp((HsExpHsExpparenthesized expression HsPAppHsPApp :: HsQName -> [HsPat] -> HsPat})])HsQName[]HsPatHsPat'data constructor and argument patterns hspacehspace :: Int -> HtmlAttr))IntHtmlAttrHsOpdata HsOp**5Operators, appearing in infix declarations.  HsNewTypeDecl HsNewTypeDecl :: SrcLoc ->  HsContext -> HsName -> [HsName] ->  HsConDecl ->  [HsQName] -> HsDecli++SrcLoc HsContextHsName[]HsName HsConDecl[]HsQNameHsDeclHsNegAppHsNegApp :: HsExp -> HsExp++HsExpHsExp*negation expression - exp HsNamedata HsName,AThis type is used to represent variables, and also constructors. HsModuleHsModule :: SrcLoc -> Module -> Maybe [HsExportSpec] -> [HsImportDecl] -> [HsDecl] -> HsModulek--SrcLocModuleMaybe[] HsExportSpec[] HsImportDecl[]HsDeclHsModuleHsModuledata HsModule-A Haskell source module. HsMatchHsMatch :: SrcLoc -> HsName -> [HsPat] -> HsRhs -> [HsDecl] -> HsMatch.N.SrcLocHsName[]HsPatHsRhs[]HsDeclHsMatchHsMatchdata HsMatch.Clauses of a function binding.  HsLiteraldata  HsLiteral/literal. Values of this type hold the abstract value of the literal, not the precise string representation used. For example, 10, 0o12 and 0xa have the same representation. HsLitHsLit ::  HsLiteral -> HsExp@0+0 HsLiteralHsExpliteral constant  HsListCon HsListCon ::  HsSpecialCon00 HsSpecialCon"list type constructor []  HsListComp HsListComp :: HsExp -> [HsStmt] -> HsExpG1(1HsExp[]HsStmtHsExplist comprehension HsListHsList :: [HsExp] -> HsExp11[]HsExpHsExplist expression hsLexhsLex ::  ReadP String22ReadPString@Haskell lexer: returns the lexed string, rather than the lexeme  HsLetStmt HsLetStmt :: [HsDecl] -> HsStmt22[]HsDeclHsStmtlocal bindings HsLetHsLet :: [HsDecl] -> HsExp -> HsExpH3)3[]HsDeclHsExpHsExp%local declarations with let  HsLeftSection HsLeftSection :: HsExp -> HsQOp -> HsExp33HsExpHsQOpHsExp7left section (exp qop) HsLambda HsLambda :: SrcLoc -> [HsPat] -> HsExp -> HsExp44SrcLoc[]HsPatHsExpHsExplambda expression HsIVarHsIVar :: HsName ->  HsImportSpec255HsName HsImportSpec variable  HsIThingWith HsIThingWith :: HsName ->  [HsCName] ->  HsImportSpec55HsName[]HsCName HsImportSpeczT(C_1,...,C_n): a class imported with some of its methods, or a datatype imported with some of its constructors.  HsIThingAll HsIThingAll :: HsName ->  HsImportSpec66HsName HsImportSpecoT(..): a class imported with all of its methods, or a datatype imported with all of its constructors. HsIrrPatHsIrrPat :: HsExp -> HsExp7y7HsExpHsExppatterns only  HsIntPrim HsIntPrim :: Integer ->  HsLiteral87Integer HsLiteralGHC unboxed integer literal HsIntHsInt :: Integer ->  HsLiteral8i8Integer HsLiteralinteger literal  HsInstDecl HsInstDecl :: SrcLoc ->  HsContext -> HsQName -> [HsType] -> [HsDecl] -> HsDeclt919SrcLoc HsContextHsQName[]HsType[]HsDeclHsDecl HsInfixDecl  HsInfixDecl :: SrcLoc -> HsAssoc -> Int -> [HsOp] -> HsDecl(:9SrcLocHsAssocInt[]HsOpHsDecl HsInfixApp  HsInfixApp :: HsExp -> HsQOp -> HsExp -> HsExp::HsExpHsQOpHsExpHsExpinfix application  HsImportSpecdata  HsImportSpec;Import specification.  HsImportDecl HsImportDecl :: SrcLoc -> Module -> Bool ->  Maybe Module -> Maybe (Bool, [HsImportSpec]) ->  HsImportDecl;<;SrcLocModuleBoolMaybeModuleMaybe(,)Bool[] HsImportSpec HsImportDecl HsImportDecldata  HsImportDeclw<Import declaration. HsIf HsIf :: HsExp -> HsExp -> HsExp -> HsExp=<HsExpHsExpHsExpHsExpIif exp then exp else exp HsIdentHsIdent :: String -> HsName==StringHsNamevarid or conid HsIAbsHsIAbs :: HsName ->  HsImportSpec;>">HsName HsImportSpec;T: the name of a class, datatype or type synonym.  HsGuardedRhss HsGuardedRhss :: [HsGuardedRhs] -> HsRhs>>[] HsGuardedRhsHsRhs'guarded right hand side (gdrhs)  HsGuardedRhs  HsGuardedRhs :: SrcLoc -> HsExp -> HsExp ->  HsGuardedRhs??SrcLocHsExpHsExp HsGuardedRhs HsGuardedRhsdata  HsGuardedRhs?tA guarded right hand side | exp = exp. The first expression will be Boolean-valued.  HsGuardedAlts HsGuardedAlts :: [HsGuardedAlt] ->  HsGuardedAlts@@[] HsGuardedAlt HsGuardedAlts gdpat  HsGuardedAltsdata  HsGuardedAltsDA HsGuardedAlt  HsGuardedAlt :: SrcLoc -> HsExp -> HsExp ->  HsGuardedAltAASrcLocHsExpHsExp HsGuardedAlt HsGuardedAltdata  HsGuardedAlt$BtA guarded alternative | exp -> exp. The first expression will be Boolean-valued.  HsGenerator  HsGenerator :: SrcLoc -> HsPat -> HsExp -> HsStmt.C CSrcLocHsPatHsExpHsStmt1a generator pat <- exp HsFunConHsFunCon ::  HsSpecialConCC HsSpecialCon)function type constructor ->  HsFunBind HsFunBind ::  [HsMatch] -> HsDeclDD*D[]HsMatchHsDeclHsFracHsFrac :: Rational ->  HsLiteralDDRational HsLiteralfloating point literal HsForeignImportHsForeignImport :: SrcLoc -> String -> HsSafety -> String -> HsName -> HsType -> HsDeclExESrcLocStringHsSafetyStringHsNameHsTypeHsDeclHsForeignExportHsForeignExport :: SrcLoc -> String -> String -> HsName -> HsType -> HsDeclFXFSrcLocStringStringHsNameHsTypeHsDecl HsFloatPrim HsFloatPrim :: Rational ->  HsLiteralFFRational HsLiteralGHC unboxed float literal  HsFieldUpdate HsFieldUpdate :: HsQName -> HsExp ->  HsFieldUpdateGGHsQNameHsExp HsFieldUpdate HsFieldUpdatedata  HsFieldUpdateGGAn fbind in a labeled record construction or update expression.  HsExpTypeSig  HsExpTypeSig :: SrcLoc -> HsExp ->  HsQualType -> HsExpHHSrcLocHsExp HsQualTypeHsExpexpression type signature  HsExportSpecdata  HsExportSpec"IExport specification. HsExpdata HsExpfIdHaskell expressions. Notes:
  • Because it is difficult for parsers to distinguish patterns from expressions, they typically parse them in the same way and then check that they have the appropriate form. Hence the expression type includes some forms that are found only in patterns. After these checks, these constructors should not be used.
  • The parser does not take precedence and associativity into account, so it will leave HsInfixApps associated to the left.
  • The Language.Haskell.Pretty.Pretty instance for HsExp does not add parentheses in printing.
HsEVarHsEVar :: HsQName ->  HsExportSpec4LLHsQName HsExportSpec variable  HsEThingWith HsEThingWith :: HsQName ->  [HsCName] ->  HsExportSpecLLHsQName[]HsCName HsExportSpeczT(C_1,...,C_n): a class exported with some of its methods, or a datatype exported with some of its constructors.  HsEThingAll HsEThingAll :: HsQName ->  HsExportSpecMMHsQName HsExportSpecoT(..): a class exported with all of its methods, or a datatype exported with all of its constructors. yhsephsep :: [Doc] -> DocNuN[]DocDoc"List version of <+>.  HsEnumFromTo HsEnumFromTo :: HsExp -> HsExp -> HsExp&OOHsExpHsExpHsExp/bounded arithmetic sequence, incrementing by 1 HsEnumFromThenTo HsEnumFromThenTo :: HsExp -> HsExp -> HsExp -> HsExpOOHsExpHsExpHsExpHsExp;bounded arithmetic sequence, with first two elements given HsEnumFromThenHsEnumFromThen :: HsExp -> HsExp -> HsExpPPHsExpHsExpHsExp=unbounded arithmetic sequence, with first two elements given  HsEnumFrom HsEnumFrom :: HsExp -> HsExpIQ8QHsExpHsExp1unbounded arithmetic sequence, incrementing by 1 HsEModuleContentsHsEModuleContents :: Module ->  HsExportSpecQQModule HsExportSpec'module M: re-export a module. HsEAbsHsEAbs :: HsQName ->  HsExportSpecRoRHsQName HsExportSpecHT: a class or datatype exported abstractly, or a type synonym.  HsDoublePrim HsDoublePrim :: Rational ->  HsLiteralCS+SRational HsLiteralGHC unboxed double literal HsDoHsDo :: [HsStmt] -> HsExpSS[]HsStmtHsExpPdo-expression: the last statement in the list should be an expression.  HsDefaultDecl HsDefaultDecl :: SrcLoc -> [HsType] -> HsDeclTwTSrcLoc[]HsTypeHsDeclHsDecldata HsDeclT HsDataDecl HsDataDecl :: SrcLoc ->  HsContext -> HsName -> [HsName] ->  [HsConDecl] ->  [HsQName] -> HsDeclUUSrcLoc HsContextHsName[]HsName[] HsConDecl[]HsQNameHsDecl HsContexttype  HsContext = [HsAsst]VHsConsHsCons ::  HsSpecialConcVTV HsSpecialCon#list data constructor (:) HsConOpHsConOp :: HsName -> HsOpVVHsNameHsOp$constructor operator (conop)  HsConName HsConName :: HsName -> HsCNamehWTWHsNameHsCNamename of a data constructor  HsConDecl  HsConDecl :: SrcLoc -> HsName ->  [HsBangType] ->  HsConDecl/XWSrcLocHsName[] HsBangType HsConDeclordinary data constructor  HsConDecldata  HsConDeclX#Declaration of a data constructor. HsConHsCon :: HsQName -> HsExpXXHsQNameHsExpdata constructor HsCNamedata HsCName?YlA name (cname) of a component of a class or data type in an import or export specification.  HsClassDecl HsClassDecl :: SrcLoc ->  HsContext -> HsName -> [HsName] -> [HsDecl] -> HsDeclZMZSrcLoc HsContextHsName[]HsName[]HsDeclHsDecl HsCharPrim HsCharPrim :: Char ->  HsLiteralZZChar HsLiteralGHC unboxed character literal HsCharHsChar :: Char ->  HsLiteralq[][Char HsLiteralcharacter literal HsCaseHsCase :: HsExp -> [HsAlt] -> HsExp[[HsExp[]HsAltHsExp1case exp of alts  HsBangTypedata  HsBangTyped\[The type of a constructor argument or field, optionally including a strictness annotation.  HsBangedTy HsBangedTy :: HsType ->  HsBangType+]]HsType HsBangType+strict component, marked with "!" HsAssttype HsAsst = (HsQName, [HsType])]Class assertions. In Haskell 98, the argument would be a tyvar, but this definition allows multiple parameters, and allows them to be types.  HsAssocRight HsAssocRight :: HsAssoc^}^HsAssoc;right-associative operator (declared with infixr)  HsAssocNone HsAssocNone :: HsAssoc__HsAssoc8non-associative operator (declared with infix)  HsAssocLeft HsAssocLeft :: HsAssoc__HsAssoc;left-associative operator (declared with infixl). HsAssocdata HsAssoc_Associativity of an operator. HsAsPatHsAsPat :: HsName -> HsExp -> HsExp`x`HsNameHsExpHsExppatterns only HsAppHsApp :: HsExp -> HsExp -> HsExp a`HsExpHsExpHsExpordinary application HsAlt HsAlt :: SrcLoc -> HsPat ->  HsGuardedAlts -> [HsDecl] -> HsAltaaSrcLocHsPat HsGuardedAlts[]HsDeclHsAltHsAltdata HsAlt b-An alt in a case expression.  hRunCGI hRunCGI ::  MonadIO m => [(String, String)] -> Handle -> Handle -> &(CGIRequest -> m (Headers, CGIResult)) -> m ()dcbMonadIOm[](,)StringStringHandleHandle CGIRequestm(,)Headers CGIResultm()MRuns a CGI action in a given environment. Uses Handles for input and output. hreflanghreflang :: String -> HtmlAttrddStringHtmlAttrhreflanghreflang :: String -> HtmlAttrydddStringHtmlAttrhreflanghreflang :: String -> HtmlAttrddStringHtmlAttrhrefhref :: String -> HtmlAttr9e$eStringHtmlAttrhrefhref :: String -> HtmlAttreeStringHtmlAttrhrefhref :: String -> HtmlAttreeStringHtmlAttrhrhr :: Html%ffHtmlhrhr :: HtmlYfRfHtmlhrhr :: HtmlffHtmlf hPutStrLn hPutStrLn :: Handle ->  ByteString -> IO ()gfHandle ByteStringIO()9Write a ByteString to a handle, appending a newline byte ghPutStrhPutStr :: Handle ->  ByteString -> IO ()ggHandle ByteStringIO()/A synonym for hPut, for compatibility fhPutStrhPutStr :: Handle ->  ByteString -> IO ()|h[hHandle ByteStringIO()/A synonym for hPut, for compatibility  hPutArray  hPutArray :: Handle -> IOUArray Int Word8 -> Int -> IO ()Xi&iHandleIOUArrayIntWord8IntIO()@Writes an array of Word8 to the specified Handle. ghPuthPut :: Handle ->  ByteString -> IO ()jiHandle ByteStringIO()<Outputs a ByteString to the specified Handle. fhPuthPut :: Handle ->  ByteString -> IO ()jjHandle ByteStringIO()<Outputs a ByteString to the specified Handle. tHpcPosdata HpcPos6k3HpcPos is an Hpc local rendition of a Span. tHpcHashclass HpcHash akhoursToTimeZonehoursToTimeZone :: Int -> TimeZone lkIntTimeZone?Create a nameless non-summer timezone for this number of hours  hotLinkURL hotLinkURL :: HotLink -> URLllHotLinkURL hotLinkURL hotLinkURL :: HotLink -> URL mlHotLinkURL hotLinkURL hotLinkURL :: HotLink -> URLimXmHotLinkURLhotLinkContentshotLinkContents :: HotLink -> HtmlmmHotLinkHtmlhotLinkContentshotLinkContents :: HotLink -> HtmlAn/nHotLinkHtmlhotLinkContentshotLinkContents :: HotLink -> HtmlnnHotLinkHtmlhotLinkAttributeshotLinkAttributes :: HotLink ->  [HtmlAttr]-ooHotLink[]HtmlAttrhotLinkAttributeshotLinkAttributes :: HotLink ->  [HtmlAttr]ooHotLink[]HtmlAttrhotLinkAttributeshotLinkAttributes :: HotLink ->  [HtmlAttr]-ppHotLink[]HtmlAttrhotlinkhotlink :: URL -> Html -> HotLinkppURLHtmlHotLinkhotlinkhotlink :: URL -> Html -> HotLink qpURLHtmlHotLinkhotlinkhotlink :: URL -> Html -> HotLink}qfqURLHtmlHotLinkHotLink HotLink :: URL -> Html ->  [HtmlAttr] -> HotLinkrqURLHtml[]HtmlAttrHotLinkHotLinkdata HotLinkErHotLink HotLink :: URL -> Html ->  [HtmlAttr] -> HotLinkrrURLHtml[]HtmlAttrHotLinkHotLinkdata HotLink sHotLink HotLink :: URL -> Html ->  [HtmlAttr] -> HotLinks|sURLHtml[]HtmlAttrHotLinkHotLinkdata HotLinks HostAddress6type  HostAddress6# = (Word32, Word32, Word32, Word32)6t HostAddresstype  HostAddress = Word32{thosthost ::  URIAuthority -> Stringtt URIAuthorityStringhopefulTransfer hopefulTransfer ::  BufferOp a ->  IO (Result a) -> [a] -> IO (Result ([Header], a))uyuBufferOpaIOResulta[]aIOResult(,)[]HeaderaUsed when nothing about data is known, Unfortunately waiting for a socket closure causes bad behaviour. Here we just take data once and give up the rest. hiddenhidden :: String -> String -> HtmlvvStringStringHtmlhiddenhidden :: String -> String -> HtmlMw4wStringStringHtmlhiddenhidden :: String -> String -> HtmlwwStringStringHtmlghGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteStringRx0xHandleIntIO ByteStringhGetNonBlocking is similar to hGet, except that it will never block waiting for data to become available, instead it returns only whatever data is available. fhGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteStringyhyHandleIntIO ByteStringhGetNonBlocking is identical to hGet, except that it will never block waiting for data to become available, instead it returns only whatever data is available. fhGetLinehGetLine :: Handle ->  IO ByteStringzzHandleIO ByteStringRead a line from a handle g hGetContents hGetContents :: Handle ->  IO ByteString5{{HandleIO ByteStringRead entire handle contents lazily into a ByteString. Chunks are read on demand, using the default chunk size. Once EOF is encountered, the Handle is closed. f hGetContents hGetContents :: Handle ->  IO ByteString[|>|HandleIO ByteStringRead entire handle contents strictly into a ByteString. This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case. As with hGet, the string representation in the file is assumed to be ISO-8859-1. The Handle is closed once the contents have been read, or if an exception is thrown.  hGetArray  hGetArray :: Handle -> IOUArray Int Word8 -> Int -> IO Int~~HandleIOUArrayIntWord8IntIOIntYReads a number of Word8s from the specified Handle directly into an array. ghGethGet :: Handle -> Int ->  IO ByteStringHandleIntIO ByteString[Read n bytes into a ByteString, directly from the specified Handle. fhGethGet :: Handle -> Int ->  IO ByteStringHandleIntIO ByteStringRead a ByteString directly from the specified Handle. This is far more efficient than reading the characters into a String and then using pack. First argument is the Handle to read from, and the second is the number of bytes to read. It returns the bytes read, up to n, or EOF. hGet is implemented in terms of hGetBuf. If the handle is a pipe or socket, and the writing end is closed, hGet will behave as if EOF was reached. hexDigithexDigit :: Stream s m Char => ParsecT s u m CharނStreamsmCharParsecTsumCharsParses a hexadecimal digit (a digit or a letter between 'a' and 'f' or 'A' and 'F'). Returns the parsed character.  hexadecimal hexadecimal :: GenTokenParser s u m -> ParsecT s u m Integer-GenTokenParsersumParsecTsumIntegerParses a positive whole number in the hexadecimal system. The number should be prefixed with "0x" or "0X". Returns the value of the number. heightheight :: String -> HtmlAttrStringHtmlAttrheightheight :: String -> HtmlAttrydStringHtmlAttrheightheight :: String -> HtmlAttrمąStringHtmlAttr4 HeapOverflow HeapOverflow :: AsyncException5$AsyncExceptionThe program's heap is reaching its limit, and the program should take action to reduce the amount of live data it has. Notes:
  • It is undefined which thread receives this exception.
  • GHC currently does not throw HeapOverflow exceptions.
 HeaderSettertype  HeaderSetter a! = HeaderName -> String -> a -> a Headerstype Headers = [(HeaderName, String)]HTTP headers.  HeaderNamedata  HeaderName8HTTP HeaderName type, a Haskell data constructor for each specification-defined header, prefixed with Hdr and CamelCased, (i.e., eliding the - in the process.) Should you require using a custom header, there's the HdrCustom constructor which takes a String argument. Encoding HTTP header names differently, as Strings perhaps, is an equally fine choice..no decidedly clear winner, but let's stick with data constructors here.  HeaderName HeaderName :: String ->  HeaderName|eString HeaderName HeaderNamenewtype  HeaderName9A string with case insensitive equality and comparisons. headerheader :: Html -> HtmlD5HtmlHtmlheaderheader :: Html -> HtmlHtmlHtmlheaderheader :: Html -> Html݋HtmlHtmlHeaderHeader ::  HeaderName -> String -> HeaderjK HeaderNameStringHeaderHeaderdata Header?The Header data type pairs header names & values. gheadhead ::  ByteString -> Word87! ByteStringWord8PO(1) Extract the first element of a ByteString, which must be non-empty. fheadhead ::  ByteString -> Char΍ ByteStringCharPO(1) Extract the first element of a ByteString, which must be non-empty. HEADHEAD ::  RequestMethod}m RequestMethodHdrWWWAuthenticateHdrWWWAuthenticate ::  HeaderNameݎЎ HeaderName HdrWarning HdrWarning ::  HeaderName-  HeaderNameHdrViaHdrVia ::  HeaderNameuh HeaderNameHdrVaryHdrVary ::  HeaderName HeaderNamehdrValuehdrValue :: Header -> String HeaderString HdrUserAgent HdrUserAgent ::  HeaderNamesf HeaderName HdrUpgrade HdrUpgrade ::  HeaderNameÐ HeaderNameHdrTransferEncodingHdrTransferEncoding ::  HeaderName% HeaderName HdrTrailer HdrTrailer ::  HeaderNameuh HeaderNameHdrTEHdrTE ::  HeaderName HeaderName HdrSetCookie HdrSetCookie ::  HeaderName HeaderName HdrServer HdrServer ::  HeaderName]P HeaderName HdrRetryAfter HdrRetryAfter ::  HeaderName HeaderName HdrReferer HdrReferer ::  HeaderName HeaderNameHdrRangeHdrRange ::  HeaderNameOB HeaderName HdrPublic HdrPublic ::  HeaderName HeaderNameHdrProxyAuthorizationHdrProxyAuthorization ::  HeaderName HeaderNameHdrProxyAuthenticateHdrProxyAuthenticate ::  HeaderNamegZ HeaderName HdrPragma HdrPragma ::  HeaderName HeaderNamehdrNamehdrName :: Header ->  HeaderNameHeader HeaderNameHdrMaxForwardsHdrMaxForwards ::  HeaderNamesf HeaderName HdrLocation HdrLocation ::  HeaderNameŕ HeaderNameHdrLastModifiedHdrLastModified ::  HeaderName HeaderNameHdrIfUnmodifiedSinceHdrIfUnmodifiedSince ::  HeaderNamev HeaderName HdrIfRange HdrIfRange ::  HeaderNameӖƖ HeaderNameHdrIfNoneMatchHdrIfNoneMatch ::  HeaderName+ HeaderNameHdrIfModifiedSinceHdrIfModifiedSince ::  HeaderName~ HeaderName HdrIfMatch HdrIfMatch ::  HeaderNameۗΗ HeaderNameHdrHostHdrHost ::  HeaderName% HeaderNameHdrFromHdrFrom ::  HeaderNameob HeaderName HdrExpires HdrExpires ::  HeaderName HeaderName HdrExpect HdrExpect ::  HeaderName  HeaderNameHdrETagHdrETag ::  HeaderNameWJ HeaderNameHdrDateHdrDate ::  HeaderName HeaderName HdrCustom HdrCustom :: String ->  HeaderName String HeaderName1Allows for unrecognised or experimental headers.  HdrCookie HdrCookie ::  HeaderName} HeaderNameHdrContentTypeHdrContentType ::  HeaderName՚ HeaderNameHdrContentTransferEncodingHdrContentTransferEncoding ::  HeaderNameRE HeaderName$MIME entity headers (for sub-parts) HdrContentRangeHdrContentRange ::  HeaderNameЛÛ HeaderName HdrContentMD5 HdrContentMD5 ::  HeaderName& HeaderNameHdrContentLocationHdrContentLocation ::  HeaderNamey HeaderNameHdrContentLengthHdrContentLength ::  HeaderName՜ HeaderNameHdrContentLanguageHdrContentLanguage ::  HeaderNameB5 HeaderNameHdrContentEncodingHdrContentEncoding ::  HeaderName HeaderNameHdrContentBaseHdrContentBase ::  HeaderName HeaderName HdrConnection HdrConnection ::  HeaderNamePC HeaderNameHdrCacheControlHdrCacheControl ::  HeaderName HeaderNameHdrAuthorizationHdrAuthorization ::  HeaderName HeaderNameHdrAllowHdrAllow ::  HeaderNameRE HeaderNameHdrAgeHdrAge ::  HeaderName HeaderNameHdrAcceptLanguageHdrAcceptLanguage ::  HeaderName HeaderNameHdrAcceptEncodingHdrAcceptEncoding ::  HeaderNameVI HeaderNameHdrAcceptCharsetHdrAcceptCharset ::  HeaderName HeaderName HdrAccept HdrAccept ::  HeaderName HeaderNameyhcathcat :: [Doc] -> DocTA[]DocDoc!List version of <>. qhasTrailingPathSeparatorhasTrailingPathSeparator :: FilePath -> BoolFilePathBoolIs an item either a directory or the last character a path separator?
hasTrailingPathSeparator "test" == False
hasTrailingPathSeparator "test/" == True
rhasTrailingPathSeparatorhasTrailingPathSeparator :: FilePath -> BoolFilePathBoolIs an item either a directory or the last character a path separator?
hasTrailingPathSeparator "test" == False
hasTrailingPathSeparator "test/" == True
 haskellStyle haskellStyle :: LanguageDef st   LanguageDefstThis is a minimal token definition for Haskell style languages. It defines the style of comments, valid identifiers and case sensitivity. It does not define any reserved words or operators.  haskellDef haskellDef :: LanguageDef st9% LanguageDefst2The language definition for the Haskell language. haskellhaskell :: TokenParser st TokenParserst"A lexer for the haskell language. ]hashStableNamehashStableName ::  StableName a -> IntW> StableNameaIntConvert a StableName to an Int. The Int returned is not necessarily unique; several StableNames may map to the same Int (in practice however, the chances of this are small, so the result of hashStableName makes a good hash key).  HasHeadersclass  HasHeaders xHasHeaders is a type class for types containing HTTP headers, allowing you to write overloaded header manipulation functions for both Request and Response data types, for instance. tHashdata Hashq hasExtension hasExtension :: FilePath -> BoolFilePathBoolhDoes the given filename have an extension?
null (takeExtension x) == not (hasExtension x)
r hasExtension hasExtension :: FilePath -> BooléFilePathBoolhDoes the given filename have an extension?
null (takeExtension x) == not (hasExtension x)
qhasDrivehasDrive :: FilePath -> BoolxFilePathBoolODoes a path have a drive.
not (hasDrive x) == null (takeDrive x)
rhasDrivehasDrive :: FilePath -> Bool:'FilePathBoolODoes a path have a drive.
not (hasDrive x) == null (takeDrive x)
yhang hang :: Doc -> Int -> Doc -> DocDocIntDocDoc0
hang d1 n d2 = sep [d1, nest n d2]
4 handleJust  handleJust :: Exception e => (e -> Maybe b) ->  (b -> IO a) -> IO a -> IO a ExceptioneeMaybebbIOaIOaIOaUA version of catchJust with the arguments swapped around (see handle).  handleExceptionCGIhandleExceptionCGI :: CGI a -> (Exception -> CGI a) -> CGI aҭCGIa ExceptionCGIaCGIaDDeprecated version of catchCGI. Use catchCGI instead. 4handlehandle :: Exception e =>  (e -> IO a) -> IO a -> IO a ExceptioneeIOaIOaIOaA version of catch with the arguments swapped around; useful in situations where the code for the handler is shorter. For example:
do handle (\e -> exitWith (ExitFailure 1)) $
   ...
h6h6 :: Html -> HtmlHtmlHtmlh6h6 :: Html -> HtmlI:HtmlHtmlh6h6 :: Html -> HtmlHtmlHtmlh5h5 :: Html -> HtmlҰHtmlHtmlh5h5 :: Html -> Html-HtmlHtmlh5h5 :: Html -> HtmlyjHtmlHtmlh4h4 :: Html -> HtmlűHtmlHtmlh4h4 :: Html -> HtmlHtmlHtmlh4h4 :: Html -> Html]NHtmlHtmlh3h3 :: Html -> HtmlHtmlHtmlh3h3 :: Html -> HtmlHtmlHtmlh3h3 :: Html -> HtmlA2HtmlHtmlh2h2 :: Html -> Html~HtmlHtmlh2h2 :: Html -> HtmlٳʳHtmlHtmlh2h2 :: Html -> Html%HtmlHtmlh1h1 :: Html -> HtmlqbHtmlHtmlh1h1 :: Html -> HtmlHtmlHtmlh1h1 :: Html -> Html HtmlHtml gzipWithT gzipWithT :: GenericQ GenericT -> GenericQ GenericTnGenericQGenericTGenericQGenericTTwin map for transformation  gzipWithQ gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r])g(GenericQGenericQrGenericQGenericQ[]rTwin map for queries  gzipWithM gzipWithM ::  Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m)9MonadmGenericQGenericMmGenericQGenericMm$Twin map for monadic transformation  gzipgzip :: GenericQ (GenericM Maybe) -> GenericQ (GenericM Maybe) ȷGenericQGenericMMaybeGenericQGenericMMaybeAGeneric zip controlled by a function with type-specific branches guigui :: String -> Html -> HtmlStringHtmlHtmlguigui :: String -> Html -> HtmlStringHtmlHtmlguigui :: String -> Html -> HtmlkStringHtmlHtml GuardQtype GuardQ = Q Guard guardedBguardedB :: [Q (Guard, Exp)] -> BodyQ<[]Q(,)GuardExpBodyQ GuardedBGuardedB :: [(Guard, Exp)] -> Body[](,)GuardExpBodyv GuardBinBox GuardBinBox :: CondBoxCondBox Guarddata Guard+ gtypecount gtypecount :: Typeable a => a ->  GenericQ IntTypeableaaGenericQInt>Determine the number of nodes of a given type in a given term ~ GTGT :: (a -> a) ->  GenericT'K5aa GenericT' gsizegsize ::  Data a => a -> IntDataaaInt,Compute size of an arbitrary data structure  gshowgshow ::  Data a => a -> String;"DataaaString0Generic show: an alternative to "deriving Show" ggroupBygroupBy :: (Word8 -> Word8 -> Bool) ->  ByteString ->  [ByteString]Word8Word8Bool ByteString[] ByteStringKThe groupBy function is the non-overloaded version of group. fgroupBygroupBy :: (Char -> Char -> Bool) ->  ByteString ->  [ByteString]ݾCharCharBool ByteString[] ByteStringKThe groupBy function is the non-overloaded version of group. ggroupgroup ::  ByteString ->  [ByteString]Ͽ ByteString[] ByteStringThe group function takes a ByteString and returns a list of ByteStrings such that the concatenation of the result is equal to the argument. Moreover, each sublist in the result contains only equal elements. For example,
group "Mississippi" = ["M","i","ss","i","ss","i","pp","i"]
It is a special case of groupBy, which allows the programmer to supply their own equality test. fgroupgroup ::  ByteString ->  [ByteString] ByteString[] ByteStringThe group function takes a ByteString and returns a list of ByteStrings such that the concatenation of the result is equal to the argument. Moreover, each sublist in the result contains only equal elements. For example,
group "Mississippi" = ["M","i","ss","i","ss","i","pp","i"]
It is a special case of groupBy, which allows the programmer to supply their own equality test. It is about 40% faster than groupBy (==)  gregorianMonthLengthgregorianMonthLength :: Integer -> Int -> Int! IntegerIntInt|The number of days in a given month according to the proleptic Gregorian calendar. First argument is year, second is month. greengreen :: StringString greadgread ::  Data a => ReadS a3DataaReadSa0Generic read: an alternative to "deriving Read" graygray :: StringString~ GQGQ ::  GenericQ r ->  GenericQ' r GenericQr GenericQ'r gnodecount gnodecount ::  GenericQ IntbPGenericQInt2Determine the number of all nodes in a given term  gmapAccumT  gmapAccumT ::  Data d => (a -> e -> (a, e)) -> a -> d -> (a, d)KDatadae(,)aead(,)adgmapT with accumulation  gmapAccumQr gmapAccumQr ::  Data d => (r' -> r -> r) -> r -> (a -> e -> (a, r')) -> a -> d -> (a, r)TDatadr'rrrae(,)ar'ad(,)argmapQr with accumulation  gmapAccumQl gmapAccumQl ::  Data d => (r -> r' -> r) -> r -> (a -> e -> (a, r')) -> a -> d -> (a, r)^Datadrr'rrae(,)ar'ad(,)argmapQl with accumulation  gmapAccumQ  gmapAccumQ ::  Data d => (a -> e -> (a, q)) -> a -> d -> (a, [q])6Datadae(,)aqad(,)a[]qgmapQ with accumulation  gmapAccumM  gmapAccumM :: (Data d, Monad m) => (a -> e -> (a, m e)) -> a -> d -> (a, m d)*DatadMonadmae(,)amead(,)amdgmapM with accumulation ~ GMGM ::  (a -> m a) ->  GenericM' mama GenericM'm globalglobal :: Name -> ExpQNameExpQ glengthglength ::  GenericQ IntQ?GenericQInt9Count the number of immediate subterms of the given term  gfoldlAccum  gfoldlAccum ::  Data d => "(a -> c (e -> r) -> e -> (a, c r)) -> (a -> g -> (a, c g)) -> a -> d -> (a, c d)?Datadacere(,)acrag(,)acgad(,)acdgfoldl with accumulation  gfindtype gfindtype :: (Data x, Typeable y) => x -> Maybe yN"DataxTypeableyxMaybey:Find (unambiguously) an immediate subterm of a given type  getZonedTime getZonedTime ::  IO ZonedTimeIO ZonedTimegetVersion_Text_Regex_PosixgetVersion_Text_Regex_Posix :: VersionOEVersiongetVersion_Text_Regex_BasegetVersion_Text_Regex_Base :: VersionVersionugetTixFileNamegetTixFileName :: String -> String%StringString getTimeZone getTimeZone :: UTCTime ->  IO TimeZone~UTCTimeIOTimeZoneQGet the local time-zone for a given time (varying as per summertime adjustments) getStategetState ::  Monad m => ParsecT s u m u^:MonadmParsecTsumu Returns the current user state.  getSrcLoc getSrcLoc :: P SrcLocPSrcLocq getSearchPath getSearchPath ::  IO [FilePath].IO[]FilePath&Get a list of filepaths in the $PATH. r getSearchPath getSearchPath ::  IO [FilePath]IO[]FilePath&Get a list of filepaths in the $PATH. getResponseVersiongetResponseVersion ::  Response a ->  Maybe StringkHResponseaMaybeStringgetResponseVersion rsp returns the HTTP protocol version of the response rsp. If Nothing, the default httpVersion can be assumed. getRequestVersiongetRequestVersion ::  Request a ->  Maybe StringwRequestaMaybeStringgetRequestVersion req returns the HTTP protocol version of the request req. If Nothing, the default httpVersion can be assumed.  getPosition getPosition ::  Monad m => ParsecT s u m SourcePosMonadmParsecTsum SourcePos@Returns the current source position. See also SourcePos. getParserStategetParserState ::  Monad m => ParsecT s u m (State s u)iMonadmParsecTsumStatesu8Returns the full parser state as a State record. WgetOpt' getOpt' ::  ArgOrder a ->  [OptDescr a] -> [String] -> #([a], [String], [String], [String])iArgOrdera[]OptDescra[]String(,,,)[]a[]String[]String[]StringThis is almost the same as getOpt, but returns a quadruple consisting of the option arguments, a list of non-options, a list of unrecognized options, and a list of error messages. WgetOpt getOpt ::  ArgOrder a ->  [OptDescr a] -> [String] -> ([a], [String], [String])!ArgOrdera[]OptDescra[]String(,,)[]a[]String[]StringProcess the command-line, and return the list of values that matched (and those that didn't). The arguments are:
  • The order requirements (see ArgOrder)
  • The option descriptions (see OptDescr)
  • The actual command line arguments (presumably got from System.Environment.getArgs).
getOpt returns a triple consisting of the option arguments, a list of non-options, and a list of error messages.  getOffside getOffside :: Lex a OrderingLexaOrderinggetModJulianDategetModJulianDate ::  UniversalTime -> Rational! UniversalTimeRationalvgetModificationTimegetModificationTime :: FilePath ->  IO IntegerFilePathIOInteger!Get modification time of a file.  getMatrix getMatrix ::  BlockTable a -> [[(a, (Int, Int))]]d) BlockTablea[][](,)a(,)IntIntfgetLinegetLine ::  IO ByteStringIO ByteStringRead a line from stdin. getInputgetInput ::  Monad m => ParsecT s u m sBMonadmParsecTsumsReturns the current input getInputgetInput ::  Lex r StringLexrString getHeaders getHeaders :: HasHeaders x => x -> [Header]3 HasHeadersxx[]Header.getErrnogetErrno :: IO Errno~pIOErrno?Get the current value of errno in the current thread. getElemsgetElems :: (MArray a e m, Ix i) => a i e -> m [e]X MArrayaemIxiaiem[]e5Return a list of all the elements of a mutable array getCurrentTimeZonegetCurrentTimeZone ::  IO TimeZoneIOTimeZoneGet the current time-zone getCurrentTimegetCurrentTime ::  IO UTCTimegWIOUTCTime0Get the current UTC time from the system clock. g getContents getContents ::  IO ByteStringIO ByteStringGgetContents. Equivalent to hGetContents stdin. Will read lazily f getContents getContents ::  IO ByteStringIO ByteStringgetContents. Read stdin strictly. Equivalent to hGetContents stdin The Handle is closed after the contents have been read. <getChanContentsgetChanContents :: Chan a -> IO [a]qChanaIO[]alReturn a lazy list representing the contents of the supplied Chan, much like System.IO.hGetContents.  getCGIVars getCGIVars ::  MonadIO m => m [(String, String)]TMonadIOmm[](,)StringStringCGets the values of all CGI variables from the program environment.  getBounds getBounds :: (MArray a e m, Ix i) => a i e -> m (i, i)l0MArrayaemIxiaiem(,)iigetAuthgetAuth ::  Monad m =>  Request ty -> m URIAuthorityMonadmRequesttym URIAuthorityfgetAuth req fishes out the authority portion of the URL in a request's Host header.  getAssocs getAssocs :: (MArray a e m, Ix i) => a i e ->  m [(i, e)]MArrayaemIxiaiem[](,)ieJReturn a list of all the associations of a mutable array, in index order. getget ::  ReadPrec CharReadPrecCharJConsumes and returns the next character. Fails if there is no input left. getget ::  ReadP Char5%ReadPCharJConsumes and returns the next character. Fails if there is no input left. GETGET ::  RequestMethod RequestMethod geqgeq ::  Data a => a -> a -> Bool4DataaaaBool2Generic equality: an alternative to "deriving Eq" GenTokenParserdata GenTokenParser s u mThe type of the record that holds lexical parsers that work on s streams with state u over a monad m.  GenParsertype  GenParser tok st = Parsec [tok] st~ GenParsertype  GenParser t st = Parsec ByteString stGenLanguageDefdata GenLanguageDef s u mThe GenLanguageDef type is a record that contains all parameterizable features of the Text.Parsec.Token module. The module Text.Parsec.Language contains some default definitions. GenLanguageDefdata GenLanguageDef s u mThe GenLanguageDef type is a record that contains all parameterizable features of the Text.Parsec.Token module. The module Text.Parsec.Language contains some default definitions. ~ GenericT'newtype  GenericT''Other first-class polymorphic wrappers ~ GenericTtype GenericT = a -> au=Generic transformations, i.e., take an "a" and return an "a" ~ GenericRtype GenericR m = m aZGeneric readers, say monadic builders, i.e., produce an "a" with the help of a monad "m". ~ GenericQ'newtype  GenericQ' r~ GenericQtype GenericQ r = a -> rBGeneric queries of type "r", i.e., take any "a" and return an "r" ~ GenericM'newtype  GenericM' mC~ GenericMtype GenericM m = a -> m aFGeneric monadic transformations, i.e., take an "a" and compute an "a" ~ GenericBtype GenericB = a'Generic builders i.e., produce an "a". ~ Generic'Generic' ::  Generic c ->  Generic' cGenericcGeneric'c~ Generic'data Generic' cTWrapped generic functions; recall: [Generic c] would be legal but [Generic' c] not. ~ Generictype Generic c = a -> c alxThe general scheme underlying generic functions assumed by gfoldl; there are isomorphisms such as GenericT = Generic T.  gdepthgdepth ::  GenericQ Int3!GenericQInt"Determine depth of the given term  gcountgcount ::  GenericQ Bool ->  GenericQ IntGenericQBoolGenericQInt;Determine the number of all suitable nodes in a given term gathergather :: ReadP a -> ReadP (String, a)aReadPaReadP(,)StringaTransforms a parser into one that does the same, but in addition returns the exact characters read. IMPORTANT NOTE: gather gives a runtime error if its first argument is built using any occurrences of readS_to_P. GAMMAtype GAMMA = Poly GAMMA_ FunDepFunDep :: [Name] -> [Name] -> FunDep#[]Name[]NameFunDep FunDepdata FunDepS funDfunD :: Name ->  [ClauseQ] -> DecQName[]ClauseQDecQ FunDFunD :: Name -> [Clause] -> Dec7Name[]ClauseDecAFunctorclass Functor flCThe Functor class is used for types that can be mapped over. Instances of Functor should satisfy the following laws:
fmap id  ==  id
fmap (f . g)  ==  fmap f . fmap g
The instances of Functor for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws. fun_tycon_namefun_tycon_name :: HsQNameHsQName fun_tycon fun_tycon :: HsTypeG>HsTypey fullRender fullRender :: Mode -> Int -> Float -> (TextDetails -> a -> a) -> a -> Doc -> a%ModeIntFloat TextDetailsaaaDoca!The general rendering interface. ! fullErrorType fullErrorType ::  IOErrorType IOErrorTypeAI/O error where the operation failed because the device is full. fuchsiafuchsia :: String!StringfstPairFstListfstPairFstList ::  NFData a => Strategy [(a, b)]NFDataaStrategy[](,)abyfsepfsep :: [Doc] -> Doc[]DocDoc("Paragraph fill" version of sep.  fromToRfromToR :: ExpQ -> ExpQ -> RangeQExpQExpQRangeQ FromToRFromToR :: Exp -> Exp -> RangeExpExpRange fromToEfromToE :: ExpQ -> ExpQ -> ExpQnYExpQExpQExpQ fromThenToR  fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQExpQExpQExpQRangeQ FromThenToR  FromThenToR :: Exp -> Exp -> Exp -> RangeiExpExpExpRange fromThenToE  fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ ExpQExpQExpQExpQ fromThenR fromThenR :: ExpQ -> ExpQ -> RangeQiExpQExpQRangeQ FromThenR FromThenR :: Exp -> Exp -> RangeExpExpRange fromThenE fromThenE :: ExpQ -> ExpQ -> ExpQ^IExpQExpQExpQ fromRfromR :: ExpQ -> RangeQExpQRangeQ FromRFromR :: Exp -> RangeExpRanget fromHpcPos fromHpcPos :: HpcPos -> (Int, Int, Int, Int)eHpcPos(,,,)IntIntIntIntCfromHpcPos explodes the HpcPos into line:column-line:colunm   fromGregorian  fromGregorian :: Integer -> Int -> Int -> Day^CIntegerIntIntDayconvert from proleptic Gregorian calendar. First argument is year, second month number (1-12), third day (1-31). Invalid values will be clipped to the correct range, month first, then day. bfromForeignPtr fromForeignPtr :: ForeignPtr Word8 -> Int -> Int ->  ByteString ForeignPtrWord8IntInt ByteString1O(1) Build a ByteString from a ForeignPtr 4 fromException fromException :: Exception e =>  SomeException -> Maybe em Exceptione SomeExceptionMaybee fromEfromE :: ExpQ -> ExpQExpQExpQg fromChunks fromChunks ::  [ByteString] ->  ByteStringiH[] ByteString ByteStringUO(c) Convert a list of strict ByteString into a lazy ByteString +fromBoolfromBool ::  Num a => Bool -> a# NumaBoola<Convert a Haskell Bool to its numeric representation freezefreeze :: $(Ix i, MArray a e m, IArray b e) => a i e ->  m (b i e)IxiMArrayaemIArraybeaiembieConverts a mutable array (any instance of MArray) to an immutable array (any instance of IArray) by taking a complete copy of it. 0freePoolfreePool :: Pool -> IO ()PoolIO()UDeallocate a memory pool and everything which has been allocated in the pool itself. )freefree :: Ptr a -> IO ()PtraIO()Free a block of memory that was allocated with malloc, mallocBytes, realloc, reallocBytes, Foreign.Marshal.Utils.new or any of the newX functions in Foreign.Marshal.Array or Foreign.C.String. framesetframeset :: Html -> Html HtmlHtmlframesetframeset :: Html -> Html^ O HtmlHtml frameborder frameborder :: Int -> HtmlAttr  IntHtmlAttr frameborder frameborder :: Int -> HtmlAttr&  IntHtmlAttrframeframe :: Html -> Htmlx i HtmlHtmlframeframe :: Html -> Html  HtmlHtml formEncode formEncode :: [(String, String)] -> StringO ' [](,)StringStringString?Formats name-value pairs as application/x-www-form-urlencoded.  formDecode formDecode :: String -> [(String, String)]  String[](,)StringStringGGets the name-value pairs from application/x-www-form-urlencoded data.  formatTime  formatTime :: FormatTime t =>  TimeLocale -> String -> t -> String   FormatTimet TimeLocaleStringtStringSubstitute various time-related information for each %-code in the string, as per formatCharacter. For all types (note these three are done here, not by formatCharacter):
  • %% %
  • %t tab
  • %n newline
For TimeZone (and ZonedTime and UTCTime):
  • %z timezone offset on the format -HHMM.
  • %Z timezone name
For LocalTime (and ZonedTime and UTCTime):
  • %c as dateTimeFmt locale (e.g. %a %b %e %H:%M:%S %Z %Y)
For TimeOfDay (and LocalTime and ZonedTime and UTCTime):
  • %R same as %H:%M
  • %T same as %H:%M:%S
  • %X as timeFmt locale (e.g. %H:%M:%S)
  • %r as time12Fmt locale (e.g. %I:%M:%S %p)
  • %P day half from (amPm locale), converted to lowercase, am, pm
  • %p day half from (amPm locale), AM, PM
  • %H hour, 24-hour, leading 0 as needed, 00 - 23
  • %I hour, 12-hour, leading 0 as needed, 01 - 12
  • %k hour, 24-hour, leading space as needed, 0 - 23
  • %l hour, 12-hour, leading space as needed, 1 - 12
  • %M minute, 00 - 59
  • %S second, without decimal part, 00 - 60
  • %q picosecond, including trailing zeros, 000000000000 - 999999999999.
  • %Q decimal point and up to 12 second decimals, without trailing zeros. For a whole number of seconds, %Q produces the empty string.
For UTCTime and ZonedTime:
  • %s number of whole seconds since the Unix epoch. For times before the Unix epoch, this is a negative number. Note that in %s.%q and %s%Q the decimals are positive, not negative. For example, 0.9 seconds before the Unix epoch is formatted as -1.1 with %s%Q.
For Day (and LocalTime and ZonedTime and UTCTime):
  • %D same as %m/%d/%y
  • %F same as %Y-%m-%d
  • %x as dateFmt locale (e.g. %m/%d/%y)
  • %Y year
  • %y last two digits of year, 00 - 99
  • %C century (being the first two digits of the year), 00 - 99
  • %B month name, long form (fst from months locale), January - December
  • %b, %h month name, short form (snd from months locale), Jan - Dec
  • %m month of year, leading 0 as needed, 01 - 12
  • %d day of month, leading 0 as needed, 01 - 31
  • %e day of month, leading space as needed, 1 - 31
  • %j day of year for Ordinal Date format, 001 - 366
  • %G year for Week Date format
  • %g last two digits of year for Week Date format, 00 - 99
  • %f century (first two digits of year) for Week Date format, 00 - 99
  • %V week for Week Date format, 01 - 53
  • %u day for Week Date format, 1 - 7
  • %a day of week, short form (snd from wDays locale), Sun - Sat
  • %A day of week, long form (fst from wDays locale), Sunday - Saturday
  • %U week number of year, where weeks start on Sunday (as sundayStartWeek), 00 - 53
  • %w day of week number, 0 (= Sunday) - 6 (= Saturday)
  • %W week number of year, where weeks start on Monday (as mondayStartWeek), 00 - 53
 FormatTimeclass  FormatTime tformatCharacterformatCharacter :: FormatTime t => Char -> !Maybe (TimeLocale -> t -> String) FormatTimetCharMaybe TimeLocaletStringformform :: Html -> Html HtmlHtmlformform :: Html -> Html[ L HtmlHtmlformform :: Html -> Html  HtmlHtml forImpDforImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQk!;!CallconvSafetyStringNameTypeQDecQ ForeignDForeignD :: Foreign -> Dec!!ForeignDec Foreigndata Foreign!forceforce ::  NFData a => a -> aX"B"NFDataaaa forallT forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ""[]NameCxtQTypeQTypeQ ForallT ForallT :: [Name] -> Cxt -> Type -> Typen#N#[]NameCxtTypeType ForallC ForallC :: [Name] -> Cxt -> Con -> Con##[]NameCxtConConfontfont :: Html -> HtmlB$3$HtmlHtmlffoldr1'foldr1' :: (Char -> Char -> Char) ->  ByteString -> Char$$CharCharChar ByteStringCharA strict variant of foldr1 gfoldr1foldr1 :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8%f%Word8Word8Word8 ByteStringWord8foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty ByteStrings ffoldr1foldr1 :: (Char -> Char -> Char) ->  ByteString -> Char&&CharCharChar ByteStringCharfoldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty ByteStrings ffoldr' foldr' :: (Char -> a -> a) -> a ->  ByteString -> a''Charaaa ByteStringa''foldr\'' is a strict variant of foldr gfoldr foldr :: (Word8 -> a -> a) -> a ->  ByteString -> a(f(Word8aaa ByteStringafoldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a ByteString, reduces the ByteString using the binary operator, from right to left. ffoldr foldr :: (Char -> a -> a) -> a ->  ByteString -> a))Charaaa ByteStringafoldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a packed string, reduces the packed string using the binary operator, from right to left. gfoldl1'foldl1' :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8L++Word8Word8Word8 ByteStringWord8A'foldl1\'' is like foldl1, but strict in the accumulator. ffoldl1'foldl1' :: (Char -> Char -> Char) ->  ByteString -> Char%,+CharCharChar ByteStringChar"A strict version of foldl1 gfoldl1foldl1 :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8,,Word8Word8Word8 ByteStringWord8foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty ByteStrings. This function is subject to array fusion. ffoldl1foldl1 :: (Char -> Char -> Char) ->  ByteString -> Char(.-CharCharChar ByteStringCharfoldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty ByteStrings. gfoldl' foldl' :: (a -> Word8 -> a) -> a ->  ByteString -> aA//aWord8aa ByteStringa?'foldl\'' is like foldl, but strict in the accumulator. ffoldl' foldl' :: (a -> Char -> a) -> a ->  ByteString -> a0/aCharaa ByteStringa8'foldl\'' is like foldl, but strict in the accumulator. gfoldl foldl :: (a -> Word8 -> a) -> a ->  ByteString -> a00aWord8aa ByteStringafoldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a ByteString, reduces the ByteString using the binary operator, from left to right. ffoldl foldl :: (a -> Char -> a) -> a ->  ByteString -> a622aCharaa ByteStringafoldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a ByteString, reduces the ByteString using the binary operator, from left to right. Afmapfmap ::  Functor f => (a -> b) -> f a -> f b3Z3FunctorfabfafbFlowInfotype FlowInfo = Word323FloatTokFloatTok :: Rational -> Token$44RationalToken floatPrimL floatPrimL :: Rational -> Lit4t4RationalLit FloatPrimL FloatPrimL :: Rational -> Lit44RationalLityfloatfloat :: Float -> Doc:5+5FloatDoc%
float n = text (show n)
floatfloat :: GenTokenParser s u m -> ParsecT s u m Double55GenTokenParsersumParsecTsumDoubleThis lexeme parser parses a floating point value. Returns the value of the number. The number is parsed according to the grammar rules defined in the Haskell report. GfixSTfixST ::  (a -> ST s a) -> ST s a76aSTsaSTsaAllow the result of a state transformer computation to be used (lazily) inside the computation. Note that if f is strict, fixST f = _|_.  FixityDirectiondata FixityDirection7 FixityFixity :: Int -> FixityDirection -> Fixityv8U8IntFixityDirectionFixity Fixitydata Fixity8Efixfix :: (a -> a) -> a88aaafix f is the least fixed point of the function f, i.e. the least defined x such that f x = x. ffindSubstringsfindSubstrings ::  ByteString ->  ByteString -> [Int]:9 ByteString ByteString[]IntVFind the indexes of all (possibly overlapping) occurances of a substring in a string. f findSubstring findSubstring ::  ByteString ->  ByteString ->  Maybe Int;: ByteString ByteStringMaybeIntGet the first index of a substring in another string, or Nothing if the string is not found. findSubstring p s is equivalent to listToMaybe (findSubstrings p s). g findIndices findIndices :: (Word8 -> Bool) ->  ByteString -> [Int64]a<6<Word8Bool ByteString[]Int64The findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order. f findIndices findIndices :: (Char -> Bool) ->  ByteString -> [Int]=b=CharBool ByteString[]IntThe findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order. g findIndex findIndex :: (Word8 -> Bool) ->  ByteString ->  Maybe Int64>>Word8Bool ByteStringMaybeInt64The findIndex function takes a predicate and a ByteString and returns the index of the first element in the ByteString satisfying the predicate. f findIndex findIndex :: (Char -> Bool) ->  ByteString ->  Maybe Int??CharBool ByteStringMaybeIntThe findIndex function takes a predicate and a ByteString and returns the index of the first element in the ByteString satisfying the predicate.  findHeader findHeader :: HasHeaders a =>  HeaderName -> a ->  Maybe StringAA A HasHeadersa HeaderNameaMaybeStringtfindHeader hdrNm x looks up hdrNm in x, returning the first header that matches, if any.  findCookie findCookie :: String -> String ->  Maybe StringBBBStringStringMaybeStringGet the value of a cookie from a string on the form "cookieName1=cookieValue1;...;cookieName2=cookieValue2". This is the format of the Cookie HTTP header.  findConnClose findConnClose :: [Header] -> Bool]CFC[]HeaderBoolgfindfind :: (Word8 -> Bool) ->  ByteString ->  Maybe Word8CCWord8Bool ByteStringMaybeWord8 O(n) The find function takes a predicate and a ByteString, and returns the first element in matching the predicate, or Nothing if there is no such element.
find f p = case findIndex f p of Just n -> Just (p ! n) ; _ -> Nothing
ffindfind :: (Char -> Bool) ->  ByteString ->  Maybe CharEgECharBool ByteStringMaybeCharO(n) The find function takes a predicate and a ByteString, and returns the first element in matching the predicate, or Nothing if there is no such element. 4finallyfinally :: IO a -> IO b -> IO aFFIOaIObIOaRA specialised variant of bracket with just a computation to run afterward. ) finalizerFree finalizerFree :: FinalizerPtr alGXG FinalizerPtraA pointer to a foreign function equivalent to free, which may be used as a finalizer (cf Foreign.ForeignPtr.ForeignPtr) for storage allocated with malloc, mallocBytes, realloc or reallocBytes. ^finalizefinalize :: Weak v -> IO ()HHWeakvIO()MCauses a the finalizer associated with a weak pointer to be run immediately. FilteredFiltered :: CompressionStrategy_IIICompressionStrategyUse Filtered for data produced by a filter (or predictor). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of Z_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between DefaultStrategy and HuffmanOnly. FilteredFiltered :: CompressionStrategyBK,KCompressionStrategyUse Filtered for data produced by a filter (or predictor). Filtered data consists mostly of small values with a somewhat random distribution. In this case, the compression algorithm is tuned to compress them better. The effect of Z_FILTERED is to force more Huffman coding and less string matching; it is somewhat intermediate between DefaultStrategy and HuffmanOnly. gfilterfilter :: (Word8 -> Bool) ->  ByteString ->  ByteString]M3MWord8Bool ByteString ByteStringO(n) filter, applied to a predicate and a ByteString, returns a ByteString containing those characters that satisfy the predicate. ffilterfilter :: (Char -> Bool) ->  ByteString ->  ByteStringNYNCharBool ByteString ByteStringO(n) filter, applied to a predicate and a ByteString, returns a ByteString containing those characters that satisfy the predicate. 3 FileOffsettype  FileOffset = COffTO3FileModetype FileMode = CModeO3FileIDtype FileID = CInoOfieldsetfieldset :: Html -> Html#PPHtmlHtmlfieldsetfieldset :: Html -> Html{PlPHtmlHtmlfieldsetfieldset :: Html -> HtmlPPHtmlHtml FieldPatQtype  FieldPatQ = Q FieldPatQ fieldPatfieldPat :: Name -> PatQ ->  FieldPatQQvQNamePatQ FieldPatQ FieldPattype FieldPat = (Name, Pat)Q fieldExpfieldExp :: Name -> ExpQ ->  Q (Name, Exp)\R6RNameExpQQ(,)NameExp FieldExptype FieldExp = (Name, Exp)R3FdFd :: CInt -> FdRRCIntFd3Fdnewtype FdSyfcatfcat :: [Doc] -> DocgSTS[]DocDoc("Paragraph fill" version of cat. Familydata FamilySiThis data type might have different constructors depending on what is supported by the operating system. failuresfailures :: Counts -> IntTrTCountsIntAfailfail ::  Monad m => String -> m aTTMonadmStringmafaceface :: String -> HtmlAttrJU5UStringHtmlAttr~ extT extT :: (Typeable a, Typeable b) => (a -> a) -> (b -> b) -> a -> aVUTypeableaTypeablebaabbaa8Extend a generic transformation by a type-specific case q extSeparator extSeparator :: CharVyVChar;File extension character
extSeparator == '.'
r extSeparator extSeparator :: CharWVChar;File extension character
extSeparator == '.'
~ extRextR :: %(Monad m, Typeable a, Typeable b) => m a -> m b -> m aWWMonadmTypeableaTypeablebmambmaExtend a generic reader ~ extQ extQ :: (Typeable a, Typeable b) => (a -> q) -> (b -> q) -> a -> qXXTypeableaTypeablebaqbqaq/Extend a generic query by a type-specific case ~ extMp extMp :: )(MonadPlus m, Typeable a, Typeable b) =>  (a -> m a) ->  (b -> m b) -> a -> m aYY MonadPlusmTypeableaTypeablebamabmbamaBExtend a generic MonadPlus transformation by a type-specific case ~ extM extM :: %(Monad m, Typeable a, Typeable b) =>  (a -> m a) ->  (b -> m b) -> a -> m aZZMonadmTypeableaTypeablebamabmbama@Extend a generic monadic transformation by a type-specific case ~ extBextB :: (Typeable a, Typeable b) => a -> b -> a[[TypeableaTypeablebabaExtend a generic builder ~ ext1T ext1T :: (Data d, Typeable1 t) => (e -> e) ->  (t f -> t f) -> d -> d\h\Datad Typeable1teetftfdd>Type extension of transformations for unary type constructors ~ ext1Rext1R :: "(Monad m, Data d, Typeable1 t) => m d -> m (t e) -> m d]Z]MonadmDatad Typeable1tmdmtemd0Type extension of readers for type constructors ~ ext1Q ext1Q :: (Data d, Typeable1 t) => (d -> q) ->  (t e -> q) -> d -> q^Q^Datad Typeable1tdqteqdq0Type extension of queries for type constructors ~ ext1M ext1M :: "(Monad m, Data d, Typeable1 t) =>  (e -> m e) -> (t f -> m (t f)) -> d -> m d_M_MonadmDatad Typeable1temetfmtfdmd@Type extension of monadic transformations for type constructors ~ ext0ext0 :: (Typeable a, Typeable b) => c a -> c b -> c a`P`TypeableaTypeablebcacbcaFlexible type extension  ExpQtype ExpQ = Q Exp` ExportF ExportF :: Callconv -> String -> Name -> Type -> ForeignaWaCallconvStringNameTypeForeign ExpectEntity ExpectEntity :: ResponseNextStepaaResponseNextStepExpectExpect :: String -> Message?b+bStringMessagevExpBoxExpBox :: Bool -> BoxLabelbbBoolBoxLabel Expdata Expb.eXDEVeXDEV :: ErrnocbErrno Exclamation Exclamation :: TokenIcAcToken4 Exceptionclass (Typeable e, Show e) =>  Exception ecw examineTix examineTix :: IO TixccIOTix. eWOULDBLOCK eWOULDBLOCK :: Errno-d%dErrno everywhereM everywhereM ::  Monad m =>  GenericM m ->  GenericM mddMonadmGenericMmGenericMm Monadic variation on everywhere  everywhereBut everywhereBut ::  GenericQ Bool -> GenericT -> GenericT}eTeGenericQBoolGenericTGenericT5Variation on everywhere with an extra stop condition  everywhere' everywhere' :: (a -> a) -> a -> a ffaaaa5Apply a transformation everywhere in top-down manner  everywhere everywhere :: (a -> a) -> a -> affaaaa6Apply a transformation everywhere in bottom-up manner  everything everything ::  (r -> r -> r) ->  GenericQ r ->  GenericQ rgigrrrGenericQrGenericQr5Summarise all nodes in top-down, left-to-right order 4evaluateevaluate :: a -> IO ahhaIOa)Forces its argument to be evaluated when the resultant IO action is executed. It can be used to order evaluation with respect to other IO operations; its semantics are given by
evaluate x `seq` y    ==>  y
evaluate x `catch` f  ==>  (return $! x) `catch` f
evaluate x >>= f      ==>  (return $! x) >>= f
Note: the first equation implies that (evaluate x) is not the same as (return $! x). A correct definition is
evaluate x = (return $! x) >>= return
.eUSERSeUSERS :: Errnoj~jErrno.eTXTBSYeTXTBSY :: ErrnojjErrno. eTOOMANYREFS eTOOMANYREFS :: ErrnokkErrno. eTIMEDOUT eTIMEDOUT :: ErrnoTkLkErrno.eTIMEeTIME :: ErrnokkErrno.eSTALEeSTALE :: ErrnokkErrno.eSRMNTeSRMNT :: Errno llErrno.eSRCHeSRCH :: ErrnoHl@lErrno.eSPIPEeSPIPE :: Errnol~lErrno.eSOCKTNOSUPPORTeSOCKTNOSUPPORT :: ErrnollErrno. eSHUTDOWN eSHUTDOWN :: ErrnommErrnoErrorTErrorT :: m (Either e a) ->  ErrorT e m amqmmEithereaErrorTemaErrorTnewtype ErrorT e m amGThe error monad transformer. It can be used to add error handling to other monads. The ErrorT Monad structure is parameterized over two things:
  • e - The error type.
  • m - The inner monad.
Here are some examples of use:
-- wraps IO action that can throw an error e
type ErrorWithIO e a = ErrorT e IO a
==> ErrorT (IO (Either e a))

-- IO monad wrapped in StateT inside of ErrorT
type ErrorAndStateWithIO e s a = ErrorT e (StateT s IO) a
==> ErrorT (StateT s IO (Either e a))
==> ErrorT (StateT (s -> IO (Either e a,s)))
errorserrors :: Counts -> IntrpbpCountsInterrorPoserrorPos ::  ParseError ->  SourcePospp ParseError SourcePos2Extracts the source position from the parse error errorPoserrorPos ::  ParseError ->  SourcePosqfq ParseError SourcePos2Extracts the source position from the parse error  errorMessages errorMessages ::  ParseError ->  [Message].rr ParseError[]Message9Extracts the list of error messages from the parse error errorIsUnknownerrorIsUnknown ::  ParseError -> Boolrr ParseErrorBool4 ErrorCall ErrorCall :: String ->  ErrorCall?s)sString ErrorCall4 ErrorCalldata  ErrorCallusErrorError ::  ParseError ->  Reply s u ass ParseErrorReplysua.errnoToIOError errnoToIOError :: String -> Errno ->  Maybe Handle ->  Maybe String -> IOErrorttStringErrnoMaybeHandleMaybeStringIOErrorConstruct a Haskell 98 I/O error based on the given Errno value. The optional information can be used to improve the accuracy of error messages. .ErrnoErrno :: CInt -> ErrnouuCIntErrno.Errnonewtype ErrnouHaskell representation for errno values. The implementation is deliberately exposed, to allow users to add their own definitions of Errno values. .eRREMOTEeRREMOTE :: ErrnovvErrno. eRPCMISMATCH eRPCMISMATCH :: Errno wwErrno.eROFSeROFS :: ErrnoEw=wErrno.eREMOTEeREMOTE :: Errnow}wErrno.eREMCHGeREMCHG :: ErrnowwErrno.eRANGEeRANGE :: ErrnoxwErrnoyequalsequals :: Doc=x7xDocA '=' character EqualsEquals :: TokenxxTokenq equalFilePath equalFilePath :: FilePath -> FilePath -> BoolyxFilePathFilePathBoolEquality of two FilePaths. If you call System.Directory.canonicalizePath first this has a much better chance of working. Note that this doesn't follow symlinks or DOSNAM~1s.
         x == y ==> equalFilePath x y
         normalise x == normalise y ==> equalFilePath x y
Posix:   equalFilePath "foo" "foo/"
Posix:   not (equalFilePath "foo" "/foo")
Posix:   not (equalFilePath "foo" "FOO")
Windows: equalFilePath "foo" "FOO"
r equalFilePath equalFilePath :: FilePath -> FilePath -> Boolg{J{FilePathFilePathBoolEquality of two FilePaths. If you call System.Directory.canonicalizePath first this has a much better chance of working. Note that this doesn't follow symlinks or DOSNAM~1s.
         x == y ==> equalFilePath x y
         normalise x == normalise y ==> equalFilePath x y
Posix:   equalFilePath "foo" "foo/"
Posix:   not (equalFilePath "foo" "/foo")
Posix:   not (equalFilePath "foo" "FOO")
Windows: equalFilePath "foo" "FOO"
. ePROTOTYPE ePROTOTYPE :: Errnoy}q}Errno.ePROTONOSUPPORTePROTONOSUPPORT :: Errno}}Errno.ePROTOePROTO :: Errno~}Errno. ePROGUNAVAIL ePROGUNAVAIL :: ErrnoQ~I~Errno. ePROGMISMATCH ePROGMISMATCH :: Errno~~Errno. ePROCUNAVAIL ePROCUNAVAIL :: Errno~~Errno.ePROCLIMePROCLIM :: Errno)!Errno3 EpochTimetype  EpochTime = CTimei.ePIPEePIPE :: ErrnoErrno. ePFNOSUPPORT ePFNOSUPPORT :: ErrnoErrno.ePERMePERM :: Errno+#Errno. eOPNOTSUPP eOPNOTSUPP :: ErrnoqiErrno.eOKeOK :: ErrnoErrno! eofErrorType eofErrorType ::  IOErrorType IOErrorTypeOI/O error where the operation failed because the end of file has been reached. eofeof :: (Stream s m t, Show t) => ParsecT s u m ()ځStreamsmtShowtParsecTsum()This parser only succeeds at the end of the input. This is not a primitive parser but it is defined using notFollowedBy.
eof  = notFollowedBy anyToken <?> "end of input"
EOFEOF :: LexemeقЂLexemeEOFEOF :: Token Token.eNXIOeNXIO :: ErrnoMEErrno.eNOTTYeNOTTY :: ErrnoErrno.eNOTSOCKeNOTSOCK :: Errno̓ŃErrno. eNOTEMPTY eNOTEMPTY :: Errno Errno.eNOTDIReNOTDIR :: ErrnoQIErrno.eNOTCONNeNOTCONN :: ErrnoErrno.eNOTBLKeNOTBLK :: Errnoӄ˄Errno.eNOSYSeNOSYS :: Errno Errno.eNOSTReNOSTR :: ErrnoOGErrno.eNOSReNOSR :: ErrnoErrno.eNOSPCeNOSPC :: ErrnoɅErrno. eNOPROTOOPT eNOPROTOOPT :: Errno Errno.eNONETeNONET :: ErrnoOGErrno.eNOMSGeNOMSG :: ErrnoErrno.eNOMEMeNOMEM :: ErrnoˆÆErrno.eNOLINKeNOLINK :: Errno Errno.eNOLCKeNOLCK :: ErrnoIAErrno.eNOEXECeNOEXEC :: ErrnoErrno.eNOENTeNOENT :: ErrnoLJErrno.eNODEVeNODEV :: ErrnoErrno.eNODATAeNODATA :: ErrnoE=Errno.eNOBUFSeNOBUFS :: Errno}Errno.eNFILEeNFILE :: ErrnoÈErrno. eNETUNREACH eNETUNREACH :: Errno Errno. eNETRESET eNETRESET :: ErrnoOGErrno.eNETDOWNeNETDOWN :: ErrnoErrnoendBy1endBy1 :: ReadP a ->  ReadP sep ->  ReadP [a]"ReadPaReadPsepReadP[]ahendBy p sep parses one or more occurrences of p, separated and ended by sep. endBy1endBy1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]wStreamsmtParsecTsumaParsecTsumsepParsecTsum[]aendBy1 p sep parses one or more occurrences of p, seperated and ended by sep. Returns a list of values returned by p. endByendBy :: ReadP a ->  ReadP sep ->  ReadP [a]xReadPaReadPsepReadP[]aiendBy p sep parses zero or more occurrences of p, separated and ended by sep. endByendBy :: Stream s m t => ParsecT s u m a -> ParsecT s u m sep -> ParsecT s u m [a]StreamsmtParsecTsumaParsecTsumsepParsecTsum[]aendBy p sep parses zero or more occurrences of p, seperated and ended by sep. Returns a list of values returned by p.
cStatements  = cStatement `endBy` semi
enctypeenctype :: String -> HtmlAttr3StringHtmlAttrenctypeenctype :: String -> HtmlAttrStringHtmlAttrenctypeenctype :: String -> HtmlAttrStringHtmlAttr. eNAMETOOLONG eNAMETOOLONG :: ErrnoA9Errno. eMULTIHOP eMULTIHOP :: Errno}Errno.eMSGSIZEeMSGSIZE :: ErrnoǐErrno?emptySampleVaremptySampleVar ::  SampleVar a -> IO ()A$ SampleVaraIO()AIf the SampleVar is full, leave it empty. Otherwise, do nothing. emptyDefemptyDef :: LanguageDef stّő LanguageDefst emptyAttr emptyAttr :: String -> HtmlAttr?*StringHtmlAttr emptyAttr emptyAttr :: String -> HtmlAttrStringHtmlAttr emptyAttr emptyAttr :: String -> HtmlAttr StringHtmlAttryemptyempty :: DocC=DocThe empty document, with no height and no width. empty is the identity for <>, <+>, $$ and $+$, and anywhere in the argument list for sep, hcat, hsep, vcat, fcat etc. emptyempty ::  BlockTable aw BlockTableagemptyempty ::  ByteStringϔ” ByteString(O(1) The empty ByteString femptyempty ::  ByteString=0 ByteString(O(1) The empty ByteString EmptyEmpty :: a ->  Consumed aaConsumeda emphasize emphasize :: Html -> Html HtmlHtml emphasize emphasize :: Html -> HtmlteHtmlHtml emphasize emphasize :: Html -> HtmlΖHtmlHtml.eMLINKeMLINK :: Errno Errno.eMFILEeMFILE :: ErrnoJBErrnoEmacsEmacs :: EditorEditor.eLOOPeLOOP :: ErrnoėErrnoelInitelInit :: String ->  IO EditLine-StringIOEditLineInitialize the line editor. elGetselGets :: EditLine -> IO (Maybe String)ØEditLineIOMaybeStringkRead a line of input from the terminal. Returns Nothing if no characters were read or if an error occured. elemselems :: (IArray a e, Ix i) => a i e -> [e]IArrayaeIxiaie[]eTReturns a list of all the elements of an array, in the same order as their indices. g elemIndices elemIndices :: Word8 ->  ByteString -> [Int64]tWord8 ByteString[]Int64O(n) The elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order. This implementation uses memchr(3). f elemIndices elemIndices :: Char ->  ByteString -> [Int]Char ByteString[]IntO(n) The elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order. f elemIndexEnd elemIndexEnd :: Char ->  ByteString ->  Maybe IntChar ByteStringMaybeInt3O(n) The elemIndexEnd function returns the last index of the element in the given ByteString which is equal to the query element, or Nothing if there is no such element. The following holds:
elemIndexEnd c xs == 
(-) (length xs - 1) `fmap` elemIndex c (reverse xs)
g elemIndex elemIndex :: Word8 ->  ByteString ->  Maybe Int64ОWord8 ByteStringMaybeInt64O(n) The elemIndex function returns the index of the first element in the given ByteString which is equal to the query element, or Nothing if there is no such element. This implementation uses memchr(3). f elemIndex elemIndex :: Char ->  ByteString ->  Maybe IntAChar ByteStringMaybeIntO(n) The elemIndex function returns the index of the first element in the given ByteString which is equal (by memchr) to the query element, or Nothing if there is no such element. gelemelem :: Word8 ->  ByteString -> BooliWord8 ByteStringBoolGO(n) elem is the ByteString membership predicate. felemelem :: Char ->  ByteString -> Bool>#Char ByteStringBooltO(n) elem is the ByteString membership predicate. This implementation uses memchr(3). .eISDIReISDIR :: ErrnoErrno.eISCONNeISCONN :: Errno0(Errno.eIOeIO :: Errnoh`Errno.eINVALeINVAL :: ErrnoErrno.eINTReINTR :: ErrnoڣErrno. eINPROGRESS eINPROGRESS :: Errno*"Errno.eILSEQeILSEQ :: Errnoh`Errno.eIDRMeIDRM :: ErrnoErrno. eHOSTUNREACH eHOSTUNREACH :: ErrnoErrno. eHOSTDOWN eHOSTDOWN :: Errno2*Errno.eFTYPEeFTYPE :: ErrnophErrno.eFBIGeFBIG :: ErrnoErrno.eFAULTeFAULT :: ErrnoErrno.eEXISTeEXIST :: Errno( Errno.eDQUOTeDQUOT :: Errnof^Errno.eDOMeDOM :: ErrnoErrnoEditordata EditorЦEditLinedata EditLine.eDIRTYeDIRTY :: ErrnoB:Errno. eDESTADDRREQ eDESTADDRREQ :: ErrnoErrno.eDEADLKeDEADLK :: Errno̧ħErrno. eCONNRESET eCONNRESET :: Errno Errno. eCONNREFUSED eCONNREFUSED :: Errno\TErrno. eCONNABORTED eCONNABORTED :: ErrnoErrno.eCOMMeCOMM :: ErrnoڨErrno.eCHILDeCHILD :: Errno Errno.eBUSYeBUSY :: Errno\TErrno.eBADRPCeBADRPC :: ErrnoErrno.eBADMSGeBADMSG :: ErrnoܩԩErrno.eBADFeBADF :: ErrnoErrno.eALREADYeALREADY :: ErrnoZRErrno.eAGAINeAGAIN :: ErrnoErrno. eAFNOSUPPORT eAFNOSUPPORT :: ErrnoڪErrno.eADVeADV :: ErrnoErrno. eADDRNOTAVAIL eADDRNOTAVAIL :: Errnoh`Errno. eADDRINUSE eADDRINUSE :: ErrnoErrno.eACCESeACCES :: ErrnoErrno.e2BIGe2BIG :: Errno( Errno dyndyn :: String -> Q ExpjStringQExp<dupChandupChan :: Chan a ->  IO (Chan a)ϬChanaIOChanaDuplicate a Chan: the duplicate channel begins empty, but data written to either channel from then on will be available from both. Hence this creates a kind of broadcast channel, where data written by anyone is seen by everyone else. dtermdterm :: Html -> Html1"HtmlHtmldtermdterm :: Html -> HtmltHtmlHtmldtermdterm :: Html -> HtmlծƮHtmlHtmlg dropWhile dropWhile :: (Word8 -> Bool) ->  ByteString ->  ByteStringqGWord8Bool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs. f dropWhile dropWhile :: (Char -> Bool) ->  ByteString ->  ByteStringmDCharBool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs. qdropTrailingPathSeparatordropTrailingPathSeparator :: FilePath -> FilePathYBFilePathFilePathRemove any trailing path separators
dropTrailingPathSeparator "file/test/" == "file/test"
not (hasTrailingPathSeparator (dropTrailingPathSeparator x)) || isDrive x
Posix:    dropTrailingPathSeparator "/" == "/"
Windows:  dropTrailingPathSeparator "\\" == "\\"
rdropTrailingPathSeparatordropTrailingPathSeparator :: FilePath -> FilePath޲FilePathFilePathRemove any trailing path separators
dropTrailingPathSeparator "file/test/" == "file/test"
not (hasTrailingPathSeparator (dropTrailingPathSeparator x)) || isDrive x
Posix:    dropTrailingPathSeparator "/" == "/"
Windows:  dropTrailingPathSeparator "\\" == "\\"
q dropFileName dropFileName :: FilePath -> FilePathw`FilePathFilePathIDrop the filename.
dropFileName x == fst (splitFileName x)
r dropFileName dropFileName :: FilePath -> FilePath0FilePathFilePathIDrop the filename.
dropFileName x == fst (splitFileName x)
qdropExtensionsdropExtensions :: FilePath -> FilePathֵFilePathFilePathHDrop all extensions
not $ hasExtension (dropExtensions x)
rdropExtensionsdropExtensions :: FilePath -> FilePathFilePathFilePathHDrop all extensions
not $ hasExtension (dropExtensions x)
q dropExtension dropExtension :: FilePath -> FilePathcLFilePathFilePathiRemove last extension, and the "." preceding it.
dropExtension x == fst (splitExtension x)
r dropExtension dropExtension :: FilePath -> FilePath>'FilePathFilePathiRemove last extension, and the "." preceding it.
dropExtension x == fst (splitExtension x)
q dropDrive dropDrive :: FilePath -> FilePathFilePathFilePathPDelete the drive, if it exists.
dropDrive x == snd (splitDrive x)
r dropDrive dropDrive :: FilePath -> FilePath˹FilePathFilePathPDelete the drive, if it exists.
dropDrive x == snd (splitDrive x)
gdropdrop :: Int64 ->  ByteString ->  ByteStringyInt64 ByteString ByteStringO(n\c)/ drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs. fdropdrop :: Int ->  ByteString ->  ByteStringInt ByteString ByteStringO(1) drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs. y doubleQuotes doubleQuotes :: Doc -> DocDocDoc Wrap document in "..."  doublePrimL doublePrimL :: Rational -> Lit<*RationalLit DoublePrimL DoublePrimL :: Rational -> LitRationalLit DoubleColon DoubleColon :: TokenToken DoubleArrow DoubleArrow :: Token0(Tokenydoubledouble :: Double -> DocvDoubleDoc&
double n = text (show n)
DotDotDotDot :: TokenTokendotdot :: GenTokenParser s u m -> ParsecT s u m StringIGenTokenParsersumParsecTsumStringpLexeme parser dot parses the character '.' and skips any trailing white space. Returns the string ".". DoneDone :: ResponseNextStepC0ResponseNextStepDonetype Done = ()vdoIndentdoIndent :: PPHsMode -> IndentPPHsModeIndent(indentation of a do-expression !doesNotExistErrorTypedoesNotExistErrorType ::  IOErrorTypej\ IOErrorTypeRI/O error where the operation failed because one of its arguments does not exist.  doEdoE :: [StmtQ] -> ExpQ[]StmtQExpQ DoEDoE :: [Stmt] -> ExphT[]StmtExpyDocdata Doc_The abstract type of documents. The Show instance is equivalent to using render. dlistdlist :: Html -> HtmlC4HtmlHtmldlistdlist :: Html -> HtmlHtmlHtmldlistdlist :: Html -> HtmlHtmlHtml4 DivideByZero DivideByZero :: ArithExceptionC2ArithExceptiondiscarddiscard :: Int -> Lex r ()IntLexr()IDiscard some input characters (these must not include tabs or newlines). disableddisabled :: HtmlAttr4)HtmlAttrdisableddisabled :: HtmlAttr|qHtmlAttrdisableddisabled :: HtmlAttrHtmlAttrdirdir :: Html -> HtmlHtmlHtmldigitdigit :: Stream s m Char => ParsecT s u m CharfStreamsmCharParsecTsumChar.Parses a digit. Returns the parsed character.  diffUTCTime diffUTCTime :: UTCTime -> UTCTime -> NominalDiffTime[5UTCTimeUTCTimeNominalDiffTimediffUTCTime a b = a - b  DiffUArraytype  DiffUArray = IOToDiffArray IOUArrayStrict unboxed diff array, working only for elements of primitive types but more compact and usually faster than DiffArray. DiffTimedata DiffTime}This is a length of time, as measured by a clock. Conversion functions will treat it as seconds. It has a precision of 10^-12 s.  diffDaysdiffDays :: Day -> Day -> IntegernXDayDayInteger DiffArraytype  DiffArray = IOToDiffArray IOArray)Fully polymorphic lazy boxed diff array.  DieHorribly DieHorribly :: String -> ResponseNextStepaDStringResponseNextStep3DeviceIDtype DeviceID = CDev^ deRefWeak deRefWeak :: Weak v ->  IO (Maybe v)WeakvIOMaybev8Dereferences a weak pointer. If the key is still alive, then Just v is returned (where v is the value in the weak pointer), otherwise Nothing is returned. The return value of deRefWeak depends on when the garbage collector runs, hence it is in the IO monad. 4DenormalDenormal :: ArithExceptionArithException demanding demanding :: a -> Done -> aaDoneaEvaluates the second argument before the first. Used to express control-oriented parallelism. The second argument is usually a strategy application.  deleteCookie deleteCookie :: Cookie -> CookieCookieCookieYDelete a cookie from the client by setting the cookie expiry date to a date in the past. DELETEDELETE ::  RequestMethod RequestMethoddeldel :: Html -> HtmlHtmlHtmldeldel :: Html -> HtmlC4HtmlHtmldeldel :: Html -> HtmlHtmlHtmldefOptdefOpt ::  TestOptions TestOptionsdefListdefList :: (HTML a, HTML b) => [(a, b)] -> Htmll:HTMLaHTMLb[](,)abHtmldefListdefList :: (HTML a, HTML b) => [(a, b)] -> HtmlHTMLaHTMLb[](,)abHtmldefListdefList :: (HTML a, HTML b) => [(a, b)] -> Html\HTMLaHTMLb[](,)abHtmlDeflatedDeflated :: MethodMethod'Deflate' is the only method supported in this version of zlib. Indeed it is likely to be the only method that ever will be supported. DeflatedDeflated :: MethodMethod'Deflate' is the only method supported in this version of zlib. Indeed it is likely to be the only method that ever will be supported. definedefine :: Html -> HtmlxiHtmlHtmldefinedefine :: Html -> HtmlHtmlHtmldefinedefine :: Html -> Html HtmlHtmlDefaultWindowBitsDefaultWindowBits ::  WindowBits~q WindowBitsDefaultWindowBitsDefaultWindowBits ::  WindowBits WindowBitsdefaultUserAgentdefaultUserAgent :: String0'StringDefaultStrategyDefaultStrategy :: CompressionStrategyCompressionStrategy0Use the DefaultStrategy for normal data. DefaultStrategyDefaultStrategy :: CompressionStrategy8"CompressionStrategy0Use the DefaultStrategy for normal data. defaultParseModedefaultParseMode ::  ParseMode ParseModeQDefault parameters for a parse, currently just a marker for an unknown filename. defaultParseModedefaultParseMode ::  ParseModema ParseModeQDefault parameters for a parse, currently just a marker for an unknown filename. defaultNormalizeRequestOptionsdefaultNormalizeRequestOptions :: NormalizeRequestOptions tyY9NormalizeRequestOptionsty defaultMode defaultMode :: PPHsModePPHsModeMThe default mode: pretty-print using the offside rule and sensible defaults. DefaultMemoryLevelDefaultMemoryLevel ::  MemoryLevelVH MemoryLevel;The default. (Equivalent to MemoryLevel 8) DefaultMemoryLevelDefaultMemoryLevel ::  MemoryLevel MemoryLevel;The default. (Equivalent to MemoryLevel 8) defaultGETRequest_defaultGETRequest_ :: BufferType a => URI ->  Request a BufferTypeaURIRequestadefaultGETRequestdefaultGETRequest :: URI -> Request_StringB*URIRequest_String defaultFixity defaultFixity :: FixityFixitydefaultDecompressParamsdefaultDecompressParams :: DecompressParamsDecompressParamsThe default set of parameters for decompression. This is typically used with the compressWith function with specific paramaters overridden. defaultDecompressParamsdefaultDecompressParams :: DecompressParamsDecompressParamsThe default set of parameters for decompression. This is typically used with the compressWith function with specific paramaters overridden. defaultCompressParamsdefaultCompressParams :: CompressParamsCompressParamsThe default set of parameters for compression. This is typically used with the compressWith function with specific paramaters overridden. defaultCompressParamsdefaultCompressParams :: CompressParamsCompressParamsThe default set of parameters for compression. This is typically used with the compressWith function with specific paramaters overridden. DefaultCompressionDefaultCompression :: CompressionLevelCompressionLeveleThe default compression level is 6 (that is, biased towards higher compression at expense of speed). DefaultCompressionDefaultCompression :: CompressionLevelCompressionLeveleThe default compression level is 6 (that is, biased towards higher compression at expense of speed).  DecQtype DecQ = Q DecdecompressWithdecompressWith :: DecompressParams ->  ByteString ->  ByteString*DecompressParams ByteString ByteStringLike decompress but with the ability to specify various decompression parameters. Typical usage:
decompressWith defaultCompressParams { ... }
decompressWithdecompressWith :: DecompressParams ->  ByteString ->  ByteStringwJDecompressParams ByteString ByteStringLike decompress but with the ability to specify various decompression parameters. Typical usage:
decompressWith defaultCompressParams { ... }
decompressWindowBitsdecompressWindowBits :: DecompressParams ->  WindowBitsDecompressParams WindowBitsdecompressWindowBitsdecompressWindowBits :: DecompressParams ->  WindowBitsB!DecompressParams WindowBitsDecompressParamsDecompressParams ::  WindowBits -> Int -> DecompressParams WindowBitsIntDecompressParamsDecompressParamsdata DecompressParams&5The full set of parameters for decompression. The defaults are defaultDecompressParams. The decompressBufferSize is the size of the first output buffer, containing the uncompressed data. If you know an exact or approximate upper bound on the size of the decompressed data then setting this parameter can save memory. The default decompression output buffer size is 32k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. One particular use case for setting the decompressBufferSize is if you know the exact size of the decompressed data and want to produce a strict Data.ByteString.ByteString. The compression and deccompression functions use lazy Data.ByteString.Lazy.ByteStrings but if you set the decompressBufferSize correctly then you can generate a lazy Data.ByteString.Lazy.ByteString with exactly one chunk, which can be converted to a strict Data.ByteString.ByteString in O(1) time using Data.ByteString.concat . Data.ByteString.Lazy.toChunks. DecompressParamsDecompressParams ::  WindowBits -> Int -> DecompressParams WindowBitsIntDecompressParamsDecompressParamsdata DecompressParams?5The full set of parameters for decompression. The defaults are defaultDecompressParams. The decompressBufferSize is the size of the first output buffer, containing the uncompressed data. If you know an exact or approximate upper bound on the size of the decompressed data then setting this parameter can save memory. The default decompression output buffer size is 32k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. One particular use case for setting the decompressBufferSize is if you know the exact size of the decompressed data and want to produce a strict Data.ByteString.ByteString. The compression and deccompression functions use lazy Data.ByteString.Lazy.ByteStrings but if you set the decompressBufferSize correctly then you can generate a lazy Data.ByteString.Lazy.ByteString with exactly one chunk, which can be converted to a strict Data.ByteString.ByteString in O(1) time using Data.ByteString.concat . Data.ByteString.Lazy.toChunks. decompressBufferSizedecompressBufferSize :: DecompressParams -> IntDecompressParamsIntdecompressBufferSizedecompressBufferSize :: DecompressParams -> IntfDecompressParamsInt decompress decompress ::  ByteString ->  ByteString ByteString ByteStringDecompress a stream of data in the zlib format. There are a number of errors that can occur. In each case an exception will be thrown. The possible error conditions are:
  • if the stream does not start with a valid gzip header
  • if the compressed stream is corrupted
  • if the compressed stream ends permaturely
Note that the decompression is performed lazily. Errors in the data stream may not be detected until the end of the stream is demanded (since it is only at the end that the final checksum can be checked). If this is important to you, you must make sure to consume the whole decompressed stream before doing any IO action that depends on it.  decompress decompress ::  ByteString ->  ByteString ByteString ByteStringDecompress a stream of data in the gzip format. There are a number of errors that can occur. In each case an exception will be thrown. The possible error conditions are:
  • if the stream does not start with a valid gzip header
  • if the compressed stream is corrupted
  • if the compressed stream ends permaturely
Note that the decompression is performed lazily. Errors in the data stream may not be detected until the end of the stream is demanded (since it is only at the end that the final checksum can be checked). If this is important to you, you must make sure to consume the whole decompressed stream before doing any IO action that depends on it.  decodeInput decodeInput :: [(String, String)] ->  ByteString -> ([(String, Input)], ByteString)`[](,)StringString ByteString(,)[](,)StringInput ByteStringQGets and decodes the input according to the request method and the content-type. decimaldecimal :: GenTokenParser s u m -> ParsecT s u m IntegertGenTokenParsersumParsecTsumIntegerWParses a positive whole number in the decimal system. Returns the value of the number.  Decdata Dec0 debugHtml debugHtml ::  HTML a => a -> HtmlHTMLaaHtmlThis uses the above tree rendering function, and displays the Html as a tree structure, allowing debugging of what is actually getting produced.  debug_tests debug_tests ::  TestOptions -> Bool TestOptionsBool4DeadlockDeadlock :: DeadlockDeadlock4Deadlockdata Deadlockddefddef :: Html -> HtmlbSHtmlHtmlddefddef :: Html -> HtmlHtmlHtmlddefddef :: Html -> HtmlHtmlHtmldayFractionToTimeOfDaydayFractionToTimeOfDay :: Rational ->  TimeOfDaypRational TimeOfDay<Get a TimeOfDay given the fraction of a day since midnight.  Daynewtype DayYThe Modified Julian Day is a standard count of days, with zero being the day 1858-11-17.  dataDdataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQ CxtQName[]Name[]ConQ[]NameDecQ DataDDataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> DecCxtName[]Name[]Con[]NameDec DataConI DataConI :: Name -> Type -> Name -> Fixity -> InfofCNameTypeNameFixityInfogcyclecycle ::  ByteString ->  ByteString ByteString ByteStringcycle ties a finite ByteString into a circular one, or equivalently, the infinite repetition of the original ByteString.  CxtQtype CxtQ = Q Cxt cxtcxt :: [TypeQ] -> CxtQ[]TypeQCxtQ Cxttype Cxt = [Type]- CWStringLentype  CWStringLen = (Ptr CWchar, Int)cA wide character string with explicit length information in CWchars instead of a terminating NUL (allowing NUL characters in the middle of the string). -CWStringtype CWString = Ptr CWcharESA C wide string is a reference to an array of C wide characters terminated by NUL. CWchardata CWchar7Haskell type representing the C wchar_t type. CustomCustom :: String ->  RequestMethodiOString RequestMethodCUShortdata CUShort>Haskell type representing the C unsigned short type. CULongdata CULong =Haskell type representing the C unsigned long type. CULLongdata CULLongxBHaskell type representing the C unsigned long long type. CUIntPtrdata CUIntPtrCUIntMaxdata CUIntMax"CUIntdata CUIntP<Haskell type representing the C unsigned int type. CUChardata CUChar=Haskell type representing the C unsigned char type. CTimedata CTime'Haskell type representing the C time_t type. To convert to a Data.Time.UTCTime, use the following formula:
posixSecondsToUTCTime (realToFrac :: POSIXTime)
- CStringLentype  CStringLen = (Ptr CChar, Int)0A string with explicit length information in bytes instead of a terminating NUL (allowing NUL characters in the middle of the string). -CStringtype CString = Ptr CCharIA C string is a reference to an array of C characters terminated by NUL. 3CSsizedata CSsizepCSizedata CSize6Haskell type representing the C size_t type.  CSigAtomicdata  CSigAtomic <Haskell type representing the C sig_atomic_t type. CShortdata CShortx 5Haskell type representing the C short type. CSChardata CSChar ;Haskell type representing the C signed char type. vcreateMixEntryDomcreateMixEntryDom ::  Show a =>  [(HpcPos, a)] -> [MixEntryDom [a]]  Showa[](,)HpcPosa[] MixEntryDom[]abcreateAndTrim'createAndTrim' :: Int -> (Ptr Word8 -> IO (Int, Int, a)) -> IO (ByteString, a) d IntPtrWord8IO(,,)IntIntaIO(,) ByteStringab createAndTrim createAndTrim :: Int -> (Ptr Word8 -> IO Int) ->  IO ByteStringd / IntPtrWord8IOIntIO ByteStringGiven the maximum size needed and a function to make the contents of a ByteString, createAndTrim makes the ByteString. The generating function is required to return the actual final size (<= the maximum size), and the resulting byte array is realloced to this size. createAndTrim is the main mechanism for creating custom, efficient ByteString functions, using Haskell or C functions to fill the space. bcreatecreate :: Int -> (Ptr Word8 -> IO ()) ->  IO ByteStringoIntPtrWord8IO()IO ByteStringVCreate ByteString of size l and use action f to fill it's contents. CPtrdiffdata CPtrdiff-9Haskell type representing the C ptrdiff_t type. 3CPiddata CPidcountscounts :: State -> CountsStateCountsCounts Counts :: Int -> Int -> Int -> Int -> Counts~_IntIntIntIntCountsCountsdata Countscountcount :: Int -> ReadP a ->  ReadP [a].IntReadPaReadP[]akcount n p parses n occurrences of p in sequence. A list of results is returned. countcount :: Stream s m t => Int -> ParsecT s u m a -> ParsecT s u m [a]bStreamsmtIntParsecTsumaParsecTsum[]acount n p parses n occurrences of p. If n is smaller or equal to zero, the parser equals to return []. Returns a list of n values returned by p. gcountcount :: Word8 ->  ByteString -> Int64Word8 ByteStringInt64count returns the number of times its argument appears in the ByteString
count = length . elemIndices
But more efficiently than using length on the intermediate list. fcountcount :: Char ->  ByteString -> IntChar ByteStringIntcount returns the number of times its argument appears in the ByteString
count = length . elemIndices
Also
count '\n' == length . lines
But more efficiently than using length on the intermediate list.  copyright copyright :: HtmlHtmlCopyright sign.  copyright copyright :: HtmlMFHtmlCopyright sign.  copyright copyright :: HtmlHtmlCopyright sign. + copyBytes  copyBytes :: Ptr a -> Ptr a -> Int -> IO ()BPtraPtraIntIO()Copies the given number of bytes from the second area (source) into the first (destination); the copied areas may not overlap , copyArray  copyArray :: Storable a => Ptr a -> Ptr a -> Int -> IO ()wBStorableaPtraPtraIntIO()Copy the given number of elements from the second array (source) into the first array (destination); the copied areas may not overlap gcopycopy ::  ByteString ->  ByteStringlQ ByteString ByteString*O(n) Make a copy of the ByteString with its own storage. This is mainly useful to allow the rest of the data pointed to by the ByteString to be garbage collected, for example if a large string has been read in, and only a small part of it is needed in the rest of the program. fcopycopy ::  ByteString ->  ByteString ByteString ByteString*O(n) Make a copy of the ByteString with its own storage. This is mainly useful to allow the rest of the data pointed to by the ByteString to be garbage collected, for example if a large string has been read in, and only a small part of it is needed in the rest of the program. coordscoords :: String -> HtmlAttrsStringHtmlAttrcoordscoords :: String -> HtmlAttrStringHtmlAttrcoordscoords :: String -> HtmlAttrH3StringHtmlAttr cookieValue cookieValue :: Cookie -> StringCookieStringValue of the cookie.  cookieSecure cookieSecure :: Cookie -> Bool'CookieBoolCTrue if this cookie should only be sent using secure means.  cookiePath cookiePath :: Cookie ->  Maybe StringCookieMaybeString,The path to which this cookie will be sent.  cookieName cookieName :: Cookie -> StringmZCookieStringName of the cookie.  cookieExpires cookieExpires :: Cookie -> Maybe CalendarTime CookieMaybe CalendarTimeExpiry date of the cookie. If Nothing, the cookie expires when the browser sessions ends. If the date is in the past, the client should delete the cookie immediately.  cookieDomain cookieDomain :: Cookie ->  Maybe String+!!CookieMaybeString5The domain suffix to which this cookie will be sent.  CookieCookie :: String -> String -> Maybe CalendarTime ->  Maybe String ->  Maybe String -> Bool -> Cookies""StringStringMaybe CalendarTimeMaybeStringMaybeStringBoolCookie Cookiedata Cookie";Contains all information about a cookie set by the server. ContTContT :: ((a -> m r) -> m r) ->  ContT r m ac#7#amrmrContTrmaContTnewtype ContT r m a#^The continuation monad transformer. Can be used to add continuation handling to other monads. ContinueContinue :: ResponseNextStepP$=$ResponseNextStepcontentcontent :: String -> HtmlAttr$$StringHtmlAttrcontentcontent :: String -> HtmlAttr%$StringHtmlAttrcontentcontent :: String -> HtmlAttrv%a%StringHtmlAttr conTconT :: Name -> TypeQ%%NameTypeQContCont :: ((a -> r) -> r) -> Cont r a6&&arrContraContnewtype Cont r ai&`Continuation monad. Cont r a is a CPS computation that produces an intermediate result of type a within a CPS computation whose final result type is r. The return function simply creates a continuation which passes the value on. The >>= operator adds the bound function into the continuation chain.  ConTConT :: Name -> Type( (NameTypeConSymConSym :: String -> Tokens(a(StringTokenConsumedConsumed :: a ->  Consumed a((aConsumedaConsumeddata Consumed a )gcons'cons' :: Word8 ->  ByteString ->  ByteString)j)Word8 ByteString ByteStringO(1) Unlike cons, 'cons\'' is strict in the ByteString that we are consing onto. More precisely, it forces the head and the first chunk. It does this because, for space efficiency, it may coalesce the new byte onto the first 'chunk' rather than starting a new 'chunk'. So that means you can't use a lazy recursive contruction like this:
let xs = cons\' c xs in xs
You can however use cons, as well as repeat and cycle, to build infinite lazy ByteStrings. gconscons :: Word8 ->  ByteString ->  ByteString,+Word8 ByteString ByteString9O(1) cons is analogous to '(:)' for lists. fconscons :: Char ->  ByteString ->  ByteString,,Char ByteString ByteStringmO(n) cons is analogous to (:) for lists, but of different complexity, as it requires a memcpy.  ConQtype ConQ = Q Con`- conPconP :: Name -> [PatQ] -> PatQ--Name[]PatQPatQ ConPConP :: Name -> [Pat] -> Pat8..Name[]PatPat connectToCGIScriptconnectToCGIScript :: String -> PortID -> IO ()..StringPortIDIO()RNote: if using Windows, you might need to wrap Network.withSocketsDo around main. CONNECTCONNECT ::  RequestMethodi/Y/ RequestMethodConIdConId :: String -> Token//StringToken conEconE :: Name -> ExpQ00NameExpQ ConEConE :: Name -> Exp_0Q0NameExp condE condE :: ExpQ -> ExpQ -> ExpQ -> ExpQ00ExpQExpQExpQExpQ CondE CondE :: Exp -> Exp -> Exp -> ExpS1<1ExpExpExpExpvCondBoxdata CondBox1v CondBinBox CondBinBox :: CondBox11CondBoxg concatMap concatMap :: (Word8 -> ByteString) ->  ByteString ->  ByteStringw2G2Word8 ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results f concatMap concatMap :: (Char -> ByteString) ->  ByteString ->  ByteStringa323Char ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results  concatHtml concatHtml ::  HTML a => [a] -> Html43HTMLa[]aHtml concatHtml concatHtml ::  HTML a => [a] -> Html4n4HTMLa[]aHtml concatHtml concatHtml ::  HTML a => [a] -> Html44HTMLa[]aHtmlgconcatconcat ::  [ByteString] ->  ByteStringr5Q5[] ByteString ByteString/O(n) Concatenate a list of ByteStrings. fconcatconcat ::  [ByteString] ->  ByteString65[] ByteString ByteString/O(n) Concatenate a list of ByteStrings.  Condata Conn6 compressWith compressWith :: CompressParams ->  ByteString ->  ByteString76CompressParams ByteString ByteString$Like compress but with the ability to specify various compression parameters. Typical usage:
compressWith defaultCompressParams { ... }
In particular you can set the compression level:
compressWith defaultCompressParams { compressLevel = BestCompression }
 compressWith compressWith :: CompressParams ->  ByteString ->  ByteString88CompressParams ByteString ByteString$Like compress but with the ability to specify various compression parameters. Typical usage:
compressWith defaultCompressParams { ... }
In particular you can set the compression level:
compressWith defaultCompressParams { compressLevel = BestCompression }
compressWindowBitscompressWindowBits :: CompressParams ->  WindowBits:g:CompressParams WindowBitscompressWindowBitscompressWindowBits :: CompressParams ->  WindowBits;:CompressParams WindowBitscompressStrategycompressStrategy :: CompressParams -> CompressionStrategy;;CompressParamsCompressionStrategycompressStrategycompressStrategy :: CompressParams -> CompressionStrategyF<<CompressParamsCompressionStrategyCompressParamsCompressParams :: CompressionLevel -> Method ->  WindowBits ->  MemoryLevel -> CompressionStrategy -> Int -> CompressParams~==CompressionLevelMethod WindowBits MemoryLevelCompressionStrategyIntCompressParamsCompressParamsdata CompressParams=The full set of parameters for compression. The defaults are defaultCompressParams. The compressBufferSize is the size of the first output buffer containing the compressed data. If you know an approximate upper bound on the size of the compressed data then setting this parameter can save memory. The default compression output buffer size is 16k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. CompressParamsCompressParams :: CompressionLevel -> Method ->  WindowBits ->  MemoryLevel -> CompressionStrategy -> Int -> CompressParams@@CompressionLevelMethod WindowBits MemoryLevelCompressionStrategyIntCompressParamsCompressParamsdata CompressParams AThe full set of parameters for compression. The defaults are defaultCompressParams. The compressBufferSize is the size of the first output buffer containing the compressed data. If you know an approximate upper bound on the size of the compressed data then setting this parameter can save memory. The default compression output buffer size is 16k. If your extimate is wrong it does not matter too much, the default buffer size will be used for the remaining chunks. compressMethodcompressMethod :: CompressParams -> MethodCkCCompressParamsMethodcompressMethodcompressMethod :: CompressParams -> MethodDCCompressParamsMethodcompressMemoryLevelcompressMemoryLevel :: CompressParams ->  MemoryLevelDrDCompressParams MemoryLevelcompressMemoryLevelcompressMemoryLevel :: CompressParams ->  MemoryLevel"EECompressParams MemoryLevel compressLevel compressLevel :: CompressParams -> CompressionLevelEECompressParamsCompressionLevel compressLevel compressLevel :: CompressParams -> CompressionLevel>FFCompressParamsCompressionLevelCompressionStrategydata CompressionStrategyFThe strategy parameter is used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. CompressionStrategydata CompressionStrategyGThe strategy parameter is used to tune the compression algorithm. The strategy parameter only affects the compression ratio but not the correctness of the compressed output even if it is not set appropriately. CompressionLevelCompressionLevel :: Int -> CompressionLevelHHIntCompressionLevel.A specific compression level between 1 and 9. CompressionLeveldata CompressionLevelhIThe compression level parameter controls the amount of compression. This is a trade-off between the amount of compression and the time required to do the compression. CompressionLevelCompressionLevel :: Int -> CompressionLevelJsJIntCompressionLevel.A specific compression level between 1 and 9. CompressionLeveldata CompressionLevelJThe compression level parameter controls the amount of compression. This is a trade-off between the amount of compression and the time required to do the compression. compressBufferSizecompressBufferSize :: CompressParams -> Int$L LCompressParamsIntcompressBufferSizecompressBufferSize :: CompressParams -> IntLLCompressParamsIntcompresscompress ::  ByteString ->  ByteStringML ByteString ByteStringcCompress a stream of data into the zlib format. This uses the default compression parameters. In partiular it uses the default compression level which favours a higher compression ratio over compression speed, though it does not use the maximum compression level. Use compressWith to adjust the compression level or other compression parameters. compresscompress ::  ByteString ->  ByteStringNN ByteString ByteStringcCompress a stream of data into the gzip format. This uses the default compression parameters. In partiular it uses the default compression level which favours a higher compression ratio over compression speed, though it does not use the maximum compression level. Use compressWith to adjust the compression level or other compression parameters.  compEcompE :: [StmtQ] -> ExpQPP[]StmtQExpQ CompECompE :: [Stmt] -> ExpPP[]StmtExpcompactcompact :: HtmlAttrBQ7QHtmlAttr commentStart commentStart :: GenLanguageDef s u m -> StringQQGenLanguageDefsumStringDescribes the start of a block comment. Use the empty string if the language doesn't support block comments. For example "/*". commentscomments :: PPHsMode -> BoolRRPPHsModeBoolnot implemented yet  commentLine commentLine :: GenLanguageDef s u m -> StringESSGenLanguageDefsumString}Describes the start of a line comment. Use the empty string if the language doesn't support line comments. For example "//".  commentEnd commentEnd :: GenLanguageDef s u m -> StringGT!TGenLanguageDefsumString}Describes the end of a block comment. Use the empty string if the language doesn't support block comments. For example "*/".  commaSep1 commaSep1 :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]UGUGenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser commaSep1 p parses one or more occurrences of p separated by comma. Returns a list of values returned by p. commaSepcommaSep :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a]WVGenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser commaSep p parses zero or more occurrences of p separated by comma. Returns a list of values returned by p. ycommacomma :: DocWWDocA ',' character commacomma :: GenTokenParser s u m -> ParsecT s u m StringX]XGenTokenParsersumParsecTsumStringrLexeme parser comma parses the character ',' and skips any trailing white space. Returns the string ",". CommaComma :: TokenEY=YTokenqcombinecombine :: FilePath -> FilePath -> FilePathYYFilePathFilePathFilePathWCombine two paths, if the second path isAbsolute, then it returns the second.
Valid x => combine (takeDirectory x) (takeFileName x) `equalFilePath` x
Posix:   combine "/" "test" == "/test"
Posix:   combine "home" "bob" == "home/bob"
Windows: combine "home" "bob" == "home\\bob"
Windows: combine "home" "/bob" == "/bob"
rcombinecombine :: FilePath -> FilePath -> FilePath[[FilePathFilePathFilePathWCombine two paths, if the second path isAbsolute, then it returns the second.
Valid x => combine (takeDirectory x) (takeFileName x) `equalFilePath` x
Posix:   combine "/" "test" == "/test"
Posix:   combine "home" "bob" == "home/bob"
Windows: combine "home" "bob" == "home\\bob"
Windows: combine "home" "/bob" == "/bob"
Columntype Column = Int3]Columntype Column = Intk]colspancolspan :: Int -> HtmlAttr]]IntHtmlAttrcolspancolspan :: Int -> HtmlAttr#^^IntHtmlAttrcolspancolspan :: Int -> HtmlAttr^m^IntHtmlAttrcolscols :: String -> HtmlAttr^^StringHtmlAttrcolscols :: String -> HtmlAttr7_"_StringHtmlAttrcolscols :: String -> HtmlAttr_~_StringHtmlAttrcolorcolor :: String -> HtmlAttr__StringHtmlAttrycoloncolon :: Doc)`#`DocA ':' character coloncolon :: GenTokenParser s u m -> ParsecT s u m String``GenTokenParsersumParsecTsumStringrLexeme parser colon parses the character ':' and skips any trailing white space. Returns the string ":". ColonColon :: Tokena|aTokencolgroupcolgroup :: Html -> HtmlaaHtmlHtmlcolgroupcolgroup :: Html -> Html4b%bHtmlHtmlcolgroupcolgroup :: Html -> Htmlb}bHtmlHtmlcolcol :: Html -> HtmlbbHtmlHtmlcolcol :: Html -> Html(ccHtmlHtmlcolcol :: Html -> HtmlvcgcHtmlHtml3COffdata COffccodebasecodebase :: String -> HtmlAttrdcStringHtmlAttrcodebasecodebase :: String -> HtmlAttrjdUdStringHtmlAttrcodebasecodebase :: String -> HtmlAttrddStringHtmlAttrcodecode :: String -> HtmlAttr*eeStringHtmlAttr3CModedata CModeXeCLongdata CLonge4Haskell type representing the C long type. 3 ClockTicktype  ClockTick = CClockeCLLongdata CLLong+f9Haskell type representing the C long long type. clickmapclickmap :: String -> HtmlffStringHtmlclickmapclickmap :: String -> Htmlg gStringHtmlclickmapclickmap :: String -> HtmlxgggStringHtmlwclearTixclearTix :: IO ()ggIO()clearclear :: String -> HtmlAttrhhStringHtmlAttrCLDoubledata CLDoubleOh;Haskell type representing the C long double type.  ClauseQtype ClauseQ = Q Clauseh clause clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQai6i[]PatQBodyQ[]DecQClauseQ Clause Clause :: [Pat] -> Body -> [Dec] -> Clauseii[]PatBody[]DecClause Clausedata Clause!j ClassOpI ClassOpI :: Name -> Type -> Name -> Fixity -> InfojjNameTypeNameFixityInfo classIndent classIndent :: PPHsMode -> Indent)kkPPHsModeIndent#indentation of a class or instance  ClassIClassI :: Dec -> InfokkDecInfo classDclassD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQfl+lCxtQName[]Name[]FunDep[]DecQDecQ ClassDClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Dec(mlCxtName[]Name[]FunDep[]DecDecCJmpBufdata CJmpBufZm7Haskell type representing the C jmp_buf type. citecite :: Html -> HtmlmmHtmlHtmlcitecite :: Html -> Html1n"nHtmlHtmlcitecite :: Html -> HtmlnrnHtmlHtmlCIntPtrdata CIntPtrnCIntMaxdata CIntMaxnCIntdata CInto3Haskell type representing the C int type. 3CInodata CInopochunkedTransfer chunkedTransfer ::  BufferOp a ->  IO (Result a) -> (Int -> IO (Result a)) -> IO (Result ([Header], a))ppBufferOpaIOResultaIntIOResultaIOResult(,)[]Headera]A necessary feature of HTTP/1.1 Also the only transfer variety likely to return any footers. yChrChr :: Char ->  TextDetails=q'qChar TextDetails~ choiceQchoiceQ :: MonadPlus m => GenericQ (m r) -> GenericQ (m r) -> GenericQ (m r)rq MonadPlusmGenericQmrGenericQmrGenericQmrChoice for monadic queries ~ choiceMpchoiceMp :: MonadPlus m =>  GenericM m ->  GenericM m ->  GenericM mrr MonadPlusmGenericMmGenericMmGenericMm#Choice for monadic transformations choicechoice ::  [ReadPrec a] ->  ReadPrec as[s[]ReadPrecaReadPreca,Combines all parsers in the specified list. choicechoice ::  [ReadP a] -> ReadP ats[]ReadPaReadPa,Combines all parsers in the specified list. choicechoice :: Stream s m t => [ParsecT s u m a] -> ParsecT s u m attStreamsmt[]ParsecTsumaParsecTsumachoice ps tries to apply the parsers in the list ps in order, until one of them succeeds. Returns the value of the succeeding parser.  checkValDef  checkValDef :: SrcLoc -> HsExp -> HsRhs -> [HsDecl] -> P HsDeclVv"vSrcLocHsExpHsRhs[]HsDeclPHsDecl checkUnQual checkUnQual :: HsQName -> P HsNamevvHsQNamePHsName checkRevDecls checkRevDecls :: [HsDecl] ->  P [HsDecl]Fw"w[]HsDeclP[]HsDecl checkPrec checkPrec :: Integer -> P IntwwIntegerPInt checkPattern checkPattern :: HsExp -> P HsPatxxHsExpPHsPatcheckInstHeadercheckInstHeader ::  HsQualType ->  P (HsContext, HsQName, [HsType])xx HsQualTypeP(,,) HsContextHsQName[]HsType checkExpr checkExpr :: HsExp -> P HsExp2yyHsExpPHsExpcheckedchecked :: HtmlAttrxymyHtmlAttrcheckedchecked :: HtmlAttryyHtmlAttrcheckedchecked :: HtmlAttrzyHtmlAttrcheckDataHeadercheckDataHeader ::  HsQualType -> P (HsContext, HsName, [HsName])z|z HsQualTypeP(,,) HsContextHsName[]HsName checkContext checkContext :: HsType ->  P HsContext.{{HsTypeP HsContextcheckClassHeadercheckClassHeader ::  HsQualType -> P (HsContext, HsName, [HsName]){{ HsQualTypeP(,,) HsContextHsName[]HsNamecheckClassBodycheckClassBody :: [HsDecl] ->  P [HsDecl]h|D|[]HsDeclP[]HsDeclcheckboxcheckbox :: String -> String -> Html||StringStringHtmlcheckboxcheckbox :: String -> String -> HtmlT};}StringStringHtmlcheckboxcheckbox :: String -> String -> Html}}StringStringHtmlcheckBOLcheckBOL ::  Lex a Bool~ ~LexaBoolcheckAssertioncheckAssertion :: HsType -> P HsAsst~u~HsTypePHsAsstcheckcheck :: Bool -> STM a~~BoolSTMa charLiteral charLiteral :: GenTokenParser s u m -> ParsecT s u m CharQGenTokenParsersumParsecTsumChar&This lexeme parser parses a single literal character. Returns the literal character value. This parsers deals correctly with escape sequences. The literal character is parsed according to the grammar rules defined in the Haskell report (which matches most programming languages quite closely).  charLcharL :: Char -> LitCharLit CharLCharL :: Char -> LitOACharLit-charIsRepresentablecharIsRepresentable :: Char -> IO BoolƁCharIOBoolDetermines whether a character can be accurately encoded in a CString. Unrepresentable characters are converted to '?'. Currently only Latin-1 characters are representable.  Character Character :: Char -> TokenЂCharTokenycharchar :: Char -> Doc. CharDocBA document of height and width 1, containing a literal character. charchar :: Char ->  ReadP CharσCharReadPChar,Parses and returns the specified character. charchar :: Stream s m Char => Char -> ParsecT s u m Char]StreamsmCharCharParsecTsumCharchar c parses a single character c. Returns the parsed character (i.e. c).
semiColon  = char ';'
CharChar :: Char -> LexemetcCharLexemeCharacter literal <Chandata Chan aHChan is an abstract type representing an unbounded FIFO channel. chainr1chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP ahReadPaReadPaaaReadPaFLike chainr, but parses one or more occurrences of p. chainr1chainr1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m aԇqStreamsmtParsecTsumaParsecTsumaaaParsecTsumachainr1 p op x parser one or more occurrences of |p|, separated by op Returns a value obtained by a right associative application of all functions returned by op to the values returned by p. chainr chainr :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP an<ReadPaReadPaaaaReadPachainr p op x parses zero or more occurrences of p, separated by op. Returns a value produced by a right associative application of all functions returned by op. If there are no occurrences of p, x is returned. chainr chainr :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m aStreamsmtParsecTsumaParsecTsumaaaaParsecTsumaEchainr p op x parser zero or more occurrences of p, separated by op Returns a value obtained by a right associative application of all functions returned by op to the values returned by p. If there are no occurrences of p, the value x is returned. chainl1chainl1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP ac4ReadPaReadPaaaReadPaFLike chainl, but parses one or more occurrences of p. chainl1chainl1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m a=StreamsmtParsecTsumaParsecTsumaaaParsecTsumachainl1 p op x parser one or more occurrences of p, separated by op Returns a value obtained by a left associative application of all functions returned by op to the values returned by p. . This parser can for example be used to eliminate left recursion which typically occurs in expression grammars.
expr    = term   `chainl1` mulop
term    = factor `chainl1` addop
factor  = parens expr <|> integer

mulop   =   do{ symbol "*"; return (*)   }
        <|> do{ symbol "/"; return (div) }

addop   =   do{ symbol "+"; return (+) }
        <|> do{ symbol "-"; return (-) }
chainl chainl :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP aߑReadPaReadPaaaaReadPachainl p op x parses zero or more occurrences of p, separated by op. Returns a value produced by a left associative application of all functions returned by op. If there are no occurrences of p, x is returned. chainl chainl :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> a -> ParsecT s u m aStreamsmtParsecTsumaParsecTsumaaaaParsecTsumaGchainl p op x parser zero or more occurrences of p, separated by op. Returns a value obtained by a left associative application of all functions returned by op to the values returned by p. If there are zero occurrences of p, the value x is returned.  cgiVarscgiVars ::  CGIRequest -> Map String String CGIRequestMapStringStringEnvironment variables.  cgiVarscgiVars ::  CGIRequest -> Map String StringQ+ CGIRequestMapStringStringEnvironment variables.  CGITCGIT :: (ReaderT CGIRequest (WriterT Headers m) a -> CGIT m aіReaderT CGIRequestWriterTHeadersmaCGITma CGITnewtype CGIT m aFThe CGIT monad transformer.  CGIResultdata  CGIResultThe result of a CGI program.  cgiRequestBodycgiRequestBody ::  CGIRequest ->  ByteString1 CGIRequest ByteStringRaw request body. To avoid memory leaks, this is the empty string if the request body has been interpreted as inputs in application/x-www-form-urlencoded or multipart/form-data format.  cgiRequestBodycgiRequestBody ::  CGIRequest ->  ByteStringtY CGIRequest ByteStringRaw request body. To avoid memory leaks, this is the empty string if the request body has been interpreted as inputs in application/x-www-form-urlencoded or multipart/form-data format.  CGIRequest  CGIRequest :: Map String String -> [(String, Input)] ->  ByteString ->  CGIRequestΚMapStringString[](,)StringInput ByteString CGIRequest CGIRequestdata  CGIRequestTThe input to a CGI action.  CGIRequest  CGIRequest :: Map String String -> [(String, Input)] ->  ByteString ->  CGIRequestPMapStringString[](,)StringInput ByteString CGIRequest CGIRequestdata  CGIRequestThe input to a CGI action.  CGIOutput CGIOutput ::  ByteString ->  CGIResult ByteString CGIResult CGINothing CGINothing ::  CGIResultaU CGIResult cgiInputs cgiInputs ::  CGIRequest -> [(String, Input)] CGIRequest[](,)StringInputLInput parameters. For better laziness in reading inputs, this is not a Map.  cgiInputs cgiInputs ::  CGIRequest -> [(String, Input)] CGIRequest[](,)StringInputLInput parameters. For better laziness in reading inputs, this is not a Map.  cgiGetcgiGet :: MonadCGI m => (CGIRequest -> a) -> m ajMonadCGIm CGIRequestama cgiAddHeader cgiAddHeader :: MonadCGI m =>  HeaderName -> String -> m (); MonadCGIm HeaderNameStringm() CGItype CGI a = CGIT IO au!A simple CGI monad with just IO. CFposdata CFposĠ6Haskell type representing the C fpos_t type. CFloatdata CFloat*5Haskell type representing the C float type. CFiledata CFile4Haskell type representing the C FILE type. centercenter :: Html -> HtmlHtmlHtml cellspacing cellspacing :: Int -> HtmlAttrygIntHtmlAttr cellspacing cellspacing :: Int -> HtmlAttrݢˢIntHtmlAttr cellspacing cellspacing :: Int -> HtmlAttrA/IntHtmlAttr cellpadding cellpadding :: Int -> HtmlAttrIntHtmlAttr cellpadding cellpadding :: Int -> HtmlAttr IntHtmlAttr cellpadding cellpadding :: Int -> HtmlAttrm[IntHtmlAttrcellcell :: HTMLTABLE ht => ht ->  HtmlTable HTMLTABLEhtht HtmlTableCDoubledata CDouble6Haskell type representing the C double type. 3CDevdata CDevxCClockdata CClock7Haskell type representing the C clock_t type. CChardata CChar 4Haskell type representing the C char type.  cCallcCall :: CallconvxCallconv CCallCCall :: CallconvŦCallconv4 catchJust  catchJust :: Exception e => (e -> Maybe b) -> IO a ->  (b -> IO a) -> IO aP ExceptioneeMaybebIOabIOaIOaThe function catchJust is like catch, but it takes an extra argument which is an exception predicate, a function which selects which type of exceptions we're interested in.
result <- catchJust errorCalls thing_to_try handler
Any other exceptions which are not matched by the predicate are re-raised, and may be caught by an enclosing catch or catchJust. catchIO_catchIO_ :: IO a -> IO a -> IO aIOaIOaIOacatchIOcatchIO :: IO a -> (IOException -> IO a) -> IO a7 IOa IOExceptionIOaIOaocatchIO a h handles IO action exceptions throughout codebase; version-specific tweaks better go here.  catchCGIcatchCGI :: CGI a -> (Exception -> CGI a) -> CGI a?CGIa ExceptionCGIaCGIanCatches any expection thrown by a CGI action, and uses the given exception handler if an exception is thrown. 4catchcatch :: Exception e => IO a ->  (e -> IO a) -> IO aI ExceptioneIOaeIOaIOaThis is the simplest of the exception-catching functions. It takes a single argument, runs it, and if an exception is raised the "handler" is executed, with the value of the exception passed as an argument. Otherwise, the result is returned as normal. For example:
catch (openFile f ReadMode)
    (\e -> hPutStr stderr ("Couldn't open "++f++": " ++ show e))
For catching exceptions in pure (non-IO) expressions, see the function evaluate. Note that due to Haskell's unspecified evaluation order, an expression may return one of several possible exceptions: consider the expression error "urk" + 1 `div` 0. Does catch execute the handler passing ErrorCall "urk", or ArithError DivideByZero? The answer is "either": catch makes a non-deterministic choice about which exception to catch. If you call it again, you might get a different exception back. This is ok, because catch is an IO computation. Note that catch catches all types of exceptions, and is generally used for "cleaning up" before passing on the exception using throwIO. It is not good practice to discard the exception and continue, without first checking the type of the exception (it might be a ThreadKilled, for example). In this case it is usually better to use catchJust and select the kinds of exceptions to catch. Also note that the Prelude also exports a function called Prelude.catch with a similar type to Control.Exception.catch, except that the Prelude version only catches the IO and user families of exceptions (as required by Haskell 98). We recommend either hiding the Prelude version of Prelude.catch when importing Control.Exception:
import Prelude hiding (catch)
or importing Control.Exception qualified, to avoid name-clashes:
import qualified Control.Exception as C
and then using C.catch ycatcat :: [Doc] -> DocJ7[]DocDoc#Either hcat or vcat.  castSTUArray castSTUArray :: STUArray s ix a -> ST s (STUArray s ix b)۴STUArraysixaSTsSTUArraysixbCasts an STUArray with one element type into one with a different element type. All the elements of the resulting array are undefined (unless you know what you're doing...).  castIOUArray castIOUArray ::  IOUArray ix a -> IO (IOUArray ix b)_0IOUArrayixaIOIOUArrayixbCasts an IOUArray with one element type into one with a different element type. All the elements of the resulting array are undefined (unless you know what you're doing...). -castCharToCCharcastCharToCChar :: Char -> CChar|lCharCCharfConvert a Haskell character to a C character. This function is only safe on the first 256 characters. -castCCharToCharcastCCharToChar :: CChar -> CharJ:CCharChar\Convert a C byte, representing a Latin-1 character, to the corresponding Haskell character.  caseSensitive caseSensitive :: GenLanguageDef s u m -> Bool- GenLanguageDefsumBool6Set to True if the language is case sensitive. casescases :: Counts -> IntCountsInt caseIndent caseIndent :: PPHsMode -> Indent PPHsModeIndent6indentation of the body of a case expression  caseEcaseE :: ExpQ -> [MatchQ] -> ExpQɺExpQ[]MatchQExpQ CaseECaseE :: Exp -> [Match] -> Exp7Exp[]MatchExpcaptioncaption :: Html -> Html~HtmlHtmlcaptioncaption :: Html -> HtmlԻHtmlHtmlcaptioncaption :: Html -> Html9*HtmlHtml Callconvdata Callconvmbc_strlenc_strlen :: CString -> IO CSizeּCStringIOCSizeb c_reverse  c_reverse ::  Ptr Word8 ->  Ptr Word8 -> CULong -> IO ()NPtrWord8PtrWord8CULongIO()b c_minimum c_minimum ::  Ptr Word8 -> CULong -> IO Word8 PtrWord8CULongIOWord8b c_maximum c_maximum ::  Ptr Word8 -> CULong -> IO Word8qPtrWord8CULongIOWord8b c_intersperse  c_intersperse ::  Ptr Word8 ->  Ptr Word8 -> CULong -> Word8 -> IO ()`(PtrWord8PtrWord8CULongWord8IO()bc_free_finalizerc_free_finalizer :: FunPtr (Ptr Word8 -> IO ())FunPtrPtrWord8IO()bc_count c_count ::  Ptr Word8 -> CULong -> Word8 ->  IO CULongYPtrWord8CULongWord8IOCULongbc2wc2w :: Char -> Word8CharWord8Unsafe conversion between Char and Word8. This is a no-op and silently truncates to 8 bits Chars > '\255'. It is provided as convenience for ByteString construction. g ByteStringdata  ByteStringA space-efficient representation of a Word8 vector, supporting many efficient operations. A ByteString contains 8-bit characters only. Instances of Eq, Ord, Read, Show, Data, Typeable b ByteStringdata  ByteStringA space-efficient representation of a Word8 vector, supporting many efficient operations. A ByteString contains 8-bit characters only. Instances of Eq, Ord, Read, Show, Data, Typeable f ByteStringdata  ByteStringA space-efficient representation of a Word8 vector, supporting many efficient operations. A ByteString contains 8-bit characters only. Instances of Eq, Ord, Read, Show, Data, Typeable 3 ByteCounttype  ByteCount = CSizebuttonbutton :: Html -> Html HtmlHtmlbuttonbutton :: Html -> Html^OHtmlHtmlbuttonbutton :: Html -> HtmlHtmlHtmlbulletbullet :: HtmlHtmlbulletbullet :: Html*#Htmlbulletbullet :: Htmlf_Html buildTime buildTime :: ParseTime t =>  TimeLocale -> [(Char, String)] -> t ParseTimet TimeLocale[](,)CharStringtbuildExpressionParserbuildExpressionParser :: Stream s m t => OperatorTable s u m a -> ParsecT s u m a -> ParsecT s u m a'Streamsmt OperatorTablesumaParsecTsumaParsecTsumaYbuildExpressionParser table term builds an expression parser for terms term with operators from table, taking the associativity and precedence specified in table into account. Prefix and postfix operators of the same precedence can only occur once (i.e. --2 is not allowed if - is prefix negate). Prefix and postfix operators of the same precedence associate to the left (i.e. if ++ is postfix increment, than -2++ equals -1, not -3). The buildExpressionParser takes care of all the complexity involved in building expression parser. Here is an example of an expression parser that handles prefix signs, postfix increment and basic arithmetic.
expr    = buildExpressionParser table term
        <?> "expression"

term    =  parens expr 
        <|> natural
        <?> "simple expression"

table   = [ [prefix "-" negate, prefix "+" id ]
          , [postfix "++" (+1)]
          , [binary "*" (*) AssocLeft, binary "/" (div) AssocLeft ]
          , [binary "+" (+) AssocLeft, binary "-" (-)   AssocLeft ]
          ]
        
binary  name fun assoc = Infix (do{ reservedOp name; return fun }) assoc
prefix  name fun       = Prefix (do{ reservedOp name; return fun })
postfix name fun       = Postfix (do{ reservedOp name; return fun })
fbreakSubstringbreakSubstring ::  ByteString ->  ByteString -> (ByteString, ByteString)? ByteString ByteString(,) ByteString ByteString$Break a string on a substring, returning a pair of the part of the string prior to the match, and the rest of the string. The following relationships hold:
break (== c) l == breakSubstring (singleton c) l
and:
findSubstring s l ==
   if null s then Just 0
             else case breakSubstring s l of
                      (x,y) | null y    -> Nothing
                            | otherwise -> Just (length x)
For example, to tokenise a string, dropping delimiters:
tokenise x y = h : if null t then [] else tokenise x (drop (length x) t)
    where (h,t) = breakSubstring x y
To skip to the first occurence of a string:
snd (breakSubstring x y) 
To take the parts of a string before a delimiter:
fst (breakSubstring x y) 
fbreakEndbreakEnd :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)CharBool ByteString(,) ByteString ByteStringsbreakEnd behaves like break but from the end of the ByteString breakEnd p == spanEnd (not.p) gbreakbreak :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)DWord8Bool ByteString(,) ByteString ByteStringPbreak p is equivalent to span (not . p). fbreakbreak :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)G CharBool ByteString(,) ByteString ByteStringPbreak p is equivalent to span (not . p). ybracketsbrackets :: Doc -> DocDocDoc Wrap document in [...] bracketsbrackets :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m aGenTokenParsersumParsecTsumaParsecTsuma{Lexeme parser brackets p parses p enclosed in brackets ('[' and ']'), returning the value of p. 4bracketOnError bracketOnError :: IO a ->  (a -> IO b) ->  (a -> IO c) -> IO cIOaaIObaIOcIOcqLike bracket, but only performs the final action if there was an exception raised by the in-between computation. 4bracket_ bracket_ :: IO a -> IO b -> IO c -> IO cIOaIObIOcIOc_A variant of bracket where the return value from the first computation is not required. 4bracket bracket :: IO a ->  (a -> IO b) ->  (a -> IO c) -> IO c IOaaIObaIOcIOcWhen you want to acquire a resource, do some work with it, and then release the resource, it is a good idea to use bracket, because bracket will install the necessary exception handler to release the resource in the event that an exception is raised during the computation. If an exception is raised, then bracket will re-raise the exception (after performing the release). A common example is opening a file:
bracket
  (openFile "filename" ReadMode)
  (hClose)
  (\handle -> do { ... })
The arguments to bracket are in this order so that we can partially apply it, e.g.:
withFile name mode = bracket (openFile name mode) hClose
ybracesbraces :: Doc -> Doc DocDoc Wrap document in {...} bracesbraces :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m aGenTokenParsersumParsecTsumaParsecTsumawLexeme parser braces p parses p enclosed in braces ('{' and '}'), returning the value of p. brbr :: HtmlHtmlbrbr :: HtmlHtmlbrbr :: HtmlHtmlvBoxLabeldata BoxLabel;boundsbounds :: (IArray a e, Ix i) => a i e -> (i, i)IArrayaeIxiaie(,)iibottombottom :: aa bordercolor bordercolor :: String -> HtmlAttrmXStringHtmlAttr bordercolor bordercolor :: String -> HtmlAttrStringHtmlAttr bordercolor bordercolor :: String -> HtmlAttrA,StringHtmlAttrborderborder :: Int -> HtmlAttrIntHtmlAttrborderborder :: Int -> HtmlAttrIntHtmlAttrborderborder :: Int -> HtmlAttrO=IntHtmlAttrboldbold :: Html -> HtmlHtmlHtmlboldbold :: Html -> HtmlHtmlHtmlboldbold :: Html -> Html?0HtmlHtml BodyQtype BodyQ = Q Bodyxbodybody :: Html -> HtmlHtmlHtmlbodybody :: Html -> Html HtmlHtmlbodybody :: Html -> HtmlhYHtmlHtml Bodydata Bodyblueblue :: StringString BlockTabledata  BlockTable a  blockquote blockquote :: Html -> HtmlfWHtmlHtml blockquote blockquote :: Html -> HtmlHtmlHtml blockquote blockquote :: Html -> HtmlHtmlHtml4BlockedOnDeadMVarBlockedOnDeadMVar :: BlockedOnDeadMVarvBlockedOnDeadMVar4BlockedOnDeadMVardata BlockedOnDeadMVar4BlockedIndefinitelyBlockedIndefinitely :: BlockedIndefinitelyD.BlockedIndefinitely4BlockedIndefinitelydata BlockedIndefinitely4blockedblocked :: IO BoolIOBoolKreturns True if asynchronous exceptions are blocked in the current thread. 4blockblock :: IO a -> IO axcIOaIOaApplying block to a computation will execute that computation with asynchronous exceptions blocked. That is, any thread which attempts to raise an exception in the current thread with Control.Exception.throwTo will be blocked until asynchronous exceptions are enabled again. There's no need to worry about re-enabling asynchronous exceptions; that is done automatically on exiting the scope of block. Threads created by Control.Concurrent.forkIO inherit the blocked state from the parent; that is, to start a thread in blocked mode, use block $ forkIO .... This is particularly useful if you need to establish an exception handler in the forked thread before any asynchronous exceptions are received. blackblack :: StringString bindSbindS :: PatQ -> ExpQ -> StmtQPatQExpQStmtQ BindSBindS :: Pat -> Exp -> Stmt`MPatExpStmtvBinBoxBinBox :: CondBox -> Bool -> BoxLabelCondBoxBoolBoxLabelbigbig :: Html -> Html&HtmlHtmlbigbig :: Html -> HtmlteHtmlHtmlbigbig :: Html -> HtmlHtmlHtmlbgcolorbgcolor :: String -> HtmlAttr$StringHtmlAttrbetween between ::  ReadP open ->  ReadP close -> ReadP a -> ReadP aReadPopenReadPcloseReadPaReadPabetween open close p parses open, followed by p and finally close. Only the value of p is returned. between between :: Stream s m t => ParsecT s u m open -> ParsecT s u m close -> ParsecT s u m a -> ParsecT s u m aStreamsmtParsecTsumopenParsecTsumcloseParsecTsumaParsecTsumabetween open close p parses open, followed by p and close. Returns the value returned by p.
braces  = between (symbol "{") (symbol "}")
BETAtype BETA = Poly BETA_ BestSpeed BestSpeed :: CompressionLevelCompressionLevel2The fastest compression method (less compression)  BestSpeed BestSpeed :: CompressionLevelp]CompressionLevel2The fastest compression method (less compression) BestCompressionBestCompression :: CompressionLevelCompressionLevel3The slowest compression method (best compression). BestCompressionBestCompression :: CompressionLevelCompressionLevel3The slowest compression method (best compression). besidesbesides :: HTMLTABLE ht => [ht] ->  HtmlTableY0 HTMLTABLEht[]ht HtmlTablebesidebeside :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTable HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTablebesidebeside ::  BlockTable a ->  BlockTable a ->  BlockTable a| BlockTablea BlockTablea BlockTableabdobdo :: Html -> HtmlHtmlHtmlbdobdo :: Html -> HtmlN?HtmlHtmlbdobdo :: Html -> HtmlHtmlHtmlbasefontbasefont :: HtmlHtmlbasebase :: String -> HtmlAttr8#StringHtmlAttrbasebase :: String -> HtmlAttrStringHtmlAttrbasebase :: String -> HtmlAttrStringHtmlAttrBarBar :: Token( Token Backslash Backslash :: TokenldToken BackQuote BackQuote :: TokenToken background background :: String -> HtmlAttrStringHtmlAttratSrcLocatSrcLoc :: P a -> SrcLoc -> P aqPaSrcLocPaAtAt :: TokenToken4AsyncExceptiondata AsyncExceptionAsynchronous exceptions assocsassocs :: (IArray a e, Ix i) => a i e -> [(i, e)]zIArrayaeIxiaie[](,)ie<Returns the contents of an array as a list of associations.  AssocRight AssocRight :: Assoc6.Assoc AssocNone AssocNone :: AssoczrAssoc AssocLeft AssocLeft :: AssocAssocAssocdata AssocNThis data type specifies the associativity of operators: left, right or none. Assocdata Assoc a bl assertString assertString :: String ->  AssertionString AssertionassertionPredicateassertionPredicate :: AssertionPredicable t => t -> AssertionPredicate[AssertionPredicablettAssertionPredicateAssertionPredicatetype AssertionPredicate = IO BoolAssertionPredicableclass AssertionPredicable t04AssertionFailedAssertionFailed :: String -> AssertionFailedStringAssertionFailed4AssertionFaileddata AssertionFailed Assertiontype  Assertion = IO ()2 Assertiontype  Assertion = IO ()r assertFailure assertFailure :: String ->  AssertionString Assertion assertFailure assertFailure :: String ->  AssertionR<String Assertion assertEqual  assertEqual :: (Eq a, Show a) => String -> a -> a ->  AssertionEqaShowaStringaa Assertion assertBool assertBool :: String -> Bool ->  AssertionhStringBool Assertion Assertableclass  Assertable tassertassert :: Assertable t => t ->  Assertion8 Assertablett Assertion4assertassert :: Bool -> a -> aBoolaa7If the first argument evaluates to True, then the result is the second argument. Otherwise an AssertionFailed exception is raised, containing a String with the source file and line number of the call to assert. Assertions can normally be turned on or off with a compiler flag (for GHC, assertions are normally on unless optimisation is turned on with -O or the -fignore-asserts option is given). When assertions are turned off, the first argument to assert is ignored, and the second argument is returned as the result.  asPasP :: Name -> PatQ -> PatQ1NamePatQPatQ AsPAsP :: Name -> Pat -> Pat~NamePatPat arrowTarrowT :: TypeQTypeQ ArrowTArrowT :: Type Type4ArrayExceptiondata ArrayExceptionK)Exceptions generated by array operations arrayarray :: (IArray a e, Ix i) => (i, i) -> [(i, e)] -> a i e+IArrayaeIxi(,)ii[](,)ieaieConstructs an immutable array from a pair of bounds and a list of initial associations. The bounds are specified as a pair of the lowest and highest bounds in the array respectively. 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)). An association is a pair of the form (i,x), which defines the value of the array at index i to be x. The array is undefined 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 implementation-dependent. (In GHC, the last value specified for that index is used. Other implementations will also do this for unboxed arrays, but Haskell 98 requires that for Array the value at such indices is bottom.) Because the indices must be checked for these errors, array is strict in the bounds argument and in the indices of the association list. Whether array is strict or non-strict in the elements depends on the array type: Data.Array.Array is a non-strict array type, but all of the Data.Array.Unboxed.UArray arrays are strict. Thus in a non-strict array, 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. 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 bounds still yields the bounds with which the array was constructed.  arithSeqE arithSeqE :: RangeQ -> ExpQ> - RangeQExpQ ArithSeqE ArithSeqE :: Range -> Exp  RangeExp4ArithExceptiondata ArithException "The type of arithmetic exceptions WArgOrderdata ArgOrder a0.What to do with options following non-options WArgDescrdata ArgDescr a~Describes whether an option takes an argument or not, and if so how the argument is injected into a value of type a. areaarea :: HtmlJCHtmlareaarea :: Html{Htmlareaarea :: HtmlHtmlarchivearchive :: String -> HtmlAttrStringHtmlAttrarchivearchive :: String -> HtmlAttr~iStringHtmlAttrarchivearchive :: String -> HtmlAttrStringHtmlAttraquaaqua :: StringString appTappT :: TypeQ -> TypeQ -> TypeQpTypeQTypeQTypeQ AppTAppT :: Type -> Type -> TypeTypeTypeType appsEappsE :: [ExpQ] -> ExpQH3[]ExpQExpQappletapplet :: Html -> HtmlHtmlHtmlg appendFile appendFile :: FilePath ->  ByteString -> IO ()'FilePath ByteStringIO()&Append a ByteString to a file. f appendFile appendFile :: FilePath ->  ByteString -> IO ()FilePath ByteStringIO()&Append a ByteString to a file. gappendappend ::  ByteString ->  ByteString ->  ByteStringe ByteString ByteString ByteString&O(n\c)/ Append two ByteStrings fappendappend ::  ByteString ->  ByteString ->  ByteString@ ByteString ByteString ByteString#O(n) Append two ByteStrings  appEappE :: ExpQ -> ExpQ -> ExpQExpQExpQExpQ AppEAppE :: Exp -> Exp -> Exp)ExpExpExpanyTokenanyToken :: (Stream s m t, Show t) => ParsecT s u m tStreamsmtShowtParsecTsumtThe parser anyToken accepts any kind of token. It is for example used to implement eof. Returns the accepted token. anyCharanyChar :: Stream s m Char => ParsecT s u m CharStreamsmCharParsecTsumCharFThis parser succeeds for any character. Returns the parsed character. ganyany :: (Word8 -> Bool) ->  ByteString -> BoolpWord8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, any determines if any element of the ByteString satisfies the predicate. fanyany :: (Char -> Bool) ->  ByteString -> BoolCharBool ByteStringBoolApplied to a predicate and a ByteString, any determines if any element of the ByteString satisfies the predicate. !annotateIOError annotateIOError :: IOError -> String ->  Maybe Handle -> Maybe FilePath -> IOErrorIOErrorStringMaybeHandleMaybeFilePathIOErrorAdds a location description and maybe a file path and file handle to an IOError. If any of the file handle or file path is not given the corresponding value in the IOError remains unaltered. anglesangles :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m aLGenTokenParsersumParsecTsumaParsecTsumaLexeme parser angles p parses p enclosed in angle brackets ('<' and '>'), returning the value of p. anchoranchor :: Html -> HtmlqbHtmlHtmlanchoranchor :: Html -> HtmlHtmlHtmlanchoranchor :: Html -> Html HtmlHtmlamapamap :: #(IArray a e', IArray a e, Ix i) =>  (e' -> e) -> a i e' -> a i eIArrayae'IArrayaeIxie'eaie'aiedReturns a new array derived from the original array by applying a function to each of the elements.  alternative alternative :: Lex a v -> Lex a (Lex a v)LexavLexaLexavaltcodealtcode :: String -> HtmlAttr,  StringHtmlAttraltcodealtcode :: String -> HtmlAttr y StringHtmlAttraltcodealtcode :: String -> HtmlAttr  StringHtmlAttraltalt :: String -> HtmlAttrJ!5!StringHtmlAttraltalt :: String -> HtmlAttr!!StringHtmlAttraltalt :: String -> HtmlAttr!!StringHtmlAttr!alreadyInUseErrorTypealreadyInUseErrorType ::  IOErrorTypef"X" IOErrorTypeyI/O error where the operation failed because one of its arguments is a single-use resource, which is already being used. !alreadyExistsErrorTypealreadyExistsErrorType ::  IOErrorTypeI#;# IOErrorTypeRI/O error where the operation failed because one of its arguments already exists. alphaNumalphaNum :: Stream s m Char => ParsecT s u m Char&$#StreamsmCharParsecTsumCharZParses a letter or digit (a character between '0' and '9'). Returns the parsed character. ALPHAtype ALPHA = Poly ALPHA_$) allocaBytes allocaBytes :: Int -> (Ptr a -> IO b) -> IO bM%'%IntPtraIObIOballocaBytes n f executes the computation f, passing as argument a pointer to a temporarily allocated block of memory of n bytes. The block of memory is sufficiently aligned for any of the basic foreign types that fits into a memory block of the allocated size. The memory is freed when f terminates (either normally or via an exception), so the pointer passed to f must not be used after this. , allocaArray0 allocaArray0 :: Storable a => Int -> (Ptr a -> IO b) -> IO b''StorableaIntPtraIObIObZLike allocaArray, but add an extra position to hold a special termination element. , allocaArray allocaArray :: Storable a => Int -> (Ptr a -> IO b) -> IO b((StorableaIntPtraIObIOb|Temporarily allocate space for the given number of elements (like Foreign.Marshal.Alloc.alloca, but for multiple elements). )allocaalloca :: Storable a => (Ptr a -> IO b) -> IO b))StorableaPtraIObIObTalloca f executes the computation f, passing as argument a pointer to a temporarily allocated block of memory sufficient to hold values of type a. The memory is freed when f terminates (either normally or via an exception), so the pointer passed to f must not be used after this. gallall :: (Word8 -> Bool) ->  ByteString -> Bool++Word8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. fallall :: (Char -> Bool) ->  ByteString -> Bool,,CharBool ByteStringBoolApplied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. alinkalink :: String -> HtmlAttr--StringHtmlAttralignalign :: String -> HtmlAttr--StringHtmlAttralignalign :: String -> HtmlAttr].H.StringHtmlAttralignalign :: String -> HtmlAttr..StringHtmlAttrafileafile :: String -> Html//StringHtmlafileafile :: String -> Htmlg/V/StringHtmlafileafile :: String -> Html//StringHtmlAF_X25AF_X25 :: Family//Family AF_WANPIPE AF_WANPIPE :: FamilyE0<0Family AF_UNSPEC AF_UNSPEC :: Family00FamilyAF_UNIXAF_UNIX :: Family00FamilyAF_SNAAF_SNA :: Family 11Family AF_SECURITY AF_SECURITY :: FamilyW1N1FamilyAF_ROUTEAF_ROUTE :: Family11FamilyAF_ROSEAF_ROSE :: Family11FamilyAF_PPPOXAF_PPPOX :: Family!22Family AF_PACKET AF_PACKET :: Familyg2^2Family AF_NETROM AF_NETROM :: Family22Family AF_NETBEUI AF_NETBEUI :: Family22FamilyAF_ISDNAF_ISDN :: Family73.3FamilyAF_IRDAAF_IRDA :: Familyy3p3FamilyAF_IPXAF_IPX :: Family33FamilyAF_INET6AF_INET6 :: Family33FamilyAF_INETAF_INET :: Family?464Family AF_ECONET AF_ECONET :: Family4|4Family AF_DECnet AF_DECnet :: Family44Family AF_BRIDGE AF_BRIDGE :: Family55Family AF_BLUETOOTH AF_BLUETOOTH :: Family]5T5FamilyAF_AX25AF_AX25 :: Family55Family AF_ATMSVC AF_ATMSVC :: Family55Family AF_ATMPVC AF_ATMPVC :: Family+6"6FamilyAF_ASHAF_ASH :: Familyk6b6Family AF_APPLETALK AF_APPLETALK :: Family66Family, advancePtr advancePtr :: Storable a => Ptr a -> Int -> Ptr aN7#7StorableaPtraIntPtra@Advance a pointer into an array by the given number of elements  addUTCTime addUTCTime :: NominalDiffTime -> UTCTime -> UTCTime"87NominalDiffTimeUTCTimeUTCTimeaddUTCTime a b = a + b qaddTrailingPathSeparatoraddTrailingPathSeparator :: FilePath -> FilePath88FilePathFilePathAdd a trailing file path separator if one is not already present.
hasTrailingPathSeparator (addTrailingPathSeparator x)
hasTrailingPathSeparator x ==> addTrailingPathSeparator x == x
Posix:    addTrailingPathSeparator "test/rest" == "test/rest/"
raddTrailingPathSeparatoraddTrailingPathSeparator :: FilePath -> FilePathP:9:FilePathFilePathAdd a trailing file path separator if one is not already present.
hasTrailingPathSeparator (addTrailingPathSeparator x)
hasTrailingPathSeparator x ==> addTrailingPathSeparator x == x
Posix:    addTrailingPathSeparator "test/rest" == "test/rest/"
addressaddress :: Html -> Html;;HtmlHtmladdressaddress :: Html -> Html<;HtmlHtmladdressaddress :: Html -> HtmlY<J<HtmlHtml;addMVarFinalizeraddMVarFinalizer :: MVar a -> IO () -> IO ()<<MVaraIO()IO()Add a finalizer to an MVar (GHC only). See Foreign.ForeignPtr and System.Mem.Weak for more about finalizers.  addGregorianYearsRollOveraddGregorianYearsRollOver :: Integer -> Day -> Day==IntegerDayDayAdd years, matching month and day, with Feb 29th rolled over to Mar 1st if necessary. For instance, 2004-02-29 + 2 years = 2006-03-01.  addGregorianYearsClipaddGregorianYearsClip :: Integer -> Day -> Day ?>IntegerDayDayAdd years, matching month and day, with Feb 29th clipped to Feb 28th if necessary. For instance, 2004-02-29 + 2 years = 2006-02-28.  addGregorianMonthsRollOveraddGregorianMonthsRollOver :: Integer -> Day -> Day%@@IntegerDayDayAdd months, with days past the last day of the month rolling over to the next month. For instance, 2005-01-30 + 1 month = 2005-03-02.  addGregorianMonthsClipaddGregorianMonthsClip :: Integer -> Day -> Day7A!AIntegerDayDayAdd months, with days past the last day of the month clipped to the last day. For instance, 2005-01-30 + 1 month = 2005-02-28. ^ addFinalizer addFinalizer :: key -> IO () -> IO ()4BBkeyIO()IO()=A specialised version of mkWeakPtr, where the Weak object returned is simply thrown away (however the finalizer will be remembered by the garbage collector, and will still be run when the key becomes unreachable). Note: adding a finalizer to a Foreign.ForeignPtr.ForeignPtr using addFinalizer won't work as well as using the specialised version Foreign.ForeignPtr.addForeignPtrFinalizer because the latter version adds the finalizer to the primitive 'ForeignPtr#' object inside, whereas the generic addFinalizer will add the finalizer to the box. Optimisations tend to remove the box, which may cause the finalizer to run earlier than you intended. The same motivation justifies the existence of Control.Concurrent.MVar.addMVarFinalizer and Data.IORef.mkWeakIORef (the non-uniformity is accidental). q addExtension addExtension :: FilePath -> String -> FilePathEEFilePathStringFilePathAdd an extension, even if there is already one there. E.g. addExtension "foo.txt" "bat" -> "foo.txt.bat".
addExtension "file.txt" "bib" == "file.txt.bib"
addExtension "file." ".bib" == "file..bib"
addExtension "file" ".bib" == "file.bib"
addExtension "/" "x" == "/.x"
Valid x => takeFileName (addExtension (addTrailingPathSeparator x) "ext") == ".ext"
Windows: addExtension "\\\\share" ".txt" == "\\\\share\\.txt"
r addExtension addExtension :: FilePath -> String -> FilePath@H!HFilePathStringFilePathAdd an extension, even if there is already one there. E.g. addExtension "foo.txt" "bat" -> "foo.txt.bat".
addExtension "file.txt" "bib" == "file.txt.bib"
addExtension "file." ".bib" == "file..bib"
addExtension "file" ".bib" == "file.bib"
addExtension "/" "x" == "/.x"
Valid x => takeFileName (addExtension (addTrailingPathSeparator x) "ext") == ".ext"
Windows: addExtension "\\\\share" ".txt" == "\\\\share\\.txt"
addErrorMessageaddErrorMessage :: Message ->  ParseError ->  ParseErrorJqJMessage ParseError ParseError addDaysaddDays :: Integer -> Day -> DayKJIntegerDayDayADDATTRSclass ADDATTRS a:KADDATTRSclass ADDATTRS aqKADDATTRSclass ADDATTRS aKactionaction :: String -> HtmlAttrLKStringHtmlAttractionaction :: String -> HtmlAttrhLSLStringHtmlAttractionaction :: String -> HtmlAttrLLStringHtmlAttracronymacronym :: Html -> HtmlMMHtmlHtmlacronymacronym :: Html -> HtmltMeMHtmlHtmlacronymacronym :: Html -> HtmlMMHtmlHtml accumArray  accumArray :: (IArray a e, Ix i) => (e -> e' -> e) -> e -> (i, i) ->  [(i, e')] -> a i eNlNIArrayaeIxiee'ee(,)ii[](,)ie'aie*Constructs an immutable array from a list of associations. Unlike array, the same index is allowed to occur multiple times in the list of associations; an accumulating function is used to combine the values of elements with the same index. For example, given a list of values of some index type, hist produces a histogram of the number of occurrences of each index within a specified range:
hist :: (Ix a, Num b) => (a,a) -> [a] -> Array a b
hist bnds is = accumArray (+) 0 bnds [(i, 1) | i\<-is, inRange bnds i]
accum accum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e ->  [(i, e')] -> a i eQwQIArrayaeIxiee'eaie[](,)ie'aieaccum f takes an array and an association list and accumulates pairs from the list into the array with the accumulating function f. Thus accumArray can be defined using accum:
accumArray f z b = accum f (array b [(i, z) | i \<- range b])
abovesaboves :: HTMLTABLE ht => [ht] ->  HtmlTablekSBS HTMLTABLEht[]ht HtmlTableaboveabove :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTableTS HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTableaboveabove ::  BlockTable a ->  BlockTable a ->  BlockTable aTT BlockTablea BlockTablea BlockTableaabbrabbr :: Html -> HtmlUUHtmlHtmlabbrabbr :: Html -> Html`UQUHtmlHtmlabbrabbr :: Html -> HtmlUUHtmlHtml@?= (@?=) :: (Eq a, Show a) => a -> a ->  Assertion>VVEqaShowaaa Assertion@? (@?) :: AssertionPredicable t => t -> String ->  AssertionVVAssertionPredicablettString Assertion@=? (@=?) :: (Eq a, Show a) => a -> a ->  AssertionoWGWEqaShowaaa Assertion>|| (>||) :: Done -> Done -> DoneWWDoneDoneDone:Evaluates the first argument in parallel with the second. >| (>|) :: Done -> Done -> Done{XfXDoneDoneDone0Evaluates the first argument before the second. A>>= (>>=) ::  Monad m => m a ->  (a -> m b) -> m b;YYMonadmmaambmbA>> (>>) ::  Monad m => m a -> m b -> m bYYMonadmmambmb<||> (<||>) :: Stream s Identity tok => StreamPermParser s st (a -> b) ->  Parsec s st a -> StreamPermParser s st bZcZStreamsIdentitytokStreamPermParsersstabParsecsstaStreamPermParsersstbThe expression perm <||> p adds parser p to the permutation parser perm. The parser p is not allowed to accept empty input - use the optional combinator (<|?>) instead. Returns a new permutation parser that includes p. <|?> (<|?>) :: Stream s Identity tok => StreamPermParser s st (a -> b) -> (a, Parsec s st a) -> StreamPermParser s st b]\StreamsIdentitytokStreamPermParsersstab(,)aParsecsstaStreamPermParsersstb.The expression perm <||> (x,p) adds parser p to the permutation parser perm. The parser p is optional - if it can not be applied, the default value x will be used instead. Returns a new permutation parser that includes the optional parser p. <|> (<|>) ::  Monad m => ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m a_^MonadmParsecTsumaParsecTsumaParsecTsumaThis combinator implements choice. The parser p <|> q first applies p. If it succeeds, the value of p is returned. If p fails without consuming any input, parser q is tried. This combinator is defined equal to the mplus member of the MonadPlus class and the (Control.Applicative.<|>) member of Control.Applicative.Alternative. The parser is called predictive since q is only tried when parser p didn't consume any input (i.e.. the look ahead is 1). This non-backtracking behaviour allows for both an efficient implementation of the parser combinators and the generation of good error messages.  () ::  Monad m => ParsecT s u m a -> String -> ParsecT s u m abPbMonadmParsecTsumaStringParsecTsumaThe parser p ? msg behaves as parser p, but whenever the parser p fails without consuming any input, it replaces expect error messages with the expect error message msg. This is normally used at the end of a set alternatives where we want to return an error message in terms of a higher level construct rather than returning all possible characters. For example, if the expr parser from the try example would fail, the error message is: '...: expecting expression'. Without the (<?>) combinator, the message would be like '...: expecting "let" or letter', which is less friendly. y<> (<>) :: Doc -> Doc -> Doce{eDocDocDocDBeside. <> is associative, with identity empty. << (<<) ::  HTML a =>  (Html -> b) -> a -> bNf/fHTMLaHtmlbab&Put something inside an HTML element. << (<<) ::  HTML a =>  (Html -> b) -> a -> bffHTMLaHtmlbab&Put something inside an HTML element. << (<<) ::  HTML a =>  (Html -> b) -> a -> bgugHTMLaHtmlbab&Put something inside an HTML element.  () :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTableph4h HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTableq () :: FilePath -> FilePath -> FilePathhhFilePathFilePathFilePath!A nice alias for combine. r () :: FilePath -> FilePath -> FilePathitiFilePathFilePathFilePath!A nice alias for combine. q<.> (<.>) :: FilePath -> String -> FilePath4jjFilePathStringFilePathFAlias to addExtension, for people who like that sort of thing. r<.> (<.>) :: FilePath -> String -> FilePathjjFilePathStringFilePathFAlias to addExtension, for people who like that sort of thing. <-> (<->) :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTablekk HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTabley<+> (<+>) :: Doc -> Doc -> DocXlFlDocDocDocBeside, separated by space, unless one of the arguments is empty. <+> is associative, with identity empty. <++ (<++) ::  ReadPrec a ->  ReadPrec a ->  ReadPrec aumEmReadPrecaReadPrecaReadPrecaxLocal, exclusive, left-biased choice: If left parser locally produces any result at all, then right parser is not used. <++ (<++) :: ReadP a -> ReadP a -> ReadP arnKnReadPaReadPaReadPaxLocal, exclusive, left-biased choice: If left parser locally produces any result at all, then right parser is not used. <$?> (<$?>) :: Stream s Identity tok => (a -> b) -> (a, Parsec s st a) -> StreamPermParser s st booStreamsIdentitytokab(,)aParsecsstaStreamPermParsersstbUThe expression f <$?> (x,p) creates a fresh permutation parser consisting of parser p. The the final result of the permutation parser is the function f applied to the return value of p. The parser p is optional - if it can not be applied, the default value x will be used instead. <$$> (<$$>) :: Stream s Identity tok => (a -> b) ->  Parsec s st a -> StreamPermParser s st b rqStreamsIdentitytokabParsecsstaStreamPermParsersstb1The expression f <$$> p creates a fresh permutation parser consisting of parser p. The the final result of the permutation parser is the function f applied to the return value of p. The parser p is not allowed to accept empty input - use the optional combinator (<$?>) instead. If the function f takes more than one parameter, the type variable b is instantiated to a functional type which combines nicely with the adds parser p to the (<||>) combinator. This results in stylized code where a permutation parser starts with a combining function f followed by the parsers. The function f gets its parameters in the order in which the parsers are specified, but actual input can be in any order. := (:=) :: a -> b ->  Assoc a buuabAssocab// (//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i eov*vIArrayaeIxiaie[](,)ieaie^Takes an array and a list of pairs and returns an array identical to the left 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]] is the same matrix, except with the diagonal zeroed. As with the array function, if any two associations in the list have the same index, the value at that index is implementation-dependent. (In GHC, the last value specified for that index is used. Other implementations will also do this for unboxed arrays, but Haskell 98 requires that for Array the value at such indices is bottom.) For most array types, this operation is O(n) where n is the size of the array. However, the Data.Array.Diff.DiffArray type provides this operation with complexity linear in the number of updates. .||(.||) :: (b -> c) ->  Strategy b -> (a -> b) -> a -> crzJzbcStrategybabacParallel function composition. The result of the second function is evaluated using the given strategy, in parallel with the application of the first function. .|(.|) :: (b -> c) ->  Strategy b -> (a -> b) -> a -> c{{bcStrategybabacSequential function composition. The result of the second function is evaluated using the given strategy, and then given to the first function. -||(-||) :: (a -> b) ->  Strategy b -> (b -> c) -> a -> c||abStrategybbcacParallel inverse function composition, for those who read their programs from left to right. The result of the first function is evaluated using the given strategy, in parallel with the application of the second function. -|(-|) :: (a -> b) ->  Strategy b -> (b -> c) -> a -> ck~C~abStrategybbcacSequential inverse function composition, for those who read their programs from left to right. The result of the first function is evaluated using the given strategy, and then given to the second function. +++ (+++) :: (HTML a, HTML b) => a -> b -> HtmlHTMLaHTMLbabHtml]Create a piece of HTML which is the concatenation of two things which can be made into HTML. +++ (+++) :: (HTML a, HTML b) => a -> b -> HtmlHTMLaHTMLbabHtml]Create a piece of HTML which is the concatenation of two things which can be made into HTML. +++ (+++) :: (HTML a, HTML b) => a -> b -> HtmlfHTMLaHTMLbabHtml]Create a piece of HTML which is the concatenation of two things which can be made into HTML. +++ (+++) ::  ReadPrec a ->  ReadPrec a ->  ReadPrec aOReadPrecaReadPrecaReadPrecaSymmetric choice. +++ (+++) :: ReadP a -> ReadP a -> ReadP aReadPaReadPaReadPaSymmetric choice. $|| ($||) :: (a -> b) ->  Strategy a -> a -> babStrategyaab~Parallel function application. The argument is evaluated using the given strategy, in parallel with the function application. $| ($|) :: (a -> b) ->  Strategy a -> a -> babStrategyaabxSequential function application. The argument is evaluated using the given strategy before it is given to the function. y$+$ ($+$) :: Doc -> Doc -> DocDocDocDocSAbove, with no overlapping. $+$ is associative, with identity empty. y$$ ($$) :: Doc -> Doc -> DocG5DocDocDocAbove, except that if the last line of the first argument stops at least one position before the first line of the second begins, these two lines are overlapped. For example:
text "hi" $$ nest 5 (text "there")
lays out as
hi   there
rather than
hi
     there
$$ is associative, with identity empty, and also satisfies
  • (x $$ y) <> z = x $$ (y <> z), if y non-empty.
! (!) :: ADDATTRS a => a ->  [HtmlAttr] -> aňADDATTRSaa[]HtmlAttra! (!) :: ADDATTRS a => a ->  [HtmlAttr] -> aL$ADDATTRSaa[]HtmlAttra! (!) :: ADDATTRS a => a ->  [HtmlAttr] -> aӉADDATTRSaa[]HtmlAttra! (!) :: (IArray a e, Ix i) => a i e -> i -> eb5IArrayaeIxiaieieBReturns the element of an immutable array at the specified index. F||| (|||) :: ArrowChoice a => a b d -> a c d -> a (Either b c) d[ ArrowChoiceaabdacdaEitherbcd || (||) :: Bool -> Bool -> BoolËBoolBoolBool Boolean "or" j|> (|>) :: Seq a -> a -> Seq a<"SeqaaSeqa|O(1). Add an element to the right end of a sequence. Mnemonic: a triangle with the single element at the pointy end.  zipWithM_  zipWithM_ ::  Monad m => (a -> b -> m c) -> [a] -> [b] -> m ()q7Monadmabmc[]a[]bm()UzipWithM_ is the extension of zipWithM which ignores the final result. zipWithM zipWithM ::  Monad m => (a -> b -> m c) -> [a] -> [b] -> m [c]DMonadmabmc[]a[]bm[]cMThe zipWithM function generalizes zipWith to arbitrary monads. zipWith7zipWith7 :: &(a -> b -> c -> d -> e -> f -> g -> h) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [h] abcdefgh[]a[]b[]c[]d[]e[]f[]g[]hThe zipWith7 function takes a function which combines seven elements, as well as seven lists and returns a list of their point-wise combination, analogous to zipWith. zipWith6zipWith6 :: !(a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]Ց|abcdefg[]a[]b[]c[]d[]e[]f[]gThe zipWith6 function takes a function which combines six elements, as well as six lists and returns a list of their point-wise combination, analogous to zipWith. zipWith5zipWith5 :: (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]~1abcdef[]a[]b[]c[]d[]e[]fThe zipWith5 function takes a function which combines five elements, as well as five lists and returns a list of their point-wise combination, analogous to zipWith. zipWith4zipWith4 :: (a -> b -> c -> d -> e) -> [a] -> [b] -> [c] -> [d] -> [e] Ȕabcde[]a[]b[]c[]d[]eThe zipWith4 function takes a function which combines four elements, as well as four lists and returns a list of their point-wise combination, analogous to zipWith. zipWith3 zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]t?abcd[]a[]b[]c[]dThe zipWith3 function takes a function which combines three elements, as well as three lists and returns a list of their point-wise combination, analogous to zipWith. zipWith zipWith ::  (a -> b -> c) -> [a] -> [b] -> [c]abc[]a[]b[]czipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function. For example, zipWith (+) is applied to two lists to produce the list of corresponding sums. ezipWith zipWith :: (Word8 -> Word8 -> a) ->  ByteString ->  ByteString -> [a]d-Word8Word8a ByteString ByteString[]azipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function. For example, zipWith (+) is applied to two ByteStrings to produce the list of corresponding sums. LZipListZipList :: [a] ->  ZipList a[]aZipListaLZipListnewtype ZipList aLists, but with an Applicative functor based on zipping, so that
f <$> ZipList xs1 <*> ... <*> ZipList xsn = ZipList (zipWithn f xs1 ... xsn)
zip7zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]}[]a[]b[]c[]d[]e[]f[]g[](,,,,,,)abcdefghThe zip7 function takes seven lists and returns a list of seven-tuples, analogous to zip. zip6zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)]E[]a[]b[]c[]d[]e[]f[](,,,,,)abcdefdThe zip6 function takes six lists and returns a list of six-tuples, analogous to zip. zip5zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]2[]a[]b[]c[]d[]e[](,,,,)abcdefThe zip5 function takes five lists and returns a list of five-tuples, analogous to zip. zip4 zip4 :: [a] -> [b] -> [c] -> [d] -> [(a, b, c, d)]^[]a[]b[]c[]d[](,,,)abcdeThe zip4 function takes four lists and returns a list of quadruples, analogous to zip. zip3 zip3 :: [a] -> [b] -> [c] ->  [(a, b, c)]j[]a[]b[]c[](,,)abcVzip3 takes three lists and returns a list of triples, analogous to zip. zipzip :: [a] -> [b] -> [(a, b)]nF[]a[]b[](,)abzip takes two lists and returns a list of corresponding pairs. If one input list is short, excess elements of the longer list are discarded. ezipzip ::  ByteString ->  ByteString -> [(Word8, Word8)]i ByteString ByteString[](,)Word8Word8O(n) zip takes two ByteStrings and returns a list of corresponding pairs of bytes. If one input ByteString is short, excess elements of the longer ByteString are discarded. This is equivalent to a pair of unpack operations. F zeroArrow zeroArrow :: ArrowZero a => a b cߤ ArrowZeroaabc@yieldyield :: IO ():/IO()The yield action allows (forces, in a co-operative multitasking implementation) a context-switch to any other currently runnable threads (if any), and is occasionally useful when implementing concurrency abstractions. yellowyellow :: String[RStringxorxor ::  Bits a => a -> a -> a¦BitsaaaaO writeSTRef writeSTRef ::  STRef s a -> a -> ST s ()F$STRefsaaSTs()'Write a new value into an STRef 6 WriteMode WriteMode :: IOModeIOMode# writeIORef writeIORef :: IORef a -> a -> IO ()-IORefaaIO()'Write a new value into an IORef 6 writeFile writeFile :: FilePath -> String -> IO ()ըFilePathStringIO()wThe computation writeFile file str function writes the string str, to the file file. e writeFile writeFile :: FilePath ->  ByteString -> IO ()թFilePath ByteStringIO()%Write a ByteString to a file. ! writeBlock writeBlock :: HStream bufType => HandleStream bufType -> bufType -> IO (Result ())ԪHStreambufType HandleStreambufTypebufTypeIOResult() writeBlock writeBlock ::  Stream x => x -> String -> IO (Result ())uFStreamxxStringIOResult()pwritablewritable ::  Permissions -> Bool۫ū PermissionsBoolL WrappedMonadnewtype  WrappedMonad m aL WrappedArrownewtype  WrappedArrow a b ccL WrapMonad WrapMonad :: m a -> WrappedMonad m aڬma WrappedMonadmaL WrapArrow WrapArrow :: a b c -> WrappedArrow a b c[4abc WrappedArrowabcwordswords :: String -> [String]String[]String[words breaks a string up into a list of words, which were delimited by white space. ' wordPtrToPtr wordPtrToPtr :: WordPtr -> Ptr amWordPtrPtra+casts a WordPtr to a Ptr 'WordPtrdata WordPtrUAn unsigned integral type that can be losslessly converted to and from Ptr. Word8data Word8c8-bit unsigned integer type Word64data Word6464-bit unsigned integer type Word32data Word3232-bit unsigned integer type Word16data Word16I16-bit unsigned integer type Worddata WordNA Word is an unsigned integral type, with the same size as Int.  withSocketsDo withSocketsDo :: IO a -> IO aH3IOaIOajOn Windows operating systems, the networking subsystem has to be initialised using withSocketsDo before any networking operations can be used. eg.
main = withSocketsDo $ do {...}
Although this is only strictly necessary on Windows platforms, it is harmless on other platforms, so for portability it is good practice to use it all the time. Y withProgName withProgName :: String -> IO a -> IO a2StringIOaIOa{withProgName name act - while executing action act, have getProgName return name. (withForeignPtrwithForeignPtr ::  ForeignPtr a -> (Ptr a -> IO b) -> IO bW% ForeignPtraPtraIObIObmThis is a way to look at the pointer living inside a foreign object. This function takes a function which is applied to that pointer. The resulting IO action is then executed. The foreign object is kept alive at least during the whole action, even if it is not used directly inside. Note that it is not safe to return the pointer from the action and use it after the action completes. All uses of the pointer should be inside the withForeignPtr bracket. The reason for this unsafeness is the same as for unsafeForeignPtrToPtr below: the finalizer may run earlier than expected, because the compiler can only track usage of the ForeignPtr object, not a Ptr object made from it. This function is normally used for marshalling data to or from the object pointed to by the ForeignPtr, using the operations from the Storable class. 6withFile withFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO rp?FilePathIOModeHandleIOrIOrwithFile name mode act opens a file using openFile and passes the resulting handle to the computation act. The handle will be closed on exit from withFile, whether by normal termination or by raising an exception. &withBrowserStatewithBrowserState :: BrowserState t -> BrowserAction t a -> BrowserAction t a> BrowserStatet BrowserActionta BrowserActionta^withBrowserAction st act performs act with BrowserState st. 6withBinaryFile withBinaryFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO rT#FilePathIOModeHandleIOrIOrwithBinaryFile name mode act opens a file using openBinaryFile and passes the resulting handle to the computation act. The handle will be closed on exit from withBinaryFile, whether by normal termination or by raising an exception. YwithArgswithArgs :: [String] -> IO a -> IO a[]StringIOaIOaswithArgs args act - while executing action act, have getArgs return args. widthwidth :: String -> HtmlAttrStringHtmlAttrwidget widget :: String -> String ->  [HtmlAttr] -> HtmlL#StringString[]HtmlAttrHtmlwhitewhite :: StringStringwhenwhen ::  Monad m => Bool -> m () -> m () MonadmBoolm()m()Conditional execution of monadic expressions. For example,
when debug (putStr "Debugging\n")
will output the string Debugging\n if the Boolean value debug is True, and otherwise do nothing. x Wednesday Wednesday :: Day3-Dayvspacevspace :: Int -> HtmlAttr{IntHtmlAttrvlinkvlink :: String -> HtmlAttrStringHtmlAttrjviewrviewr :: Seq a -> ViewR aK2SeqaViewRa2O(1). Analyse the right end of a sequence. jViewRdata ViewR a%View of the right end of a sequence. jviewlviewl :: Seq a -> ViewL a2SeqaViewLa1O(1). Analyse the left end of a sequence. jViewLdata ViewL a$View of the left end of a sequence. overticesvertices :: Graph -> [Vertex]Graph[]VertexAll vertices of a graph. oVertextype Vertex = Intn%Abstract representation of vertices. U versionTags versionTags :: Version -> [String]Version[]StringA version can be tagged with an arbitrary list of strings. The interpretation of the list of tags is entirely dependent on the entity that this version applies to. U versionBranch versionBranch :: Version -> [Int]Version[]IntOThe numeric branch for this version. This reflects the fact that most software versions are tree-structured; there is a main trunk which is tagged with versions at various points (1,2,3...), and the first branch off the trunk after version 3 is 3.1, the second branch off the trunk after version 3 is 3.2, and so on. The tree can be branched arbitrarily, just by adding more digits. We represent the branch as a list of Int, so version 3.2.1 becomes [3,2,1]. Lexicographic ordering (i.e. the default instance of Ord for [Int]) gives the natural ordering of branches. versionversion :: String -> HtmlAttrStringHtmlAttrUVersionVersion :: [Int] -> [String] -> VersionJ%[]Int[]StringVersionUVersiondata Version|A Version represents the version of a software entity. An instance of Eq is provided, which implements exact equality modulo reordering of the tags in the versionTags field. An instance of Ord is also provided, which gives lexicographic ordering on the versionBranch fields (i.e. 2.1 > 2.0, 1.2.3 > 1.2.2, etc.). This is expected to be sufficient for many uses, but note that you may need to use a more specific ordering for your versioning scheme. For example, some versioning schemes may include pre-releases which have tags "pre1", "pre2", and so on, and these would need to be taken into account when determining ordering. In some cases, date ordering may be more appropriate, so the application would have to look for date tags in the versionTags field and compare those. The bottom line is, don't always assume that compare and other Ord operations are the right thing for every Version. Similarly, concrete representations of versions may differ. One possible concrete representation is provided (see showVersion and parseVersion), but depending on the application a different concrete representation may be more appropriate. vectorvector :: Arbitrary a => Int -> Gen [a] ArbitraryaIntGen[]avariantvariant :: Int -> Gen a -> Gen aL0IntGenaGenavariablevariable :: Html -> HtmlHtmlHtmlvaluevalue :: String -> HtmlAttrStringHtmlAttrvalignvalign :: String -> HtmlAttrbMStringHtmlAttr validHtmlTags validHtmlTags :: [String][]StringvalidHtmlITagsvalidHtmlITags :: [String][]StringvalidHtmlAttrsvalidHtmlAttrs :: [String]hY[]Stringivalidvalid ::  Ord a => Set a -> BoolOrdaSetaBool:O(n). Test if the internal set structure is valid. lvalidvalid ::  Ord k => Map k a -> Bool{[OrdkMapkaBoolO(n). Test if the internal map structure is valid.
valid (fromAscList [(3,"b"), (5,"a")]) == True
valid (fromAscList [(5,"a"), (3,"b")]) == False
7 UserInterrupt UserInterrupt :: AsyncExceptionoAsyncExceptionThis exception is raised by default in the main thread of the program when the user requests to terminate the program via the usual mechanism(s) (e.g. Control-C in the console). 5 UserInterrupt UserInterrupt :: AsyncExceptionAsyncExceptionThis exception is raised by default in the main thread of the program when the user requests to terminate the program via the usual mechanism(s) (e.g. Control-C in the console). 7 userErrors userErrors ::  Exception ->  Maybe String ExceptionMaybeString&userCookieFilteruserCookieFilter :: URI -> Cookie -> IO BoolD(URICookieIOBooluserCookieFilter is a handy acceptance filter, asking the user if he/she is willing to accept an incoming cookie before adding it to the store. usemapusemap :: String -> HtmlAttr=(StringHtmlAttreuseAsCStringLenuseAsCStringLen ::  ByteString -> (CStringLen -> IO a) -> IO a ByteString CStringLenIOaIOaO(n) construction Use a ByteString with a function requiring a CStringLen. As for useAsCString this function makes a copy of the original ByteString. e useAsCString useAsCString ::  ByteString -> (CString -> IO a) -> IO aJ ByteStringCStringIOaIOaO(n) construction Use a ByteString with a function requiring a null-terminated CString. The CString will be freed automatically. This is a memcpy(3).  urlEncode urlEncode :: String -> StringdQStringStringKConverts a single value to the application/x-www-form-urlencoded encoding.  urlDecode urlDecode :: String -> StringStringStringMConverts a single value from the application/x-www-form-urlencoded encoding. URLtype URL = String uriUserInfo uriUserInfo :: URIAuth -> StringURIAuthString
anonymous@
 uriToString uriToString :: (String -> String) -> URI -> ShowSStringStringURIShowS Turn a URI into a string. Uses a supplied function to map the userinfo part of the URI. The Show instance for URI uses a mapping that hides any password that may be present in the URI. Use this function with argument id to preserve the password in the formatted output.  uriScheme uriScheme :: URI -> String URIString
foo:
 uriRegName uriRegName :: URIAuth -> StringURIAuthString
www.haskell.org
uriQueryuriQuery :: URI -> String URIString
?query
uriPorturiPort :: URIAuth -> StringlURIAuthString
:42
uriPathuriPath :: URI -> StringURIString
/ghc
 uriFragment uriFragment :: URI -> String[KURIString
#frag
& uriDefaultTo uriDefaultTo :: URI -> URI -> URIURIURIURIuriDefaultTo a b returns a URI that is consistent with the first argument URI a when read in the context of the second URI b. If the second argument is not sufficient context for determining a full URI then anarchy reins.  uriAuthority uriAuthority :: URI ->  Maybe URIAuthJ0URIMaybeURIAuth,
//anonymous@www.haskell.org:42
URIAuth URIAuth :: String -> String -> String -> URIAuth StringStringStringURIAuthURIAuthdata URIAuth<&Type for authority value within a URI URIURI :: String ->  Maybe URIAuth -> String -> String -> String -> URI+StringMaybeURIAuthStringStringStringURIURIdata URIURepresents a general universal resource identifier using its component parts. For example, for the URI
foo://anonymous@www.haskell.org:42/ghc?query#frag
the components are: UppercaseLetterUppercaseLetter :: GeneralCategoryvdGeneralCategoryLu: Letter, Uppercase l updateWithKey  updateWithKey ::  Ord k => (k -> a -> Maybe a) -> k -> Map k a -> Map k aXOrdkkaMaybeakMapkaMapkadO(log n). The expression (updateWithKey f k map) updates the value x at k (if it is in the map). If (f k x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y.
let f k x = if x == "a" then Just ((show k) ++ ":new a") else Nothing
updateWithKey f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:new a")]
updateWithKey f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
updateWithKey f 3 (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
n updateWithKey  updateWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> IntMap aGKeyaMaybeaKeyIntMapaIntMapa`O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f k x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y.
let f k x = if x == "a" then Just ((show k) ++ ":new a") else Nothing
updateWithKey f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:new a")]
updateWithKey f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
updateWithKey f 3 (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
lupdateMinWithKeyupdateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a]kaMaybeaMapkaMapka*O(log n). Update the value at the minimal key.
updateMinWithKey (\ k a -> Just ((show k) ++ ":" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3,"3:b"), (5,"a")]
updateMinWithKey (\ _ _ -> Nothing)                     (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
nupdateMinWithKeyupdateMinWithKey :: (Key -> a -> a) -> IntMap a -> IntMap a^4KeyaaIntMapaIntMapa*O(log n). Update the value at the minimal key.
updateMinWithKey (\ k a -> Just ((show k) ++ ":" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3,"3:b"), (5,"a")]
updateMinWithKey (\ _ _ -> Nothing)                     (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
l updateMin updateMin :: (a -> Maybe a) -> Map k a -> Map k a!aMaybeaMapkaMapkaO(log n). Update the value at the minimal key.
updateMin (\ a -> Just ("X" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3, "Xb"), (5, "a")]
updateMin (\ _ -> Nothing)         (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
n updateMin updateMin :: (a -> a) -> IntMap a -> IntMap aaaIntMapaIntMapaO(log n). Update the value at the minimal key.
updateMin (\ a -> Just ("X" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3, "Xb"), (5, "a")]
updateMin (\ _ -> Nothing)         (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
lupdateMaxWithKeyupdateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a^-kaMaybeaMapkaMapka*O(log n). Update the value at the maximal key.
updateMaxWithKey (\ k a -> Just ((show k) ++ ":" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3,"b"), (5,"5:a")]
updateMaxWithKey (\ _ _ -> Nothing)                     (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
nupdateMaxWithKeyupdateMaxWithKey :: (Key -> a -> a) -> IntMap a -> IntMap a.KeyaaIntMapaIntMapa*O(log n). Update the value at the maximal key.
updateMaxWithKey (\ k a -> Just ((show k) ++ ":" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3,"b"), (5,"5:a")]
updateMaxWithKey (\ _ _ -> Nothing)                     (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
l updateMax updateMax :: (a -> Maybe a) -> Map k a -> Map k aaMaybeaMapkaMapkaO(log n). Update the value at the maximal key.
updateMax (\ a -> Just ("X" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "Xa")]
updateMax (\ _ -> Nothing)         (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
n updateMax updateMax :: (a -> a) -> IntMap a -> IntMap a~YaaIntMapaIntMapaO(log n). Update the value at the maximal key.
updateMax (\ a -> Just ("X" ++ a)) (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "Xa")]
updateMax (\ _ -> Nothing)         (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
lupdateLookupWithKey updateLookupWithKey ::  Ord k => (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a)u$OrdkkaMaybeakMapka(,)MaybeaMapka0O(log n). Lookup and update. See also updateWithKey. The function returns changed value, if it is updated. Returns the original key value if the map entry is deleted.
let f k x = if x == "a" then Just ((show k) ++ ":new a") else Nothing
updateLookupWithKey f 5 (fromList [(5,"a"), (3,"b")]) == (Just "5:new a", fromList [(3, "b"), (5, "5:new a")])
updateLookupWithKey f 7 (fromList [(5,"a"), (3,"b")]) == (Nothing,  fromList [(3, "b"), (5, "a")])
updateLookupWithKey f 3 (fromList [(5,"a"), (3,"b")]) == (Just "b", singleton 5 "a")
nupdateLookupWithKey updateLookupWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> (Maybe a, IntMap a)GKeyaMaybeaKeyIntMapa(,)MaybeaIntMapaMO(min(n,W)). Lookup and update. The function returns original value, if it is updated. This is different behavior than Data.Map.updateLookupWithKey. Returns the original key value if the map entry is deleted.
let f k x = if x == "a" then Just ((show k) ++ ":new a") else Nothing
updateLookupWithKey f 5 (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "5:new a")])
updateLookupWithKey f 7 (fromList [(5,"a"), (3,"b")]) == (Nothing,  fromList [(3, "b"), (5, "a")])
updateLookupWithKey f 3 (fromList [(5,"a"), (3,"b")]) == (Just "b", singleton 5 "a")
lupdateAt updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k a\kaMaybeaIntMapkaMapkaiO(log n). Update the element at index. Calls error when an invalid index is used.
updateAt (\ _ _ -> Just "x") 0    (fromList [(5,"a"), (3,"b")]) == fromList [(3, "x"), (5, "a")]
updateAt (\ _ _ -> Just "x") 1    (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "x")]
updateAt (\ _ _ -> Just "x") 2    (fromList [(5,"a"), (3,"b")])    Error: index out of range
updateAt (\ _ _ -> Just "x") (-1) (fromList [(5,"a"), (3,"b")])    Error: index out of range
updateAt (\_ _  -> Nothing)  0    (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
updateAt (\_ _  -> Nothing)  1    (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
updateAt (\_ _  -> Nothing)  2    (fromList [(5,"a"), (3,"b")])    Error: index out of range
updateAt (\_ _  -> Nothing)  (-1) (fromList [(5,"a"), (3,"b")])    Error: index out of range
jupdate update :: Int -> a -> Seq a -> Seq a}^IntaSeqaSeqaO(log(min(i,n-i))). Replace the element at the specified position. If the position is out of range, the original sequence is returned. lupdate update ::  Ord k => (a -> Maybe a) -> k -> Map k a -> Map k aOrdkaMaybeakMapkaMapka3O(log n). The expression (update f k map) updates the value x at k (if it is in the map). If (f x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y.
let f x = if x == "a" then Just "new a" else Nothing
update f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "new a")]
update f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
update f 3 (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
nupdate update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap ajaMaybeaKeyIntMapaIntMapa6O(min(n,W)). The expression (update f k map) updates the value x at k (if it is in the map). If (f x) is Nothing, the element is deleted. If it is (Just y), the key k is bound to the new value y.
let f x = if x == "a" then Just "new a" else Nothing
update f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "new a")]
update f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
update f 3 (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
update update :: HashTable key val -> key -> val -> IO Boolv F  HashTablekeyvalkeyvalIOBoolUpdates an entry in the hash table, returning True if there was already an entry for this key, or False otherwise. After update there will always be exactly one entry for the given key in the table. insert is more efficient than update if you don't care about multiple entries, or you know for sure that multiple entries can't occur. However, update is more efficient than delete followed by insert. unzip7unzip7 :: [(a, b, c, d, e, f, g)] -> #([a], [b], [c], [d], [e], [f], [g])+  [](,,,,,,)abcdefg(,,,,,,)[]a[]b[]c[]d[]e[]f[]glThe unzip7 function takes a list of seven-tuples and returns seven lists, analogous to unzip. unzip6unzip6 :: [(a, b, c, d, e, f)] -> ([a], [b], [c], [d], [e], [f])m[](,,,,,)abcdef(,,,,,)[]a[]b[]c[]d[]e[]fhThe unzip6 function takes a list of six-tuples and returns six lists, analogous to unzip. unzip5unzip5 :: [(a, b, c, d, e)] -> ([a], [b], [c], [d], [e])<[](,,,,)abcde(,,,,)[]a[]b[]c[]d[]ejThe unzip5 function takes a list of five-tuples and returns five lists, analogous to unzip. unzip4unzip4 :: [(a, b, c, d)] -> ([a], [b], [c], [d])^[](,,,)abcd(,,,)[]a[]b[]c[]diThe unzip4 function takes a list of quadruples and returns four lists, analogous to unzip. unzip3unzip3 ::  [(a, b, c)] -> ([a], [b], [c])i[](,,)abc(,,)[]a[]b[]cgThe unzip3 function takes a list of triples and returns three lists, analogous to unzip. unzipunzip :: [(a, b)] ->  ([a], [b])Z[](,)ab(,)[]a[]biunzip transforms a list of pairs into a list of first components and a list of second components. eunzipunzip :: [(Word8, Word8)] -> (ByteString, ByteString)U[](,)Word8Word8(,) ByteString ByteStringO(n) unzip transforms a list of pairs of bytes into a pair of ByteStrings. Note that this performs two pack operations. L unwrapMonad unwrapMonad :: WrappedMonad m a -> m ay WrappedMonadmamaL unwrapArrow unwrapArrow :: WrappedArrow a b c -> a b c WrappedArrowabcabcunwordsunwords :: [String] -> Stringl[]StringString_unwords is an inverse operation to words. It joins words with separating spaces. (unsafeForeignPtrToPtrunsafeForeignPtrToPtr ::  ForeignPtr a -> Ptr anP ForeignPtraPtraThis function extracts the pointer component of a foreign pointer. This is a potentially dangerous operations, as if the argument to unsafeForeignPtrToPtr is the last usage occurrence of the given foreign pointer, then its finalizer(s) will be run, which potentially invalidates the plain pointer just obtained. Hence, touchForeignPtr must be used wherever it has to be guaranteed that the pointer lives on - i.e., has another usage occurrence. To avoid subtle coding errors, hand written marshalling code should preferably use Foreign.ForeignPtr.withForeignPtr rather than combinations of unsafeForeignPtrToPtr and touchForeignPtr. However, the later routines are occasionally preferred in tool generated marshalling code.   unsafeCoerce unsafeCoerce :: a -> bab unreserved unreserved :: Char -> BoolCharBool unpackFamily unpackFamily :: CInt -> FamilysbCIntFamilyeunpackunpack ::  ByteString -> [Word8] ByteString[]Word89O(n) Converts a ByteString to a '[Word8]'.  unordList unordList ::  HTML a => [a] -> HtmljHTMLa[]aHtmlunlinesunlines :: [String] -> String[]StringStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each. unlessunless ::  Monad m => Bool -> m () -> m ()MonadmBoolm()m()The reverse of when. SUniquedata Unique7An abstract unique object. Objects of type Unique may be compared for equality and ordering and hashed into Int. l unionWithKey  unionWithKey ::  Ord k => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k aGOrdkkaaaMapkaMapkaMapkaO(n+m). Union with a combining function. The implementation uses the efficient hedge-union algorithm. Hedge-union is more efficient on (bigset `union` smallset).
let f key left_value right_value = (show key) ++ ":" ++ left_value ++ "|" ++ right_value
unionWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "5:a|A"), (7, "C")]
n unionWithKey  unionWithKey :: (Key -> a -> a -> a) -> IntMap a -> IntMap a -> IntMap a  KeyaaaIntMapaIntMapaIntMapaO(n+m). The union with a combining function.
let f key left_value right_value = (show key) ++ ":" ++ left_value ++ "|" ++ right_value
unionWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "5:a|A"), (7, "C")]
l unionWith  unionWith ::  Ord k =>  (a -> a -> a) -> Map k a -> Map k a -> Map k a""OrdkaaaMapkaMapkaMapkaO(n+m). Union with a combining function. The implementation uses the efficient hedge-union algorithm.
unionWith (++) (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "aA"), (7, "C")]
n unionWith  unionWith ::  (a -> a -> a) -> IntMap a -> IntMap a -> IntMap a|$G$aaaIntMapaIntMapaIntMapaO(n+m). The union with a combining function.
unionWith (++) (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "aA"), (7, "C")]
l unionsWith unionsWith ::  Ord k =>  (a -> a -> a) ->  [Map k a] -> Map k a%%Ordkaaa[]MapkaMapkaDThe union of a list of maps, with a combining operation: (unionsWith f == Prelude.foldl (unionWith f) empty).
unionsWith (++) [(fromList [(5, "a"), (3, "b")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "A3"), (3, "B3")])]
    == fromList [(3, "bB3"), (5, "aAA3"), (7, "C")]
n unionsWith unionsWith ::  (a -> a -> a) ->  [IntMap a] -> IntMap a''aaa[]IntMapaIntMapaThe union of a list of maps, with a combining operation.
unionsWith (++) [(fromList [(5, "a"), (3, "b")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "A3"), (3, "B3")])]
    == fromList [(3, "bB3"), (5, "aAA3"), (7, "C")]
iunionsunions ::  Ord a => [Set a] -> Set a4) )Orda[]SetaSetaaThe union of a list of sets: (unions == foldl union empty). lunionsunions ::  Ord k =>  [Map k a] -> Map k a*)Ordk[]MapkaMapkaThe union of a list of maps: (unions == Prelude.foldl union empty).
unions [(fromList [(5, "a"), (3, "b")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "A3"), (3, "B3")])]
    == fromList [(3, "b"), (5, "a"), (7, "C")]
unions [(fromList [(5, "A3"), (3, "B3")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "a"), (3, "b")])]
    == fromList [(3, "B3"), (5, "A3"), (7, "C")]
munionsunions :: [IntSet] -> IntSet&, ,[]IntSetIntSetThe union of a list of sets. nunionsunions ::  [IntMap a] -> IntMap a,,[]IntMapaIntMapaeThe union of a list of maps.
unions [(fromList [(5, "a"), (3, "b")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "A3"), (3, "B3")])]
    == fromList [(3, "b"), (5, "a"), (7, "C")]
unions [(fromList [(5, "A3"), (3, "B3")]), (fromList [(5, "A"), (7, "C")]), (fromList [(5, "a"), (3, "b")])]
    == fromList [(3, "B3"), (5, "A3"), (7, "C")]
unionBy unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]..aaBool[]a[]a[]aKThe unionBy function is the non-overloaded version of union. iunionunion ::  Ord a => Set a -> Set a -> Set a/`/OrdaSetaSetaSetaO(n+m). The union of two sets, preferring the first set when equal elements are encountered. The implementation uses the efficient hedge-union algorithm. Hedge-union is more efficient on (bigset union smallset). lunionunion ::  Ord k => Map k a -> Map k a -> Map k a 10OrdkMapkaMapkaMapkaO(n+m). The expression (union t1 t2) takes the left-biased union of t1 and t2. It prefers t1 when duplicate keys are encountered, i.e. (union == unionWith const). The implementation uses the efficient hedge-union algorithm. Hedge-union is more efficient on (bigset `union` smallset).
union (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "a"), (7, "C")]
unionunion :: Eq a => [a] -> [a] -> [a]3^3Eqa[]a[]a[]avThe union function returns the list union of the two lists. For example,
"dog" `union` "cow" == "dogcw"
Duplicates, and elements of the first list, are removed from the the second list, but if the first list contains duplicates, so will the result. It is a special case of unionBy, which allows the programmer to supply their own equality test. munionunion :: IntSet -> IntSet -> IntSeto5T5IntSetIntSetIntSet&O(n+m). The union of two sets. nunionunion :: IntMap a -> IntMap a -> IntMap a65IntMapaIntMapaIntMapa0O(n+m). The (left-biased) union of two maps. It prefers the first map when duplicate keys are encountered, i.e. (union == unionWith const).
union (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == fromList [(3, "b"), (5, "a"), (7, "C")]
kunfoldTreeM_BFunfoldTreeM_BF ::  Monad m => (b -> m (a, [b])) -> b ->  m (Tree a) 87Monadmbm(,)a[]bbmTreeaMonadic tree builder, in breadth-first order, using an algorithm adapted from Breadth-First Numbering: Lessons from a Small Exercise in Algorithm Design, by Chris Okasaki, ICFP'00. k unfoldTreeM unfoldTreeM ::  Monad m => (b -> m (a, [b])) -> b ->  m (Tree a)9J9Monadmbm(,)a[]bbmTreea+Monadic tree builder, in depth-first order k unfoldTree unfoldTree :: (b -> (a, [b])) -> b -> Tree aD::b(,)a[]bbTreeaBuild a tree from a seed value eunfoldrN unfoldrN :: Int -> (a -> Maybe (Word8, a)) -> a -> (ByteString, Maybe a)5;:IntaMaybe(,)Word8aa(,) ByteStringMaybeaO(n) Like unfoldr, unfoldrN builds a ByteString from a seed value. However, the length of the result is limited by the first argument to unfoldrN. This function is more efficient than unfoldr when the maximum length of the result is known. The following equation relates unfoldrN and unfoldr:
snd (unfoldrN n f s) == take n (unfoldr f s)
unfoldrunfoldr :: (b -> Maybe (a, b)) -> b -> [a]S=)=bMaybe(,)abb[]a#The unfoldr function is a `dual' to foldr: while foldr reduces a list to a summary value, unfoldr builds a list from a seed value. The function takes the element and returns Nothing if it is done producing the list or returns Just (a,b), in which case, a is a prepended to the list and b is used as the next element in a recursive call. For example,
iterate f == unfoldr (\x -> Just (x, f x))
In some cases, unfoldr can undo a foldr operation:
unfoldr f' (foldr f z xs) == xs
if the following holds:
f' (f x y) = Just (x,y)
f' z       = Nothing
A simple use of unfoldr:
unfoldr (\b -> if b == 0 then Nothing else Just (b, b-1)) 10
 [10,9,8,7,6,5,4,3,2,1]
eunfoldrunfoldr :: (a -> Maybe (Word8, a)) -> a ->  ByteStringA@aMaybe(,)Word8aa ByteString%O(n), where n is the length of the result. The unfoldr function is analogous to the List 'unfoldr'. unfoldr builds a ByteString from a seed value. The function takes the element and returns Nothing if it is done producing the ByteString or returns Just (a,b), in which case, a is the next byte in the string, and b is the seed value for further production. Examples:
   unfoldr (\x -> if x <= 5 then Just (x, x + 1) else Nothing) 0
== pack [0, 1, 2, 3, 4, 5]
kunfoldForestM_BFunfoldForestM_BF ::  Monad m => (b -> m (a, [b])) -> [b] ->  m (Forest a)DCMonadmbm(,)a[]b[]bmForestaMonadic forest builder, in breadth-first order, using an algorithm adapted from Breadth-First Numbering: Lessons from a Small Exercise in Algorithm Design, by Chris Okasaki, ICFP'00. k unfoldForestM unfoldForestM ::  Monad m => (b -> m (a, [b])) -> [b] ->  m (Forest a)EOEMonadmbm(,)a[]b[]bmForesta-Monadic forest builder, in depth-first order k unfoldForest unfoldForest :: (b -> (a, [b])) -> [b] -> Forest acF2Fb(,)a[]b[]bForesta*Build a forest from a list of seed values unEscapeStringunEscapeString :: String -> StringFFStringStringVTurns all instances of escaped characters in the string back into literal characters.  underline underline :: Html -> HtmlGGHtmlHtml7 Underflow Underflow :: ArithExceptionGGArithException5 Underflow Underflow :: ArithExceptionUHDHArithException7UndefinedElementUndefinedElement :: String -> ArrayExceptionHHStringArrayExceptionVAn attempt was made to evaluate an element of an array that had not been initialized. 5UndefinedElementUndefinedElement :: String -> ArrayExceptionIIStringArrayExceptionVAn attempt was made to evaluate an element of an array that had not been initialized.  uncurryuncurry ::  (a -> b -> c) -> (a, b) -> c~J`Jabc(,)abcCuncurry converts a curried function to a function on pairs. eunconsuncons ::  ByteString -> Maybe (Word8, ByteString)SK!K ByteStringMaybe(,)Word8 ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty. 7unblockunblock :: IO a -> IO aLKIOaIOaTo re-enable asynchronous exceptions inside the scope of block, unblock can be used. It scopes in exactly the same way, so on exit from unblock asynchronous exception delivery will be disabled again. 5unblockunblock :: IO a -> IO aAM,MIOaIOaTo re-enable asynchronous exceptions inside the scope of block, unblock can be used. It scopes in exactly the same way, so on exit from unblock asynchronous exception delivery will be disabled again. ulistulist :: Html -> HtmlpNaNHtmlHtml typeRepTyCon typeRepTyCon :: TypeRep -> TyConNNTypeRepTyCon6Observe the type constructor of a type representation  typeRepKey typeRepKey :: TypeRep -> IO IntwO`OTypeRepIOIntReturns a unique integer associated with a TypeRep. This can be used for making a mapping with TypeReps as the keys, for example. It is guaranteed that t1 == t2 if and only if typeRepKey t1 == typeRepKey t2. It is in the IO monad because the actual value of the key may vary from run to run of the program. You should only rely on the equality property, not any actual key value. The relative ordering of keys has no meaning either.  typeRepArgs typeRepArgs :: TypeRep ->  [TypeRep]QQTypeRep[]TypeRep4Observe the argument types of a type representation TypeRepdata TypeRep!RjA concrete representation of a (monomorphic) type. TypeRep supports reasonably efficient equality.  typeOfDefault typeOfDefault :: (Typeable1 t, Typeable a) => t a -> TypeRep0SR Typeable1tTypeableataTypeRepLFor defining a Typeable instance from any Typeable1 instance. typeOf7typeOf7 :: Typeable7 t => t a b c d e f g -> TypeRepTS Typeable7ttabcdefgTypeReptypeOf6DefaulttypeOf6Default :: (Typeable7 t, Typeable a) => t a b c d e f g -> TypeRepTT Typeable7tTypeableatabcdefgTypeRepMFor defining a Typeable6 instance from any Typeable7 instance. typeOf6typeOf6 :: Typeable6 t =>  t a b c d e f -> TypeRepUU Typeable6ttabcdefTypeReptypeOf5DefaulttypeOf5Default :: (Typeable6 t, Typeable a) =>  t a b c d e f -> TypeRep}V;V Typeable6tTypeableatabcdefTypeRepMFor defining a Typeable5 instance from any Typeable6 instance. typeOf5typeOf5 :: Typeable5 t =>  t a b c d e -> TypeRepZW*W Typeable5ttabcdeTypeReptypeOf4DefaulttypeOf4Default :: (Typeable5 t, Typeable a) =>  t a b c d e -> TypeRepXW Typeable5tTypeableatabcdeTypeRepMFor defining a Typeable4 instance from any Typeable5 instance. typeOf4typeOf4 :: Typeable4 t =>  t a b c d -> TypeRepXX Typeable4ttabcdTypeReptypeOf3DefaulttypeOf3Default :: (Typeable4 t, Typeable a) =>  t a b c d -> TypeRepYgY Typeable4tTypeableatabcdTypeRepMFor defining a Typeable3 instance from any Typeable4 instance. typeOf3typeOf3 :: Typeable3 t => t a b c -> TypeRepvZLZ Typeable3ttabcTypeReptypeOf2DefaulttypeOf2Default :: (Typeable3 t, Typeable a) => t a b c -> TypeRep'[Z Typeable3tTypeableatabcTypeRepMFor defining a Typeable2 instance from any Typeable3 instance. typeOf2typeOf2 :: Typeable2 t => t a b -> TypeRep[[ Typeable2ttabTypeReptypeOf1DefaulttypeOf1Default :: (Typeable2 t, Typeable a) => t a b -> TypeRep\k\ Typeable2tTypeableatabTypeRepMFor defining a Typeable1 instance from any Typeable2 instance. typeOf1typeOf1 :: Typeable1 t => t a -> TypeRepj]F] Typeable1ttaTypeReptypeOftypeOf :: Typeable a => a -> TypeRep]]TypeableaaTypeRep Typeable7class  Typeable7 t^$Variant for 7-ary type constructors  Typeable6class  Typeable6 tq^$Variant for 6-ary type constructors  Typeable5class  Typeable5 t^$Variant for 5-ary type constructors  Typeable4class  Typeable4 t+_$Variant for 4-ary type constructors  Typeable3class  Typeable3 t_$Variant for 3-ary type constructors  Typeable2class  Typeable2 t_%Variant for binary type constructors  Typeable1class  Typeable1 tC`$Variant for unary type constructors Typeableclass Typeable a`WThe class Typeable allows a concrete representation of a type to be calculated. TypeType ::  SocketOption=a.a SocketOption9 tyconUQname tyconUQname :: String -> StringaaStringStringAGets the unqualified type constructor: drop *.*.*... before name  tyConString tyConString :: TyCon -> StringHb6bTyConString1Observe string encoding of a type representation 9 tyconModule tyconModule :: String -> StringbbStringStringAGets the module of a type constructor: take *.*.*... before name TyCondata TyConNcjAn abstract representation of a type constructor. TyCon objects can be built using mkTyCon. twotwo ::  Monad m => m a -> m (a, a).ddMonadmmam(,)aaxTuesdayTuesday :: DayjdddDaytttt :: Html -> HtmlddHtmlHtml7tryJusttryJust :: (Exception -> Maybe b) -> IO a -> IO (Either b a)ee*e ExceptionMaybebIOaIOEitherbaA variant of try that takes an exception predicate to select which exceptions are caught (c.f. catchJust). If the exception does not match the predicate, it is re-thrown. 5tryJusttryJust :: Exception e => (e -> Maybe b) -> IO a -> IO (Either b a)ff ExceptioneeMaybebIOaIOEitherbaA variant of try that takes an exception predicate to select which exceptions are caught (c.f. catchJust). If the exception does not match the predicate, it is re-thrown.  tryCGItryCGI :: CGI a -> CGI (Either Exception a)hgCGIaCGIEither ExceptionaCatches any exception thrown by an CGI action, and returns either the exception, or if no exception was raised, the result of the action. 7trytry :: IO a -> IO (Either Exception a)!ihIOaIOEither ExceptionaSimilar to catch, but returns an Either result which is (Right a) if no exception was raised, or (Left e) if an exception was raised and its value is e.
try a = catch (Right `liftM` a) (return . Left)
Note: as with catch, it is only polite to use this variant if you intend to re-throw the exception after performing whatever cleanup is needed. Otherwise, tryJust is generally considered to be better. Also note that System.IO.Error also exports a function called System.IO.Error.try with a similar type to try, except that it catches only the IO and user families of exceptions (as required by the Haskell 98 IO module). 5trytry :: Exception e => IO a -> IO (Either e a)lTl ExceptioneIOaIOEithereaSimilar to catch, but returns an Either result which is (Right a) if no exception was raised, or (Left e) if an exception was raised and its value is e.
try a = catch (Right `liftM` a) (return . Left)
Note: as with catch, it is only polite to use this variant if you intend to re-throw the exception after performing whatever cleanup is needed. Otherwise, tryJust is generally considered to be better. Also note that System.IO.Error also exports a function called System.IO.Error.try with a similar type to Control.Exception.try, except that it catches only the IO and user families of exceptions (as required by the Haskell 98 IO module). trivialtrivial :: Testable a => Bool -> a -> PropertyooTestableaBoolaPropertytreeHtmltreeHtml :: [String] -> HtmlTree -> HtmlxpWp[]StringHtmlTreeHtmlkTreedata Tree ap2Multi-way trees, also known as rose trees. M traverse_ traverse_ :: (Foldable t, Applicative f) =>  (a -> f b) -> t a -> f ()qWqFoldablet Applicativefafbtaf()qMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results. Rtraversetraverse :: "(Traversable t, Applicative f) =>  (a -> f b) -> t a -> f (t b)rr Traversablet ApplicativefafbtaftbR Traversableclass (Functor t, Foldable t) =>  Traversable t.sFunctors representing data structures that can be traversed from left to right. Minimal complete definition: traverse or sequenceA. Instances are similar to Functor, e.g. given a data type
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
a suitable instance would be
instance Traversable Tree
   traverse f Empty = pure Empty
   traverse f (Leaf x) = Leaf <$> f x
   traverse f (Node l k r) = Node <$> traverse f l <*> f k <*> traverse f r
This is suitable even for abstract types, as the laws for <*> imply a form of associativity. The superclass instances should satisfy the following:
  • In the Functor instance, fmap should be equivalent to traversal with the identity applicative functor (fmapDefault).
  • In the Foldable instance, Data.Foldable.foldMap should be equivalent to traversal with a constant applicative functor (foldMapDefault).
o transposeG transposeG :: Graph -> GraphzwiwGraphGraph+The graph obtained by reversing all edges.  transpose transpose :: [[a]] -> [[a]]xw[][]a[][]aThe transpose function transposes the rows and columns of its argument. For example,
transpose [[1,2,3],[4,5,6]] == [[1,4],[2,5],[3,6]]
e transpose transpose ::  [ByteString] ->  [ByteString]2y y[] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument. V traceShow traceShow ::  Show a => a -> b -> bzyShowaabbLike trace, but uses show on the argument to convert it to a String.
traceShow = trace . show
Vtracetrace :: String -> a -> azzStringaaWhen called, trace outputs the string in its first argument, before returning the second argument as its result. The trace function is not referentially transparent, and should only be used for debugging, or for monitoring execution. Some implementations of trace may decorate the string that's output to indicate that you're tracing. The function is implemented on top of putTraceMsg. trtr :: Html -> Html||HtmlHtmlx toUTCTime toUTCTime ::  ClockTime ->  CalendarTimeE})} ClockTime CalendarTimeSconverts an internal clock time into a CalendarTime in standard UTC format. toUppertoUpper :: Char -> Char}}CharCharlConvert a letter to the corresponding upper-case letter, if any. Any other character is returned unchanged. (touchForeignPtrtouchForeignPtr ::  ForeignPtr a -> IO ()~~ ForeignPtraIO()This function ensures that the foreign object in question is alive at the given place in the sequence of IO actions. In particular Foreign.ForeignPtr.withForeignPtr does a touchForeignPtr after it executes the user action. Note that this function should not be used to express dependencies between finalizers on ForeignPtrs. For example, if the finalizer for a ForeignPtr F1 calls touchForeignPtr on a second ForeignPtr F2, 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, and in that case the scheduler might end up running the finalizer for F2 first. 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 using MVars between the finalizers, but even then the runtime sometimes runs multiple finalizers sequentially in a single thread (for performance reasons), so synchronisation between finalizers could result in artificial deadlock. Another alternative is to use explicit reference counting. toTitletoTitle :: Char -> Char#CharCharConvert a letter to the corresponding title-case or upper-case letter, if any. (Title case differs from upper case only for a small number of ligature letters.) Any other character is returned unchanged. otopSorttopSort :: Graph -> [Vertex]S;Graph[]VertexA topological sort of the graph. The order is partially specified by the condition that a vertex i precedes j whenever j is reachable from i but not vice versa. toLowertoLower :: Char -> CharfWCharCharlConvert a letter to the corresponding lower-case letter, if any. Any other character is returned unchanged. itoListtoList :: Set a -> [a]-Seta[]a4O(n). Convert the set to a list of elements. ltoListtoList :: Map k a -> [(k, a)]ЇMapka[](,)kaO(n). Convert to a list of key/value pairs.
toList (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]
toList empty == []
mtoListtoList :: IntSet -> [Int]IntSet[]Int4O(n). Convert the set to a list of elements. ntoListtoList :: IntMap a ->  [(Key, a)]e@IntMapa[](,)KeyaO(n). Convert the map to a list of key/value pairs.
toList (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]
toList empty == []
toListtoList :: HashTable key val -> IO [(key, val)]Y HashTablekeyvalIO[](,)keyval4Converts a hash table to a list of key/value pairs. MtoListtoList :: Foldable t => t a -> [a]8Foldabletta[]a!List of elements of a structure. toHtmlFromListtoHtmlFromList ::  HTML a => [a] -> HtmlԋHTMLa[]aHtmltoHtmltoHtml ::  HTML a => a -> Html7 HTMLaaHtml5 toException toException :: Exception e => e ->  SomeException Exceptionee SomeException$toDyntoDyn :: Typeable a => a -> Dynamic/TypeableaaDynamicoConverts an arbitrary value into an object of type Dynamic. The type of the object must be an instance of Typeable, which ensures that only monomorphically-typed objects may be converted to Dynamic. To convert a polymorphic object into Dynamic, give it a monomorphic type signature. For example:
toDyn (id :: Int -> Int)
xTODTOD :: Integer -> Integer ->  ClockTimeIntegerInteger ClockTimeConstruct a clock time. The arguments are a number of seconds since 00:00:00 (UTC) on 1 January 1970, and an additional number of picoseconds. In Haskell 98, the ClockTime type is abstract. 9toConstrtoConstr ::  Data a => a -> ConstrI0DataaaConstrx toClockTime toClockTime ::  CalendarTime ->  ClockTime CalendarTime ClockTimeconverts a CalendarTime into the corresponding internal ClockTime, ignoring the contents of the ctWDay, ctYDay, ctTZName and ctIsDST fields. xtoCalendarTimetoCalendarTime ::  ClockTime -> IO CalendarTimeݑ ClockTimeIO CalendarTimeconverts an internal clock time to a local time, modified by the timezone and daylight savings time settings in force at the time of conversion. Because of this dependence on the local environment, toCalendarTime is in the IO monad. i toAscList toAscList :: Set a -> [a]WASeta[]a?O(n). Convert the set to an ascending list of elements. l toAscList toAscList :: Map k a -> [(k, a)] Mapka[](,)kawO(n). Convert to an ascending list.
toAscList (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]
m toAscList toAscList :: IntSet -> [Int]ДIntSet[]Int?O(n). Convert the set to an ascending list of elements. n toAscList toAscList :: IntMap a ->  [(Key, a)]zIntMapa[](,)KeyaO(n). Convert the map to a list of key/value pairs where the keys are in ascending order.
toAscList (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]
TitlecaseLetterTitlecaseLetter :: GeneralCategoryGeneralCategoryLt: Letter, Titlecase titletitle :: String -> HtmlAttr$StringHtmlAttr TimeToLive TimeToLive ::  SocketOptionxi SocketOptionTtimeouttimeout :: Int -> IO a ->  IO (Maybe a)֗IntIOaIOMaybea^Wrap an IO computation to time out and return Nothing in case no result is available within n microseconds (1/10^6 seconds). In case a result is available before the timeout expires, Just a is returned. A negative timeout interval means "wait indefinitely". When specifying long timeouts, be careful not to exceed maxBound :: Int. The design of this combinator was guided by the objective that timeout n f should behave exactly the same as f as long as f doesn't time out. This means that f has the same myThreadId it would have without the timeout wrapper. Any exceptions f might throw cancel the timeout and propagate further up. It also possible for f to receive exceptions thrown to it by another thread. A tricky implementation detail is the question of how to abort an IO computation. This combinator relies on asynchronous exceptions internally. The technique works very well for computations executing inside of the Haskell runtime system, but it doesn't work at all for non-Haskell code. Foreign function calls, for example, cannot be timed out with this combinator simply because an arbitrary C function cannot receive asynchronous exceptions. When timeout is used to wrap an FFI call that blocks, no timeout event can be delivered until the FFI call returns, which pretty much negates the purpose of the combinator. In practice, however, this limitation is less severe than it may sound. Standard I/O functions like System.IO.hGetBuf, System.IO.hPutBuf, Network.Socket.accept, or System.IO.hWaitForInput appear to be blocking, but they really don't because the runtime system uses scheduling mechanisms like select(2) to perform asynchronous I/O, so it is possible to interrupt standard socket I/O or file I/O using this combinator. xtimeDiffToStringtimeDiffToString :: TimeDiff -> String˟TimeDiffString2formats time differences using local conventions. xTimeDiffTimeDiff :: Int -> Int -> Int -> Int -> Int -> Int -> Integer -> TimeDiff۠IntIntIntIntIntIntIntegerTimeDiffxTimeDiffdata TimeDiffGrecords the difference between two clock times in a user-readable way. xThursdayThursday :: DayDay7throwTothrowTo :: Exception e => ThreadId -> e -> IO ()& ExceptioneThreadIdeIO()7throwTo raises an arbitrary exception in the target thread (GHC only). throwTo does not return until the exception has been raised in the target thread. The calling thread can thus be certain that the target thread has received the exception. This is a useful property to know when dealing with race conditions: eg. if there are two threads that can kill each other, it is guaranteed that only one of the threads will get to kill the other. If the target thread is currently making a foreign call, then the exception will not be raised (and hence throwTo will not return) until the call has completed. This is the case regardless of whether the call is inside a block or not. Important note: the behaviour of throwTo differs from that described in the paper "Asynchronous exceptions in Haskell" (http://research.microsoft.com/~simonpj/Papers/asynch-exns.htm). In the paper, throwTo is non-blocking; but the library implementation adopts a more synchronous design in which throwTo does not return until the exception is received by the target thread. The trade-off is discussed in Section 8 of the paper. Like any blocking operation, throwTo is therefore interruptible (see Section 4.3 of the paper). There is currently no guarantee that the exception delivered by throwTo will be delivered at the first possible opportunity. In particular, if a thread may unblock and then re-block exceptions (using unblock and block) without receiving a pending throwTo. This is arguably undesirable behaviour. 5throwTothrowTo :: Exception e => ThreadId -> e -> IO ()Ũ ExceptioneThreadIdeIO()7throwTo raises an arbitrary exception in the target thread (GHC only). throwTo does not return until the exception has been raised in the target thread. The calling thread can thus be certain that the target thread has received the exception. This is a useful property to know when dealing with race conditions: eg. if there are two threads that can kill each other, it is guaranteed that only one of the threads will get to kill the other. If the target thread is currently making a foreign call, then the exception will not be raised (and hence throwTo will not return) until the call has completed. This is the case regardless of whether the call is inside a block or not. Important note: the behaviour of throwTo differs from that described in the paper "Asynchronous exceptions in Haskell" (http://research.microsoft.com/~simonpj/Papers/asynch-exns.htm). In the paper, throwTo is non-blocking; but the library implementation adopts a more synchronous design in which throwTo does not return until the exception is received by the target thread. The trade-off is discussed in Section 8 of the paper. Like any blocking operation, throwTo is therefore interruptible (see Section 4.3 of the paper). There is currently no guarantee that the exception delivered by throwTo will be delivered at the first possible opportunity. In particular, if a thread may unblock and then re-block exceptions (using unblock and block) without receiving a pending throwTo. This is arguably undesirable behaviour. @throwTothrowTo :: Exception e => ThreadId -> e -> IO () ExceptioneThreadIdeIO()7throwTo raises an arbitrary exception in the target thread (GHC only). throwTo does not return until the exception has been raised in the target thread. The calling thread can thus be certain that the target thread has received the exception. This is a useful property to know when dealing with race conditions: eg. if there are two threads that can kill each other, it is guaranteed that only one of the threads will get to kill the other. If the target thread is currently making a foreign call, then the exception will not be raised (and hence throwTo will not return) until the call has completed. This is the case regardless of whether the call is inside a block or not. Important note: the behaviour of throwTo differs from that described in the paper "Asynchronous exceptions in Haskell" (http://research.microsoft.com/~simonpj/Papers/asynch-exns.htm). In the paper, throwTo is non-blocking; but the library implementation adopts a more synchronous design in which throwTo does not return until the exception is received by the target thread. The trade-off is discussed in Section 8 of the paper. Like any blocking operation, throwTo is therefore interruptible (see Section 4.3 of the paper). There is currently no guarantee that the exception delivered by throwTo will be delivered at the first possible opportunity. In particular, if a thread may unblock and then re-block exceptions (using unblock and block) without receiving a pending throwTo. This is arguably undesirable behaviour. throwSocketErrorIfMinus1_throwSocketErrorIfMinus1_ ::  Num a => String -> IO a -> IO ()vNumaStringIOaIO()Throw an IOError corresponding to the current socket error if the IO action returns a result of -1. Discards the result of the IO action after error handling. 7throwIOthrowIO :: Exception e => e -> IO a ExceptioneeIOaA variant of throw that can be used within the IO monad. Although throwIO has a type that is an instance of the type of throw, the two functions are subtly different:
throw e   `seq` x  ===> throw e
throwIO e `seq` x  ===> x
The first example will cause the exception e to be raised, whereas the second one won't. In fact, throwIO will only cause an exception to be raised when it is used within the IO monad. The throwIO variant should be used in preference to throw to raise an exception within the IO monad because it guarantees ordering with respect to other IO operations, whereas throw does not. 5throwIOthrowIO :: Exception e => e -> IO aغ ExceptioneeIOaA variant of throw that can be used within the IO monad. Although throwIO has a type that is an instance of the type of throw, the two functions are subtly different:
throw e   `seq` x  ===> throw e
throwIO e `seq` x  ===> x
The first example will cause the exception e to be raised, whereas the second one won't. In fact, throwIO will only cause an exception to be raised when it is used within the IO monad. The throwIO variant should be used in preference to throw to raise an exception within the IO monad because it guarantees ordering with respect to other IO operations, whereas throw does not. 7 throwDynTo throwDynTo :: Typeable exception => ThreadId ->  exception -> IO ()s:Typeable exceptionThreadId exceptionIO()wA variant of throwDyn that throws the dynamic exception to an arbitrary thread (GHC only: c.f. throwTo). 7throwDynthrowDyn :: Typeable exception =>  exception -> bsKTypeable exception exceptionbNRaise any value as an exception, provided it is in the Typeable class.  throwCGIthrowCGI :: (MonadCGI m, MonadIO m) =>  Exception -> m a\)MonadCGImMonadIOm ExceptionmaThrow an exception in a CGI monad. The monad is required to be a MonadIO, so that we can use throwIO to guarantee ordering. 7throwthrow :: Exception e => e -> aK2 ExceptioneeavThrow an exception. Exceptions may be thrown from purely functional code, but may only be caught within the IO monad. 5throwthrow :: Exception e => e -> a&  ExceptioneeavThrow an exception. Exceptions may be thrown from purely functional code, but may only be caught within the IO monad. threethree ::  Monad m => m a ->  m (a, a, a)Monadmmam(,,)aaa@threadWaitWritethreadWaitWrite :: Fd -> IO ()sFdIO()\Block the current thread until data can be written to the given file descriptor (GHC only). @threadWaitReadthreadWaitRead :: Fd -> IO ()E4FdIO()bBlock the current thread until data is available to read on the given file descriptor (GHC only). 7 ThreadKilled ThreadKilled :: AsyncExceptionAsyncExceptionThis exception is raised by another thread calling Control.Concurrent.killThread, or by the system if it needs to terminate the thread for some reason. 5 ThreadKilled ThreadKilled :: AsyncExceptionAsyncExceptionThis exception is raised by another thread calling Control.Concurrent.killThread, or by the system if it needs to terminate the thread for some reason. @ThreadIddata ThreadId?A ThreadId is an abstract type representing a handle to a thread. ThreadId is an instance of Eq, Ord and Show, where the Ord instance implements an arbitrary total ordering over ThreadIds. The Show instance lets you convert an arbitrary-valued ThreadId to string form; showing a ThreadId value is occasionally useful when debugging or diagnosing the behaviour of a concurrent program. Note: in GHC, if you have a ThreadId, you essentially have a pointer to the thread itself. This means the thread itself can't be garbage collected until you drop the ThreadId. This misfeature will hopefully be corrected at a later date. Note: Hugs does not provide any operations on other threads; it defines ThreadId as a synonym for (). @ threadDelay threadDelay :: Int -> IO ()cQIntIO()Suspends the current thread for a given number of microseconds (GHC only). There is no guarantee that the thread will be rescheduled promptly when the delay has expired, but the thread will never continue to run earlier than specified. thetypethetype :: String -> HtmlAttrStringHtmlAttrthetitlethetitle :: Html -> HtmlHtmlHtmlthestylethestyle :: String -> HtmlAttru`StringHtmlAttrthespanthespan :: Html -> HtmlHtmlHtmlthemapthemap :: Html -> HtmlHtmlHtmlthelinkthelink :: Html -> HtmlufHtmlHtmlthehtmlthehtml :: Html -> HtmlHtmlHtmlthedivthediv :: Html -> HtmlHtmlHtmlthecodethecode :: Html -> HtmlufHtmlHtmltheclasstheclass :: String -> HtmlAttrStringHtmlAttrthebasethebase :: HtmlHtmlthth :: Html -> HtmlcTHtmlHtml textfield textfield :: String -> HtmlStringHtmltextareatextarea :: Html -> Html HtmlHtmltexttext :: String -> HtmlAttru`StringHtmlAttrtestBittestBit ::  Bits a => a -> Int -> BoolBitsaaIntBoolTestableclass Testable a%tealteal :: StringaXStringxtdYeartdYear :: TimeDiff -> IntTimeDiffIntxtdSectdSec :: TimeDiff -> IntTimeDiffIntx tdPicosec tdPicosec :: TimeDiff -> Integer{eTimeDiffIntegerxtdMonthtdMonth :: TimeDiff -> IntTimeDiffIntxtdMintdMin :: TimeDiff -> Int/TimeDiffIntxtdHourtdHour :: TimeDiff -> IntwTimeDiffIntxtdDaytdDay :: TimeDiff -> IntTimeDiffInttdtd :: Html -> Html-HtmlHtmltargettarget :: String -> HtmlAttrxStringHtmlAttr takeWhile takeWhile ::  (a -> Bool) -> [a] -> [a] aBool[]a[]a/takeWhile, applied to a predicate p and a list xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p:
takeWhile (< 3) [1,2,3,4,1,2,3,4] == [1,2]
takeWhile (< 9) [1,2,3] == [1,2,3]
takeWhile (< 0) [1,2,3] == []
e takeWhile takeWhile :: (Word8 -> Bool) ->  ByteString ->  ByteStringWord8Bool ByteString ByteStringtakeWhile, applied to a predicate p and a ByteString xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p. jtaketake :: Int -> Seq a -> Seq aIntSeqaSeqaO(log(min(i,n-i))). The first i elements of a sequence. If i is negative, take i s yields the empty sequence. If the sequence contains fewer than i elements, the whole sequence is returned. taketake :: Int -> [a] -> [a]P6Int[]a[]atake n, applied to a list xs, returns the prefix of xs of length n, or xs itself if n > length xs:
take 5 "Hello World!" == "Hello"
take 3 [1,2,3,4,5] == [1,2,3]
take 3 [1,2] == [1,2]
take 3 [] == []
take (-1) [1,2] == []
take 0 [1,2] == []
It is an instance of the more general Data.List.genericTake, in which n may be of any integral type. etaketake :: Int ->  ByteString ->  ByteStringaInt ByteString ByteStringO(1) take n, applied to a ByteString xs, returns the prefix of xs of length n, or xs itself if n > length xs. tailstails :: [a] -> [[a]][]a[][]aThe tails function returns all final segments of the argument, longest first. For example,
tails "abc" == ["abc", "bc", "c",""]
etailstails ::  ByteString ->  [ByteString] ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. tailtail :: [a] -> [a]K6[]a[]aHExtract the elements after the head of a list, which must be non-empty. etailtail ::  ByteString ->  ByteString ByteString ByteStringO(1) Extract the elements after the head of a ByteString, which must be non-empty. An exception will be thrown in the case of an empty ByteString. tagtag :: String -> Html -> HtmlStringHtmlHtmltabletable :: Html -> HtmlO@HtmlHtmloTabletype Table a = Array Vertex a/Table indexed by a contiguous set of vertices. "SymbolSymbol :: String -> Lexeme StringLexeme4Haskell symbol, e.g. >>, :%  Surrogate Surrogate :: GeneralCategoryGeneralCategoryCs: Other, Surrogate supsup :: Html -> Html HtmlHtmlxSundaySunday :: DayF@Daysumsum ::  Num a => [a] -> aNuma[]aaFThe sum function computes the sum of a finite list of numbers. Msumsum :: (Foldable t, Num a) => t a -> ab;FoldabletNumataaHThe sum function computes the sum of the numbers of a structure. KSumSum :: a -> Sum aaSumaKSumnewtype Sum a&Monoid under addition.  subsequences subsequences :: [a] -> [[a]][]a[][]aThe subsequences function returns the list of all subsequences of the argument.
subsequences "abc" == ["","a","b","ab","c","ac","bc","abc"]
subRegex subRegex :: Regex -> String -> String -> StringRegexStringStringStringReplaces every occurance of the given regexp with the replacement string. In the replacement string, "\1" refers to the first substring; "\2" to the second, etc; and "\0" to the entire match. "\\\\" will insert a literal backslash. This does not advance if the regex matches an empty string. This misfeature is here to match the behavior of the the original Text.Regex API. submitsubmit :: String -> String -> HtmlStringStringHtmlk subForest subForest :: Tree a -> Forest aV;TreeaForestazero or more child trees subsub :: Html -> HtmlHtmlHtmlstylestyle :: Html -> HtmlHtmlHtmlostronglyConnCompRstronglyConnCompR ::  Ord key => [(node, key, [key])] -> [SCC (node, key, [key])]Ordkey[](,,)nodekey[]key[]SCC(,,)nodekey[]keyTThe strongly connected components of a directed graph, topologically sorted. The function is the same as stronglyConnComp, except that all the information about each node retained. This interface is used when you expect to apply SCC to (some of) the result of SCC, so you don't want to lose the dependency information. ostronglyConnCompstronglyConnComp ::  Ord key => [(node, key, [key])] ->  [SCC node] Ordkey[](,,)nodekey[]key[]SCCnodeMThe strongly connected components of a directed graph, topologically sorted. strongstrong :: Html -> HtmlHtmlHtml stripPrefix stripPrefix :: Eq a => [a] -> [a] ->  Maybe [a]FEqa[]a[]aMaybe[]azThe stripPrefix function drops the given prefix from a list. It returns Nothing if the list did not start with the prefix given, or Just the list after the prefix, if it does.
stripPrefix "foo" "foobar" -> Just "bar"
stripPrefix "foo" "foo" -> Just ""
stripPrefix "foo" "barfoo" -> Nothing
stripPrefix "foo" "barfoobaz" -> Nothing
stringToHtmlStringstringToHtmlString :: String -> String4!StringString stringToHtml stringToHtml :: String -> HtmlStringHtml9 StringRep StringRep :: DataRepDataRep9 StringConstr StringConstr :: String ->  ConstrRepN8String ConstrRepstringBufferOpstringBufferOp :: BufferOp StringBufferOpStringstringBufferOp is the BufferOp definition over Strings. It is defined in terms of strictBufferOp operations, unpacking/converting to String when needed. "StringString :: String -> LexemeStringLexeme)String literal, with escapes interpreted Stringtype String = [Char]7gA String is a list of characters. String constants in Haskell are values of type String. strictBufferOpstrictBufferOp :: BufferOp ByteString BufferOp ByteStringhstrictBufferOp is the BufferOp definition over ByteStrings, the non-lazy kind. OSTRefdata STRef s a{a value of type STRef s a is a mutable variable in state thread s, containing a value of type a ! StreamHooks  StreamHooks :: &((ty -> String) -> Result ty -> IO ()) -> -((ty -> String) -> Int -> Result ty -> IO ()) -> ,((ty -> String) -> ty -> Result () -> IO ()) -> IO () -> StreamHooks tytyStringResulttyIO()tyStringIntResulttyIO()tyStringtyResult()IO()IO() StreamHooksty! StreamHooksdata  StreamHooks ty"StreamDebuggerdata StreamDebugger x=:Allows stream logging. Refer to debugStream below. Streamclass Stream xqStreams should make layering of TLS protocol easier in future, they allow reading/writing to files etc for debugging, they allow use of protocols other than TCP/IP and they allow customisation. Instances of this class should not trim the input in any way, e.g. leave LF on line endings etc. Unless that is exactly the behaviour you want from your twisted instances ;) StreamStream ::  SocketTypecV SocketTypestrAttrstrAttr :: String -> String -> HtmlAttrStringStringHtmlAttr%Storableclass Storable aThe member functions of this class facilitate writing values of primitive types to raw memory (which may have been allocated with the above mentioned routines) and reading values from blocks of raw memory. The class, furthermore, includes support for computing the storage requirements and alignment restrictions of storable types. Memory addresses are represented as values of type Ptr a, for some a which is an instance of class Storable. The type argument to Ptr helps provide some valuable type safety in FFI code (you can't mix pointers of different types without an explicit cast), while helping the Haskell type system figure out which marshalling method is needed for a given pointer. All marshalling between Haskell and a foreign language ultimately boils down to translating Haskell data structures into the binary representation of a corresponding data structure of the foreign language and vice versa. To code this marshalling in Haskell, it is necessary to manipulate primitive data types stored in unstructured memory blocks. The class Storable facilitates this manipulation on all types for which it is instantiated, which are the standard basic types of Haskell, the fixed size Int types (Int8, Int16, Int32, Int64), the fixed size Word types (Word8, Word16, Word32, Word64), StablePtr, all types from Foreign.C.Types, as well as Ptr. Minimal complete definition: sizeOf, alignment, one of peek, peekElemOff and peekByteOff, and one of poke, pokeElemOff and pokeByteOff. 6stdoutstdout :: HandleHandleKA handle managing output to the Haskell program's standard output channel. 6stdinstdin :: HandlevmHandleKA handle managing input from the Haskell program's standard input channel. { StdGendata StdGennThe StdGen instance of RandomGen has a genRange of at least 30 bits. The result of repeatedly using next should be at least as statistically robust as the Minimal Standard Random Number Generator described by [System.Random#Park, System.Random#Carta]. Until more is known about implementations of split, all we require is that split deliver generators that are (a) not identical and (b) independently robust in the sense just given. The Show and Read instances of StdGen provide a primitive way to save the state of a random number generator. It is required that read (show g) == g. In addition, read may be used to map an arbitrary string (not necessarily one produced by show) onto a value of type StdGen. In general, the read instance of StdGen has the following properties:
  • It guarantees to succeed on any string.
  • It guarantees to consume only a finite portion of the string.
  • Different argument strings are likely to result in different results.
6stderrstderr :: HandleHandleJA handle managing output to the Haskell program's standard error channel. startstart :: Int -> HtmlAttrA/IntHtmlAttrstampstamp :: Result -> [String]Result[]String7 StackOverflow StackOverflow :: AsyncExceptionAsyncExceptionThe current thread's stack exceeded its limit. Since an exception has been raised, the thread's stack will certainly be below its limit again, but the programmer should take remedial action immediately. 5 StackOverflow StackOverflow :: AsyncException*AsyncExceptionThe current thread's stack exceeded its limit. Since an exception has been raised, the thread's stack will certainly be below its limit again, but the programmer should take remedial action immediately.  StablePtrdata  StablePtr a- A stable pointer is a reference to a Haskell expression that is guaranteed not to be affected by garbage collection, i.e., it will neither be deallocated nor will the value of the stable pointer itself change during garbage collection (ordinary references may be relocated during garbage collection). Consequently, stable pointers can be passed to foreign code, which can treat it as an opaque reference to a Haskell value. A value of type StablePtr a is a stable pointer to a Haskell expression of type a. srcsrc :: String -> HtmlAttr  StringHtmlAttre splitWith splitWith :: (Word8 -> Bool) ->  ByteString ->  [ByteString]@  Word8Bool ByteString[] ByteStringmO(n) Splits a ByteString into components delimited by separators, where the predicate returns True for a separator element. The resulting components do not contain the separators. Two adjacent separators result in an empty component in the output. eg.
splitWith (=='a') "aabbaca" == ["","","bb","c",""]
splitWith (=='a') []        == []
 splitTyConApp splitTyConApp :: TypeRep -> (TyCon, [TypeRep]):TypeRep(,)TyCon[]TypeRep&Splits a type constructor application  splitRegex splitRegex :: Regex -> String -> [String]RegexString[]StringSplits a string based on a regular expression. The regular expression should identify one delimiter. This does not advance and produces an infinite list of [] if the regex matches an empty string. This misfeature is here to match the behavior of the the original Text.Regex API. i splitMember splitMember ::  Ord a => a -> Set a -> (Set a, Bool, Set a)rOrdaaSeta(,,)SetaBoolSetasO(log n). Performs a split but also returns whether the pivot element was found in the original set. m splitMember splitMember :: Int -> IntSet -> (IntSet, Bool, IntSet)IntIntSet(,,)IntSetBoolIntSetvO(min(n,W)). Performs a split but also returns whether the pivot element was found in the original set. l splitLookup splitLookup ::  Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)OrdkkMapka(,,)MapkaMaybeaMapka^O(log n). The expression (splitLookup k map) splits a map just like split but also returns lookup k map.
splitLookup 2 (fromList [(5,"a"), (3,"b")]) == (empty, Nothing, fromList [(3,"b"), (5,"a")])
splitLookup 3 (fromList [(5,"a"), (3,"b")]) == (empty, Just "b", singleton 5 "a")
splitLookup 4 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", Nothing, singleton 5 "a")
splitLookup 5 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", Just "a", empty)
splitLookup 6 (fromList [(5,"a"), (3,"b")]) == (fromList [(3,"b"), (5,"a")], Nothing, empty)
n splitLookup splitLookup :: Key -> IntMap a -> (IntMap a, Maybe a, IntMap a)KeyIntMapa(,,)IntMapaMaybeaIntMapa6O(log n). Performs a split but also returns whether the pivot key was found in the original map.
splitLookup 2 (fromList [(5,"a"), (3,"b")]) == (empty, Nothing, fromList [(3,"b"), (5,"a")])
splitLookup 3 (fromList [(5,"a"), (3,"b")]) == (empty, Just "b", singleton 5 "a")
splitLookup 4 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", Nothing, singleton 5 "a")
splitLookup 5 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", Just "a", empty)
splitLookup 6 (fromList [(5,"a"), (3,"b")]) == (fromList [(3,"b"), (5,"a")], Nothing, empty)
jsplitAtsplitAt :: Int -> Seq a -> (Seq a, Seq a)IntSeqa(,)SeqaSeqaO(log(min(i,n-i))). Split a sequence at a given position. splitAt i s = (take i s, drop i s). splitAtsplitAt :: Int -> [a] ->  ([a], [a])Int[]a(,)[]a[]aqsplitAt n xs returns a tuple where first element is xs prefix of length n 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 (take n xs, drop n xs). splitAt is an instance of the more general Data.List.genericSplitAt, in which n may be of any integral type. esplitAtsplitAt :: Int ->  ByteString -> (ByteString, ByteString)Int ByteString(,) ByteString ByteStringiO(1) splitAt n xs is equivalent to (take n xs, drop n xs). { splitsplit :: RandomGen g => g -> (g, g) RandomGengg(,)ggisplitsplit ::  Ord a => a -> Set a -> (Set a, Set a)s>OrdaaSeta(,)SetaSetaO(log n). The expression (split x set) is a pair (set1,set2) where set1 comprises the elements of set less than x and set2 comprises the elements of set greater than x. lsplitsplit ::  Ord k => k -> Map k a -> (Map k a, Map k a) OrdkkMapka(,)MapkaMapkaO(log n). The expression (split k map) is a pair (map1,map2) where the keys in map1 are smaller than k and the keys in map2 larger than k. Any key equal to k is found in neither map1 nor map2.
split 2 (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3,"b"), (5,"a")])
split 3 (fromList [(5,"a"), (3,"b")]) == (empty, singleton 5 "a")
split 4 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", singleton 5 "a")
split 5 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", empty)
split 6 (fromList [(5,"a"), (3,"b")]) == (fromList [(3,"b"), (5,"a")], empty)
msplitsplit :: Int -> IntSet -> (IntSet, IntSet);##IntIntSet(,)IntSetIntSetNO(min(n,W)). The expression (split x set) is a pair (set1,set2) where set1 comprises the elements of set less than x and set2 comprises the elements of set greater than x.
split 3 (fromList [1..5]) == (fromList [1,2], fromList [4,5])
nsplitsplit :: Key -> IntMap a -> (IntMap a, IntMap a)%%$KeyIntMapa(,)IntMapaIntMapaO(log n). The expression (split k map) is a pair (map1,map2) where all keys in map1 are lower than k and all keys in map2 larger than k. Any key equal to k is found in neither map1 nor map2.
split 2 (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3,"b"), (5,"a")])
split 3 (fromList [(5,"a"), (3,"b")]) == (empty, singleton 5 "a")
split 4 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", singleton 5 "a")
split 5 (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", empty)
split 6 (fromList [(5,"a"), (3,"b")]) == (fromList [(3,"b"), (5,"a")], empty)
esplitsplit :: Word8 ->  ByteString ->  [ByteString]G((Word8 ByteString[] ByteStringO(n) Break a ByteString into pieces separated by the byte argument, consuming the delimiter. I.e.
split '\n' "a\nb\nd\ne" == ["a","b","d","e"]
split 'a'  "aXaXaXa"    == ["","X","X","X",""]
split 'x'  "x"          == ["",""]
and
intercalate [c] . split c == id
split == splitWith . (==)
As for all splitting functions in this library, this function does not copy the substrings, it just constructs new ByteStrings that are slices of the original. espanEndspanEnd :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)**Word8Bool ByteString(,) ByteString ByteStringspanEnd behaves like span but from the end of the ByteString. We have
spanEnd (not.isSpace) "x y z" == ("x y ","z")
and
spanEnd (not . isSpace) ps
   == 
let (x,y) = span (not.isSpace) (reverse ps) in (reverse y, reverse x) 
spanspan ::  (a -> Bool) -> [a] ->  ([a], [a]),[,aBool[]a(,)[]a[]aspan, applied to a predicate p and a list xs, returns a tuple where first element is longest prefix (possibly empty) of xs of elements that satisfy p and second element is the remainder of the list:
span (< 3) [1,2,3,4,1,2,3,4] == ([1,2],[3,4,1,2,3,4])
span (< 9) [1,2,3] == ([1,2,3],[])
span (< 0) [1,2,3] == ([],[1,2,3])
span p xs is equivalent to (takeWhile p xs, dropWhile p xs) espanspan :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)'/.Word8Bool ByteString(,) ByteString ByteStringspan p xs breaks the ByteString into two segments. It is equivalent to (takeWhile p xs, dropWhile p xs) SpacingCombiningMarkSpacingCombiningMark :: GeneralCategory$00GeneralCategoryMc: Mark, Spacing Combining  spaceHtml spaceHtml :: Html0{0HtmlSpaceSpace :: GeneralCategory00GeneralCategoryZs: Separator, Space  SourcePosdata  SourcePos1The abstract data type SourcePos represents source positions. It contains the name of the source (i.e. file name), a line number and a column number. SourcePos is an instance of the Show, Eq and Ord class.  sourceName sourceName ::  SourcePos ->  SourceName2j2 SourcePos SourceName8Extracts the name of the source from a source position.  SourceNametype  SourceName = String2 sourceLine sourceLine ::  SourcePos -> Linee3Q3 SourcePosLine1Extracts the line number from a source position.  sourceColumn sourceColumn ::  SourcePos -> Column43 SourcePosColumn3Extracts the column number from a source position. sortBysortBy :: (a -> a -> Ordering) -> [a] -> [a]44aaOrdering[]a[]aIThe sortBy function is the non-overloaded version of sort. sortsort ::  Ord a => [a] -> [a]q5R5Orda[]a[]aThe sort function implements a stable sorting algorithm. It is a special case of sortBy, which allows the programmer to supply their own comparison function. esortsort ::  ByteString ->  ByteString6j6 ByteString ByteString@O(n) Sort a ByteString efficiently, using counting sort. 5 SomeException SomeException :: e ->  SomeException377e SomeException5 SomeExceptiondata  SomeExceptionq7Lsomesome :: Alternative f => f a -> f [a]77 Alternativeffaf[]a One or more.  sOMAXCONN sOMAXCONN :: Int;858Int sOL_SOCKET sOL_SOCKET :: Int}8w8IntSoErrorSoError ::  SocketOption88 SocketOption SocketTypedata  SocketType9xSocket Types. This data type might have different constructors depending on what is supported by the operating system. socketToHandlesocketToHandle :: Socket -> IOMode ->  IO Handle :9SocketIOModeIOHandleturns a Socket into an Handle. By default, the new handle is unbuffered. Use hSetBuffering to change the buffering. Note that since a Handle is automatically closed by a finalizer when it is no longer referenced, you should avoid doing any more operations on the Socket after calling socketToHandle. To close the Socket after socketToHandle, call hClose on the Handle.  SocketStatusdata  SocketStatus; socketPort socketPort :: Socket ->  IO PortNumberl<O<SocketIO PortNumber socketPair  socketPair :: Family ->  SocketType -> ProtocolNumber -> IO (Socket, Socket)>=<Family SocketTypeProtocolNumberIO(,)SocketSocket SocketOptiondata  SocketOptionz=!socketConnectionsocketConnection :: BufferType ty => String -> Socket -> IO (HandleStream ty)G>> BufferTypetyStringSocketIO HandleStreamty`socketConnection, like openConnection but using a pre-existing Socket. socket socket :: Family ->  SocketType -> ProtocolNumber ->  IO SocketX?#?Family SocketTypeProtocolNumberIOSocketSocketdata Socket? SockAddrUnix SockAddrUnix :: String -> SockAddr??StringSockAddr SockAddrInet6  SockAddrInet6 ::  PortNumber -> FlowInfo ->  HostAddress6 -> ScopeID -> SockAddr@@ PortNumberFlowInfo HostAddress6ScopeIDSockAddr SockAddrInet SockAddrInet ::  PortNumber ->  HostAddress -> SockAddrbA Word8 ->  ByteStringBA ByteStringWord8 ByteString<O(n) Append a byte to the end of a ByteString  sndsnd :: (a, b) -> bBB(,)abb(Extract the second component of a pair. smallsmall :: Html -> HtmlCCHtmlHtml%sizeOfsizeOf :: Storable a => a -> IntClCStorableaaIntsizedsized :: (Int -> Gen a) -> Gen aCCIntGenaGenasizesize :: String -> HtmlAttrND9DStringHtmlAttrisizesize :: Set a -> IntDDSetaInt0O(1). The number of elements in the set. lsizesize :: Map k a -> Int)EEMapkaIntO(1). The number of elements in the map.
size empty                                   == 0
size (singleton 1 'a')                       == 1
size (fromList([(1,'a'), (2,'c'), (3,'b')])) == 3
msizesize :: IntSet -> IntOF?FIntSetInt%O(n). Cardinality of the set. nsizesize :: IntMap a -> IntFFIntMapaIntO(n). Number of elements in the map.
size empty                                   == 0
size (singleton 1 'a')                       == 1
size (fromList([(1,'a'), (2,'c'), (3,'b')])) == 3
 sIsWritable sIsWritable :: Socket -> IO BoolHGSocketIOBool sIsReadable sIsReadable :: Socket -> IO BoolsH\HSocketIOBool sIsListening sIsListening :: Socket -> IO BoolHHSocketIOBool sIsConnected sIsConnected :: Socket -> IO BoolMI6ISocketIOBoolsIsBoundsIsBound :: Socket -> IO BoolIISocketIOBooli singleton singleton :: a -> Set a JIaSeta%O(1). Create a singleton set. j singleton singleton :: a -> Seq aJyJaSeqa#O(1). A singleton sequence. l singleton singleton :: k -> a -> Map k aKKkaMapkaO(1). A map with a single element.
singleton 1 'a'        == fromList [(1, 'a')]
size (singleton 1 'a') == 1
m singleton singleton :: Int -> IntSetKKIntIntSet#O(1). A set of one element. n singleton singleton :: Key -> a -> IntMap aLvLKeyaIntMapa{O(1). A map of one element.
singleton 1 'a'        == fromList [(1, 'a')]
size (singleton 1 'a') == 1
e singleton singleton :: Word8 ->  ByteStringqM[MWord8 ByteString<O(1) Convert a Word8 into a ByteString  simpleTable  simpleTable ::  [HtmlAttr] ->  [HtmlAttr] -> [[Html]] -> HtmlgN,N[]HtmlAttr[]HtmlAttr[][]HtmlHtml% simpleHTTP_ simpleHTTP_ :: HStream ty => HandleStream ty ->  Request ty -> IO (Result (Response ty))OONHStreamty HandleStreamtyRequesttyIOResultResponsetyHIdentical to simpleHTTP, but acting on an already opened stream. % simpleHTTP simpleHTTP :: HStream ty =>  Request ty -> IO (Result (Response ty))NP PHStreamtyRequesttyIOResultResponsetygsimpleHTTP req transmits the Request req by opening a direct, non-persistent connection to the HTTP server that req is destined for, followed by transmitting it and gathering up the response as a Result. Prior to sending the request, it is normalized (via normalizeRequest). If you have to mediate the request via an HTTP proxy, you will have to normalize the request yourself. Or switch to using Network.Browser instead. Examples:
simpleHTTP (getRequest "http://hackage.haskell.org/")
simpleHTTP (getRequest "http://hackage.haskell.org:8012/")
silversilver :: StringRRString ShutdownSend ShutdownSend ::  ShutdownCmdKS=S ShutdownCmdShutdownReceiveShutdownReceive ::  ShutdownCmdSS ShutdownCmd ShutdownCmddata  ShutdownCmdS ShutdownBoth ShutdownBoth ::  ShutdownCmd7T)T ShutdownCmdshutdownshutdown :: Socket ->  ShutdownCmd -> IO ()TTSocket ShutdownCmdIO()U showVersion showVersion :: Version -> String$UUVersionStringProvides one possible concrete representation for Version. For a version with versionBranch = [1,2,3] and versionTags = ["tag1","tag2"], the output will be 1.2.3-tag1-tag2. i showTreeWith  showTreeWith ::  Show a => Bool -> Bool -> Set a -> StringVVShowaBoolBoolSetaStringgO(n). The expression (showTreeWith hang wide map) shows the tree that implements the set. If hang is True, a hanging tree is shown otherwise a rotated tree is shown. If wide is True, an extra wide version is shown.
Set> putStrLn $ showTreeWith True False $ fromDistinctAscList [1..5]
4
+--2
|  +--1
|  +--3
+--5

Set> putStrLn $ showTreeWith True True $ fromDistinctAscList [1..5]
4
|
+--2
|  |
|  +--1
|  |
|  +--3
|
+--5

Set> putStrLn $ showTreeWith False True $ fromDistinctAscList [1..5]
+--5
|
4
|
|  +--3
|  |
+--2
   |
   +--1
l showTreeWith  showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> StringYYkaStringBoolBoolMapkaString.O(n). The expression (showTreeWith showelem hang wide map) shows the tree that implements the map. Elements are shown using the showElem function. If hang is True, a hanging tree is shown otherwise a rotated tree is shown. If wide is True, an extra wide version is shown.
Map> let t = fromDistinctAscList [(x,()) | x <- [1..5]]
Map> putStrLn $ showTreeWith (\k x -> show (k,x)) True False t
(4,())
+--(2,())
|  +--(1,())
|  +--(3,())
+--(5,())

Map> putStrLn $ showTreeWith (\k x -> show (k,x)) True True t
(4,())
|
+--(2,())
|  |
|  +--(1,())
|  |
|  +--(3,())
|
+--(5,())

Map> putStrLn $ showTreeWith (\k x -> show (k,x)) False True t
+--(5,())
|
(4,())
|
|  +--(3,())
|  |
+--(2,())
   |
   +--(1,())
m showTreeWith  showTreeWith :: Bool -> Bool -> IntSet -> String]}]BoolBoolIntSetStringO(n). The expression (showTreeWith hang wide map) shows the tree that implements the set. If hang is True, a hanging tree is shown otherwise a rotated tree is shown. If wide is True, an extra wide version is shown. n showTreeWith  showTreeWith ::  Show a => Bool -> Bool -> IntMap a -> Stringa_2_ShowaBoolBoolIntMapaStringO(n). The expression (showTreeWith hang wide map) shows the tree that implements the map. If hang is True, a hanging tree is shown otherwise a rotated tree is shown. If wide is True, an extra wide version is shown. ishowTreeshowTree ::  Show a => Set a -> String``ShowaSetaStringgO(n). Show the tree that implements the set. The tree is shown in a compressed, hanging format. lshowTreeshowTree :: (Show k, Show a) => Map k a -> StringaaShowkShowaMapkaStringO(n). Show the tree that implements the map. The tree is shown in a compressed, hanging format. See showTreeWith. mshowTreeshowTree :: IntSet -> StringbbIntSetStringgO(n). Show the tree that implements the set. The tree is shown in a compressed, hanging format. nshowTreeshowTree ::  Show a => IntMap a -> StringccShowaIntMapaStringgO(n). Show the tree that implements the map. The tree is shown in a compressed, hanging format.  showsTypeRep showsTypeRep :: TypeRep -> ShowSudbdTypeRepShowS showString showString :: String -> ShowSddStringShowSjutility function converting a String to a show function that simply prepends the string unchanged.  showsPrec showsPrec ::  Show a => Int -> a -> ShowSeeShowaIntaShowSshowsshows ::  Show a => a -> ShowS#f fShowaaShowS7equivalent to showsPrec with a precedence of 0. ShowStype ShowS = String -> StringfThe shows functions return a function that prepends the output String to an existing String. This allows constant-time concatenation of results using function composition.  showParen showParen :: Bool -> ShowS -> ShowSggBoolShowSShowSxutility function that surrounds the inner show function with parentheses when the Bool parameter is True.  showLitChar showLitChar :: Char -> ShowShhCharShowSConvert a character to a string using only printable characters, using Haskell source-language escape conventions. For example:
showLitChar '\n' s  =  "\\n" ++ s
 showListWith showListWith ::  (a -> ShowS) -> [a] -> ShowSiiaShowS[]aShowSWShow a list (using square brackets and commas), given a function for showing elements. showListshowList ::  Show a => [a] -> ShowSjjShowa[]aShowSC showFixed showFixed :: HasResolution a => Bool -> Fixed a -> StringPkk HasResolutionaBoolFixedaString0First arg is whether to chop off trailing zeros  showContentTypeshowContentType ::  ContentType -> Stringkk ContentTypeString9 showConstr showConstr :: Constr -> String\lIlConstrString"Gets the string for a constructor showCharshowChar :: Char -> ShowSllCharShowSkutility function converting a Char to a show function that simply prepends the character unchanged. showshow ::  Show a => a -> StringmmShowaaStringShowclass Show am.Conversion of values to readable Strings. Minimal complete definition: showsPrec or show. Derived instances of Show have the following properties, which are compatible with derived instances of Text.Read.Read:
  • The result of show is a syntactically correct Haskell expression containing only constants, given the fixity declarations in force at the point where the type is declared. It contains only the constructor names defined in the data type, parentheses, and spaces. When labelled constructor fields are used, braces, commas, field names, and equal signs are also used.
  • If the constructor is defined to be an infix operator, then showsPrec will produce infix applications of the constructor.
  • the representation will be enclosed in parentheses if the precedence of the top-level constructor in x is less than d (associativity is ignored). Thus, if d is 0 then the result is never surrounded in parentheses; if d is 11 it is always surrounded in parentheses, unless it is an atomic expression.
  • If the constructor is defined using record syntax, then show will produce the record-syntax form, with the fields given in the same order as the original declaration.
For example, given the declarations
infixr 5 :^:
data Tree a =  Leaf a  |  Tree a :^: Tree a
the derived instance of Show is equivalent to
instance (Show a) => Show (Tree a) where

       showsPrec d (Leaf m) = showParen (d > app_prec) $
            showString "Leaf " . showsPrec (app_prec+1) m
         where app_prec = 10

       showsPrec d (u :^: v) = showParen (d > up_prec) $
            showsPrec (up_prec+1) u . 
            showString " :^: "      .
            showsPrec (up_prec+1) v
         where up_prec = 5
Note that right-associativity of :^: is ignored. For example,
  • show (Leaf 1 :^: Leaf 2 :^: Leaf 3) produces the string "Leaf 1 :^: (Leaf 2 :^: Leaf 3)".
shiftRshiftR ::  Bits a => a -> Int -> atv[vBitsaaIntashiftLshiftL ::  Bits a => a -> Int -> avvBitsaaIntashiftshift ::  Bits a => a -> Int -> aTw;wBitsaaIntashapeshape :: String -> HtmlAttrwwStringHtmlAttr7setUncaughtExceptionHandlersetUncaughtExceptionHandler :: (Exception -> IO ()) -> IO ()Vx2x ExceptionIO()IO()!setStreamHookssetStreamHooks :: HandleStream ty -> StreamHooks ty -> IO ()yx HandleStreamty StreamHookstyIO(){ setStdGen setStdGen :: StdGen -> IO ()hySyStdGenIO())Sets the global random number generator.  setStatus setStatus :: MonadCGI m => Int -> String -> m ()#zyMonadCGImIntStringm()Set the HTTP response status.  setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePoszz SourcePos SourceName SourcePosSet the name of the source.  setSourceLine setSourceLine ::  SourcePos -> Line ->  SourcePos{b{ SourcePosLine SourcePos*Set the line number of a source position. setSourceColumnsetSourceColumn ::  SourcePos -> Column ->  SourcePos?|| SourcePosColumn SourcePos,Set the column number of a source position. setSocketOption setSocketOption :: Socket ->  SocketOption -> Int -> IO ()}|Socket SocketOptionIntIO()setServiceEntrysetServiceEntry :: Bool -> IO ()}l}BoolIO()&setProxysetProxy :: Proxy -> BrowserAction t ()}}Proxy BrowserActiont()setProxy p will disable proxy usage if p is NoProxy. If p is Proxy proxyURL mbAuth, then proxyURL is interpreted as the URL of the proxy to use, possibly authenticating via Authority information in mbAuth. setProtocolEntrysetProtocolEntry :: Bool -> IO ()zgBoolIO()psetPermissionssetPermissions :: FilePath ->  Permissions -> IO ()FilePath PermissionsIO()%The setPermissions operation sets the permissions for the file or directory. The operation may fail with: & setOutHandler setOutHandler :: (String -> IO ()) -> BrowserAction t ()сStringIO() BrowserActiont()setErrHandler sets the IO action to call when the browser chatters info on its running. To disable any such, set it to const (return ()). setNetworkEntrysetNetworkEntry :: Bool -> IO ()؂łBoolIO()Open the network name database. The parameter specifies whether a connection is maintained open between various networkEntry calls &setMaxRedirectssetMaxRedirects ::  Maybe Int -> BrowserAction t ()ŃMaybeInt BrowserActiont()NsetMaxRedirects maxCount sets the maxiumum number of forwarding hops we are willing to jump through. A no-op if the count is negative; if zero, the max is set to whatever default applies. Notice that setting the max redirects count does not enable following of redirects itself; use setAllowRedirects to do so. &setMaxErrorRetriessetMaxErrorRetries ::  Maybe Int -> BrowserAction t ()ՅMaybeInt BrowserActiont()setMaxErrorRetries mbMax sets the maximum number of attempts at transmitting a request. If Nothing, rever to default max. &setMaxAuthAttemptssetMaxAuthAttempts ::  Maybe Int -> BrowserAction t ()цMaybeInt BrowserActiont()setMaxAuthAttempts mbMax sets the maximum number of authentication attempts to do. If Nothing, rever to default max.  setHostEntry setHostEntry :: Bool -> IO ()ӇBoolIO() setHeader setHeader :: MonadCGI m => String -> String -> m ()~SMonadCGImStringStringm()TAdd a response header. Example:
setHeader "Content-type" "text/plain"
&setEventHandlersetEventHandler :: .Maybe (BrowserEvent ty -> BrowserAction ty ()) -> BrowserAction ty ()bMaybe BrowserEventty BrowserActionty() BrowserActionty()2setEventHandler onBrowserEvent configures event handling. If onBrowserEvent is Nothing, event handling is turned off; setting it to Just onEv causes the onEv IO action to be notified of browser events during the processing of a request by the Browser pipeline. & setErrHandler setErrHandler :: (String -> IO ()) -> BrowserAction t ()VStringIO() BrowserActiont()setErrHandler sets the IO action to call when the browser reports running errors. To disable any such, set it to const (return ()). & setDebugLog setDebugLog ::  Maybe String -> BrowserAction t ()MaybeString BrowserActiont(),setDebugLog mbFile turns off debug logging iff mbFile is Nothing. If set to Just fStem, logs of browser activity is appended to files of the form fStem-url-authority, i.e., fStem is just the prefix for a set of log files, one per host/authority. psetCurrentDirectorysetCurrentDirectory :: FilePath -> IO ()S<FilePathIO()If the operating system has a notion of current directories, setCurrentDirectory dir changes the current directory of the calling process to dir. The operation may fail with: & setCookies setCookies :: [Cookie] -> BrowserAction t ()jA[]Cookie BrowserActiont()setCookies cookies replaces the set of cookies known to the browser to cookies. Useful when wanting to restore cookies used across browse invocations. &setCookieFiltersetCookieFilter :: (URI -> Cookie -> IO Bool) -> BrowserAction t ()˓URICookieIOBool BrowserActiont()NsetCookieFilter fn sets the cookie acceptance filter to fn.  setCookie setCookie :: MonadCGI m => Cookie -> m ()tMonadCGImCookiem()Set a cookie. setBitsetBit ::  Bits a => a -> Int -> aBitsaaInta&setAuthorityGensetAuthorityGen :: .(URI -> String -> IO (Maybe (String, String))) -> BrowserAction t ()URIStringIOMaybe(,)StringString BrowserActiont()LsetAuthorityGen genAct sets the auth generator to genAct. &setAuthoritiessetAuthorities ::  [Authority] -> BrowserAction t ()ז[] Authority BrowserActiont()&setAllowRedirectssetAllowRedirects :: Bool -> BrowserAction t ()a@Bool BrowserActiont()usetAllowRedirects onOff toggles the willingness to follow redirects (HTTP responses with 3xx status codes). &setAllowBasicAuthsetAllowBasicAuth :: Bool -> BrowserAction t ()`?Bool BrowserActiont()MsetAllowBasicAuth onOff enables/disables HTTP Basic Authentication. iSetdata Set a٘A set of values a. serviceProtocolserviceProtocol ::  ServiceEntry ->  ProtocolName{\ ServiceEntry ProtocolName servicePort servicePort ::  ServiceEntry ->  PortNumberؙ ServiceEntry PortNumber serviceName serviceName ::  ServiceEntry ->  ServiceNameqS ServiceEntry ServiceName ServiceNametype  ServiceName = String ServiceNametype  ServiceName = String ServiceEntry  ServiceEntry ::  ServiceName ->  [ServiceName] ->  PortNumber ->  ProtocolName ->  ServiceEntry ServiceName[] ServiceName PortNumber ProtocolName ServiceEntry ServiceEntrydata  ServiceEntry)serviceAliasesserviceAliases ::  ServiceEntry ->  [ServiceName] ServiceEntry[] ServiceName serverPort serverPort :: MonadCGI m => m IntMonadCGImmInt/The port number to which the request was sent.  serverName serverName :: MonadCGI m => m StringMonadCGImmString]The server's hostname, DNS alias, or IP address as it would appear in self-referencing URLs. M sequenceA_ sequenceA_ :: (Foldable t, Applicative f) => t (f a) -> f ()Foldablet Applicativeftfaf()REvaluate each action in the structure from left to right, and ignore the results. R sequenceA sequenceA :: "(Traversable t, Applicative f) => t (f a) -> f (t a) Traversablet ApplicativeftfaftaM sequence_ sequence_ :: (Foldable t, Monad m) => t (m a) -> m ()['FoldabletMonadmtmam()ZEvaluate each monadic action in the structure from left to right, and ignore the results.  sequence_ sequence_ ::  Monad m => [m a] -> m ()2 Monadm[]mam()QEvaluate each action in the sequence from left to right, and ignore the results. Rsequencesequence :: (Traversable t, Monad m) => t (m a) -> m (t a)) TraversabletMonadmtmamtasequencesequence ::  Monad m => [m a] -> m [a]Monadm[]mam[]aREvaluate each action in the sequence from left to right, and collect the results.  SeqPacket SeqPacket ::  SocketTypeJ= SocketTypejSeqdata Seq av"General-purpose finite sequences. x September September :: MonthܣԣMonthsendTo sendTo :: Socket -> String -> SockAddr -> IO IntsKSocketStringSockAddrIOIntSNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129)  SendTimeOut SendTimeOut ::  SocketOption  SocketOption SendLowWater SendLowWater ::  SocketOptionte SocketOption%sendHTTP_notify sendHTTP_notify :: HStream ty => HandleStream ty ->  Request ty -> IO () -> IO (Result (Response ty)) HStreamty HandleStreamtyRequesttyIO()IOResultResponsety#sendHTTP_notify hStream httpRequest action behaves like sendHTTP, but lets you supply an IO action to execute once the request has been successfully transmitted over the connection. Useful when you want to set up tracing of request transmission and its performance. %sendHTTPsendHTTP :: HStream ty => HandleStream ty ->  Request ty -> IO (Result (Response ty))/HStreamty HandleStreamtyRequesttyIOResultResponsetysendHTTP hStream httpRequest transmits httpRequest (after normalization) over hStream, but does not alter the status of the connection, nor request it to be closed upon receiving the response. sendFdsendFd :: Socket -> CInt -> IO ()өSocketCIntIO() sendBufTo  sendBufTo :: Socket -> Ptr a -> Int -> SockAddr -> IO IntVSocketPtraIntSockAddrIOInt SendBuffer SendBuffer ::  SocketOption٪ʪ SocketOption sendAncillary sendAncillary :: Socket -> Int -> Int -> Int -> Ptr a -> Int -> IO ()|SocketIntIntIntPtraIntIO()sendsend :: Socket -> String -> IO Int$SocketStringIOIntselectedselected :: HtmlAttrlaHtmlAttrselectselect :: Html -> HtmlHtmlHtml6SeekModedata SeekModeSA mode that determines the effect of hSeek hdl mode i, as follows: 6 SeekFromEnd SeekFromEnd :: SeekModeSeekModeSthe position of hdl is set to offset i from the end of the file. Fsecondsecond ::  Arrow a => a b c -> a (d, b) (d, c)}DArrowaabca(,)db(,)dcp searchable searchable ::  Permissions -> BoolѮ PermissionsBool scrolling scrolling :: String -> HtmlAttrM8StringHtmlAttr scriptName scriptName :: MonadCGI m => m StringMonadCGImmStringeA virtual path to the script being executed, used for self-referencing URIs. Note that this function returns an unencoded string. Make sure to percent-encode any characters that are not allowed in URI paths before using the result of this function to construct a URI. See progURI, queryURI and requestURI for a higher-level interface. ScopeIDtype ScopeID = Word32[ sCM_RIGHTS sCM_RIGHTS :: IntIntsClosesClose :: Socket -> IO ()SocketIO()Closes a socket schemescheme :: URI -> String`PURIStringosccscc :: Graph ->  Forest VertexŲGraphForestVertex.The strongly connected components of a graph. oSCCdata SCC vertex$Strongly connected component. scanr1scanr1 ::  (a -> a -> a) -> [a] -> [a]aaa[]a[]aPscanr1 is a variant of scanr that has no starting value argument. escanr1scanr1 :: (Word8 -> Word8 -> Word8) ->  ByteString ->  ByteStringWord8Word8Word8 ByteString ByteStringPscanr1 is a variant of scanr that has no starting value argument. scanr scanr ::  (a -> b -> b) -> b -> [a] -> [b]mabbb[]a[]buscanr is the right-to-left dual of scanl. Note that
head (scanr f z xs) == foldr f z xs.
escanr scanr :: (Word8 -> Word8 -> Word8) -> Word8 ->  ByteString ->  ByteStringöWord8Word8Word8Word8 ByteString ByteString*scanr is the right-to-left dual of scanl. scanl1scanl1 ::  (a -> a -> a) -> [a] -> [a]iIaaa[]a[]ascanl1 is a variant of scanl that has no starting value argument:
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
escanl1scanl1 :: (Word8 -> Word8 -> Word8) ->  ByteString ->  ByteStringlWord8Word8Word8 ByteString ByteStringscanl1 is a variant of scanl that has no starting value argument. This function will fuse.
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
scanl scanl ::  (a -> b -> a) -> a -> [b] -> [a]ιabaa[]b[]ascanl is similar to foldl, but returns a list of successive reduced values from the left:
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
last (scanl f z xs) == foldl f z xs.
escanl scanl :: (Word8 -> Word8 -> Word8) -> Word8 ->  ByteString ->  ByteStringHWord8Word8Word8Word8 ByteString ByteStringscanl is similar to foldl, but returns a list of successive reduced values from the left. This function will fuse.
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
last (scanl f z xs) == foldl f z xs.
xSaturdaySaturday :: DayͼǼDaysamplesample :: Html -> Html!HtmlHtmlF runKleisli runKleisli ::  Kleisli m a b -> a -> m bKleislimabamb@runInUnboundThreadrunInUnboundThread :: IO a -> IO aIOaIOa=Run the IO computation passed as the first argument. If the calling thread is bound, an unbound thread is created temporarily using forkIO. runInBoundThread doesn't finish until the IO computation finishes. Use this function only in the rare case that you have actually observed a performance loss due to the use of bound threads. A program that doesn't need it's main thread to be bound and makes heavy use of concurrency (e.g. a web server), might want to wrap it's main action in runInUnboundThread. @runInBoundThreadrunInBoundThread :: IO a -> IO aIOaIOaRun the IO computation passed as the first argument. If the calling thread is not bound, a bound thread is created temporarily. runInBoundThread doesn't finish until the IO computation finishes. You can wrap a series of foreign function calls that rely on thread-local state with runInBoundThread so that you can use them without knowing whether the current thread is bound.  runCGIrunCGI ::  MonadIO m => CGIT m CGIResult -> m ()MonadIOmCGITm CGIResultm()Run a CGI action. Typically called by the main function. Reads input from stdin and writes to stdout. Gets CGI environment variables from the program environment. rulesrules :: String -> HtmlAttrStringHtmlAttr@rtsSupportsBoundThreadsrtsSupportsBoundThreads :: BoolUNBoolTrue if bound threads are supported. If rtsSupportsBoundThreads is False, isCurrentThreadBound will always return False and both forkOS and runInBoundThread will fail. rowspanrowspan :: Int -> HtmlAttrzIntHtmlAttrrowsrows :: String -> HtmlAttrStringHtmlAttrrotateRrotateR ::  Bits a => a -> Int -> a[BBitsaaIntarotateLrotateL ::  Bits a => a -> Int -> aBitsaaIntarotaterotate ::  Bits a => a -> Int -> a?&BitsaaIntak rootLabel rootLabel :: Tree a -> aTreeaa label value  rightsrights ::  [Either a b] -> [b][]Eitherab[]bzExtracts from a list of Either all the Right elements All the Right elements are extracted in order. Frightright :: ArrowChoice a => a b c -> a (Either d b) (Either d c)? ArrowChoiceaabcaEitherdbEitherdc RightRight :: b ->  Either a bbEitherabjreversereverse :: Seq a -> Seq aSeqaSeqa(O(n). The reverse of a sequence. reversereverse :: [a] -> [a]}h[]a[]amreverse xs returns the elements of xs in reverse order. xs must be finite. ereversereverse ::  ByteString ->  ByteStringX= ByteString ByteStringiO(n) reverse xs efficiently returns the elements of xs in reverse order. revrev :: String -> HtmlAttrStringHtmlAttr&ReuseConnectionReuseConnection :: BrowserEventType tyqBrowserEventTypety ReuseAddr ReuseAddr ::  SocketOption SocketOptionFreturnAreturnA ::  Arrow a => a b b7ArrowaabbMThe identity arrow, which plays the role of return in arrow notation. returnreturn ::  Monad m => a -> m aMonadmamaResult Result ::  Maybe Bool -> [String] -> [String] -> Result_MaybeBool[]String[]StringResultResultdata ResultResulttype Result a = Either ConnError a>This is the type returned by many exported network functions. &ResponseFinishResponseFinish :: BrowserEventType tyBrowserEventTypety& ResponseEnd ResponseEnd ::  ResponseData -> BrowserEventType tyH ResponseDataBrowserEventTypety% respondHTTP respondHTTP :: HStream ty => HandleStream ty ->  Response ty -> IO ()HStreamty HandleStreamtyResponsetyIO()respondHTTP hStream httpResponse transmits an HTTP Response over the HandleStream hStream. It could be used to implement simple web server interactions, performing the dual role to sendHTTP. C resolution resolution :: HasResolution a => a -> IntegerqN HasResolutionaaIntegerresizeresize :: Int -> Gen a -> Gen aIntGenaGenaresetreset :: String -> String -> HtmlS:StringStringHtmlreservedreserved :: Char -> BoolCharBool requestURI requestURI :: MonadCGI m => m URIMonadCGImmURIAttempts to reconstruct the absolute URI requested by the client, including extra path information and query parameters. If no request URI rewriting is done, or if the web server does not provide the information needed to reconstruct the request URI, this function returns the same value as queryURI. Characters in the components of the returned URI are escaped when needed, as required by Network.URI. & RequestSent RequestSent :: BrowserEventType tyBrowserEventTypety requestMethod requestMethod :: MonadCGI m => m StringoMonadCGImmStringZThe method with which the request was made. For HTTP, this is "GET", "HEAD", "POST", etc. & RequestIDtype  RequestID = Int$ requestHeader requestHeader :: MonadCGI m => String -> m (Maybe String)MonadCGImStringmMaybeStringGets the value of the request header with the given name. The header name is case-insensitive. Example:
requestHeader "User-Agent"
 requestContentTyperequestContentType :: MonadCGI m => m (Maybe String)MonadCGImmMaybeStringFor queries which have attached information, such as HTTP POST and PUT, this is the content type of the data. You can use parseContentType to get a structured representation of the the content-type value.  requestContentLengthrequestContentLength :: MonadCGI m =>  m (Maybe Int)@MonadCGImmMaybeIntFor queries which have attached information, such as HTTP POST and PUT, this is the length of the content given by the client.  requestAcceptLanguagerequestAcceptLanguage :: MonadCGI m => m (Maybe (Accept Language))i7MonadCGImmMaybeAcceptLanguage requestAcceptEncodingrequestAcceptEncoding :: MonadCGI m => "m (Maybe (Accept ContentEncoding))!MonadCGImmMaybeAcceptContentEncoding requestAcceptCharsetrequestAcceptCharset :: MonadCGI m => m (Maybe (Accept Charset))MonadCGImmMaybeAcceptCharset requestAccept requestAccept :: MonadCGI m => m (Maybe (Accept ContentType))g2MonadCGImmMaybeAccept ContentType&requestrequest :: HStream ty =>  Request ty -> 2BrowserAction (HandleStream ty) (URI, Response ty)RHStreamtyRequestty BrowserAction HandleStreamty(,)URIResponsetyrequest httpRequest tries to submit the Request httpRequest to some HTTP server (possibly going via a proxy, see setProxy.) Upon successful delivery, the URL where the response was fetched from is returned along with the Response itself.  replicateM_ replicateM_ ::  Monad m => Int -> m a -> m ()MonadmIntmam()1Like replicateM, but discards the result.  replicateM replicateM ::  Monad m => Int -> m a -> m [a]MonadmIntmam[]a^replicateM n act performs the action n times, gathering the results.  replicate replicate :: Int -> a -> [a]qInta[]areplicate n x is a list of length n with x the value of every element. It is an instance of the more general Data.List.genericReplicate, in which n may be of any integral type. e replicate replicate :: Int -> Word8 ->  ByteStringIntWord8 ByteStringO(n) replicate n x is a ByteString of length n with x the value of every element. The following holds:
replicate w c = unfoldr w (\u -> Just (u,u)) c
This implemenation uses memset(3) repeatrepeat :: a -> [a])a[]aZrepeat x is an infinite list, with x the value of every element. 9 repConstr repConstr :: DataType ->  ConstrRep -> Constr DataType ConstrRepConstr,Look up a constructor by its representation  renderTag  renderTag :: Bool -> String ->  [HtmlAttr] -> Int -> ShowSBoolString[]HtmlAttrIntShowS renderTable renderTable :: BlockTable (Int -> Int -> Html) -> HtmlxO BlockTableIntIntHtmlHtml renderHtml' renderHtml' :: Int ->  HtmlElement -> ShowSInt HtmlElementShowS renderHtml renderHtml ::  HTML html => html -> StringuVHTMLhtmlhtmlStringp renameFile renameFile :: FilePath -> FilePath -> IO ()FilePathFilePathIO()renameFile old new changes the name of an existing file system object from old to new. If the new object already exists, it is atomically replaced by the old object. Neither path may refer to an existing directory. A conformant implementation need not support renaming files in all situations (e.g. renaming across different physical devices), but the constraints must be documented. The operation may fail with: prenameDirectoryrenameDirectory :: FilePath -> FilePath -> IO ()H'FilePathFilePathIO()renameDirectory old new changes the name of an existing directory from old to new. If the new directory already exists, it is atomically replaced by the old directory. If the new directory is neither the old directory nor an alias of the old directory, it is removed as if by removeDirectory. A conformant implementation need not support renaming directories in all situations (e.g. renaming to an existing directory, or across different physical devices), but the constraints must be documented. On Win32 platforms, renameDirectory fails if the new directory already exists. The operation may fail with: p removeFile removeFile :: FilePath -> IO ()nWFilePathIO()removeFile file removes the directory entry for an existing file file, where file is not itself a directory. The implementation may specify additional constraints which must be satisfied before a file can be removed (e.g. the file may not be in use by other processes). The operation may fail with: premoveDirectoryRecursiveremoveDirectoryRecursive :: FilePath -> IO ()FilePathIO()removeDirectoryRecursive dir removes an existing directory dir together with its content and all subdirectories. Be careful, if the directory contains symlinks, the function will follow them. premoveDirectoryremoveDirectory :: FilePath -> IO ())FilePathIO()8removeDirectory dir removes an existing directory dir. The implementation may specify additional constraints which must be satisfied before a directory can be removed (e.g. the directory has to be empty, or may not be in use by other processes). It is not legal for an implementation to partially remove a directory unless the entire directory is removed. A conformant implementation need not support directory removal in all situations (e.g. removal of the root directory). The operation may fail with:  remoteUser remoteUser :: MonadCGI m => m (Maybe String)MonadCGImmMaybeStringzIf the server supports user authentication, and the script is protected, this is the username they have authenticated as.  remoteHost remoteHost :: MonadCGI m => m (Maybe String)MonadCGImmMaybeStringThe hostname making the request. If the server does not have this information, Nothing is returned. See also remoteAddr.  remoteAddr remoteAddr :: MonadCGI m => m StringMonadCGImmString6The IP address of the remote host making the request.  relativeTo relativeTo :: URI -> URI ->  Maybe URIrWURIURIMaybeURILCompute an absolute URI for a supplied URI relative to a given base. 6 RelativeSeek RelativeSeek :: SeekModeSeekModeTthe position of hdl is set to offset i from the current position.  relativeFrom relativeFrom :: URI -> URI -> URIURIURIURIReturns a new URI which represents the relative location of the first URI with respect to the second URI. Thus, the values supplied are expected to be absolute URIs, and the result returned may be a relative URI. Example:
"http://example.com/Root/sub1/name2#frag"
  `relativeFrom` "http://example.com/Root/sub2/name2#frag"
  == "../sub1/name2#frag"
There is no single correct implementation of this function, but any acceptable implementation must satisfy the following:
(uabs `relativeFrom` ubase) `relativeTo` ubase == uabs
For any valid absolute URI. (cf. http://lists.w3.org/Archives/Public/uri/2003Jan/0008.html http://lists.w3.org/Archives/Public/uri/2003Jan/0005.html) relrel :: String -> HtmlAttrStringHtmlAttr redirectredirect :: MonadCGI m => String ->  m CGIResultrMonadCGImStringm CGIResultRedirect to some location. redred :: StringString RecvTimeOut RecvTimeOut ::  SocketOptionG 8  SocketOption RecvLowWater RecvLowWater ::  SocketOption   SocketOptionrecvLenrecvLen :: Socket -> Int -> IO (String, Int)-  SocketIntIO(,)StringIntrecvFromrecvFrom :: Socket -> Int -> IO (String, Int, SockAddr)  SocketIntIO(,,)StringIntSockAddrSNOTE: blocking on Windows unless you compile with -threaded (see GHC ticket #1129) recvFdrecvFd :: Socket -> IO CInt o SocketIOCInt recvBufFrom  recvBufFrom :: Socket -> Ptr a -> Int -> IO (Int, SockAddr);  SocketPtraIntIO(,)IntSockAddr RecvBuffer RecvBuffer ::  SocketOption   SocketOption recvAncillary  recvAncillary :: Socket -> Int -> Int -> IO (Int, Int, Ptr a, Int)T  SocketIntIntIO(,,,)IntIntPtraIntrecvrecv :: Socket -> Int ->  IO String  SocketIntIOString7 RecUpdError RecUpdError :: String ->  Exception5String Exception7An attempt was made to update a field in a record, where the record doesn't have the requested field. This can only occur with multi-constructor records, when one or more fields are missing from some of the constructors. The String argument gives the location of the record update in the source program. 5 RecUpdError RecUpdError :: String ->  RecUpdErrorString RecUpdError5 RecUpdErrordata  RecUpdError7 RecSelError RecSelError :: String ->  ExceptionlString Exception'A field selection was attempted on a constructor that doesn't have the requested field. This can happen with multi-constructor records when one or more fields are missing from some of the constructors. The String argument gives the location of the record selection in the source program. 5 RecSelError RecSelError :: String ->  RecSelErrorString RecSelError5 RecSelErrordata  RecSelErrorS% receiveHTTP receiveHTTP :: HStream ty => HandleStream ty -> IO (Result (Request ty))HStreamty HandleStreamtyIOResultRequesttybreceiveHTTP hStream reads a Request from the HandleStream hStream 7 RecConError RecConError :: String ->  ExceptionString ExceptionAn attempt was made to evaluate a field of a record for which no value was given at construction time. The String argument gives the location of the record construction in the source program. 5 RecConError RecConError :: String ->  RecConErrorString RecConError5 RecConErrordata  RecConErrorSBrealPartrealPart :: RealFloat a =>  Complex a -> a RealFloataComplexaa,Extracts the real part of a complex number. 6 ReadWriteMode ReadWriteMode :: IOModeKBIOModeO readSTRef readSTRef ::  STRef s a -> ST s aSTRefsaSTsa"Read the value of an STRef " readsPrec readsPrec ::  Read a => Int -> ReadS aS4ReadaIntReadSa"readsreads ::  Read a => ReadS aReadaReadSa7equivalent to readsPrec with a precedence of 0. "ReadStype ReadS a = String -> [(a, String)]. A parser for a type a, represented as a function that takes a String and returns a list of possible parses as (a,String) pairs. Note that this kind of backtracking parser is very inefficient; reading a large structure may be quite slow (cf ReadP). "readPrecreadPrec ::  Read a =>  ReadPrec aReadaReadPreca" readParen readParen :: Bool -> ReadS a -> ReadS a4BoolReadSaReadSareadParen True p parses what p parses, but surrounded with parentheses. readParen False p parses what p parses, but optionally surrounded with parentheses. 6ReadModeReadMode :: IOModeULIOMode6readLnreadLn ::  Read a => IO aReadaIOaFThe readLn function combines getLine and readIO.  readLitChar readLitChar ::  ReadS CharD4ReadSCharRead a string representation of a character, using Haskell source-language escape conventions, and convert it to the character that it encodes. For example:
readLitChar "\\nHello"  =  [('\n', "Hello")]
"readListPrecDefaultreadListPrecDefault ::  Read a =>  ReadPrec [a]}ReadaReadPrec[]apA possible replacement definition for the readListPrec method, defined using readPrec (GHC only). " readListPrec readListPrec ::  Read a =>  ReadPrec [a]aReadaReadPrec[]a"readListDefaultreadListDefault ::  Read a =>  ReadS [a]ReadaReadS[]aA possible replacement definition for the readList method (GHC only). This is only needed for GHC, and even then only for Read instances where readListPrec isn't defined as readListPrecDefault. "readListreadList ::  Read a =>  ReadS [a]:  ReadaReadS[]a!readLinereadLine :: HStream bufType => HandleStream bufType -> IO (Result bufType)  HStreambufType HandleStreambufTypeIOResultbufTypereadLinereadLine ::  Stream x => x -> IO (Result String)!^!StreamxxIOResultString# readIORef readIORef :: IORef a -> IO a!!IORefaIOa"Read the value of an IORef 6readIOreadIO ::  Read a => String -> IO a"b"ReadaStringIOaThe readIO function is similar to read except that it signals parse failure to the IO monad instead of terminating the program.  readInput readInput :: (Read a, MonadCGI m) => String ->  m (Maybe a)##ReadaMonadCGImStringmMaybeaJSame as getInput, but tries to read the value to the desired type. 6readFilereadFile :: FilePath ->  IO Stringo$T$FilePathIOStringThe readFile function reads a file and returns the contents of the file as a string. The file is read lazily, on demand, as with getContents. ereadFilereadFile :: FilePath ->  IO ByteString%a%FilePathIO ByteStringURead an entire file strictly into a ByteString. This is far more efficient than reading the characters into a String and then using pack. It also may be more efficient than opening the file and reading it using hGet. Files are read using 'binary mode' on Windows, for 'text mode' use the Char8 version of this function.  readCookie readCookie :: (Read a, MonadCGI m) => String ->  m (Maybe a)y'C'ReadaMonadCGImStringmMaybeaKSame as getCookie, but tries to read the value to the desired type. 9 readConstr readConstr :: DataType -> String ->  Maybe ConstrU(/(DataTypeStringMaybeConstr"Lookup a constructor via a string ! readBlock readBlock :: HStream bufType => HandleStream bufType -> Int -> IO (Result bufType)Q))HStreambufType HandleStreambufTypeIntIOResultbufType readBlock readBlock ::  Stream x => x -> Int -> IO (Result String)))StreamxxIntIOResultStringpreadablereadable ::  Permissions -> BoolX*B* PermissionsBool"readread ::  Read a => String -> a**ReadaStringalThe read function reads input from a string, which must be completely consumed by the input process. "Readclass Read aV+ Parsing of Strings, producing values. Minimal complete definition: readsPrec (or, for GHC only, readPrec) Derived instances of Read make the following assumptions, which derived instances of Text.Show.Show obey:
  • If the constructor is defined to be an infix operator, then the derived Read instance will parse only infix applications of the constructor (not the prefix form).
  • Associativity is not used to reduce the occurrence of parentheses, although precedence may be.
  • If the constructor is defined using record syntax, the derived Read will parse only the record-syntax form, and furthermore, the fields must be given in the same order as the original declaration.
  • The derived Read instance allows arbitrary Haskell whitespace between tokens of the input string. Extra parentheses are also allowed.
For example, given the declarations
infixr 5 :^:
data Tree a =  Leaf a  |  Tree a :^: Tree a
the derived instance of Read in Haskell 98 is equivalent to
instance (Read a) => Read (Tree a) where

        readsPrec d r =  readParen (d > app_prec)
                         (\r -> [(Leaf m,t) |
                                 ("Leaf",s) <- lex r,
                                 (m,t) <- readsPrec (app_prec+1) s]) r

                      ++ readParen (d > up_prec)
                         (\r -> [(u:^:v,w) |
                                 (u,s) <- readsPrec (up_prec+1) r,
                                 (":^:",t) <- lex s,
                                 (v,w) <- readsPrec (up_prec+1) t]) r

          where app_prec = 10
                up_prec = 5
Note that right-associativity of :^: is unused. The derived instance in GHC is equivalent to
instance (Read a) => Read (Tree a) where

        readPrec = parens $ (prec app_prec $ do
                                 Ident "Leaf" <- lexP
                                 m <- step readPrec
                                 return (Leaf m))

                     +++ (prec up_prec $ do
                                 u <- step readPrec
                                 Symbol ":^:" <- lexP
                                 v <- step readPrec
                                 return (u :^: v))

          where app_prec = 10
                up_prec = 5

        readListPrec = readListPrecDefault
o reachable reachable :: Graph -> Vertex -> [Vertex]z5Z5GraphVertex[]Vertex2A list of vertices reachable from a given vertex. RDMRDM ::  SocketType55 SocketTypeRawRaw ::  SocketType06#6 SocketTypeNRationaltype Rational = Ratio Integerv6Arbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator. NRatiodata Integral a => Ratio aQ7ORational numbers, with numerator and denominator of some Integral type. "RatRat :: Rational -> Lexeme77RationalLexemeFloating point literal J rangeSize rangeSize :: Ix a => (a, a) -> Int8e8Ixa(,)aaIntJrangerange :: Ix a => (a, a) -> [a]88Ixa(,)aa[]a{ randomsrandoms :: (Random a, RandomGen g) => g -> [a]{9O9Randoma RandomGengg[]a{ randomRsrandomRs :: (Random a, RandomGen g) => (a, a) -> g -> [a]&:9Randoma RandomGeng(,)aag[]a{ randomRIO randomRIO ::  Random a => (a, a) -> IO a::Randoma(,)aaIOa{ randomRrandomR :: (Random a, RandomGen g) => (a, a) -> g -> (a, g)U;;Randoma RandomGeng(,)aag(,)ag{ randomIOrandomIO ::  Random a => IO a;;RandomaIOa{ RandomGenclass  RandomGen g;The class RandomGen provides a common interface to random number generators. Minimal complete definition: next and split. { randomrandom :: (Random a, RandomGen g) => g -> (a, g) =<Randoma RandomGengg(,)ag{ Randomclass Random a<=With a source of random number supply in hand, the Random class allows the programmer to extract random values of a variety of types. Minimal complete definition: randomR and random. randrand ::  Gen StdGenP>@>GenStdGenradioradio :: String -> String -> Html>>StringStringHtml quickCheck quickCheck :: Testable a => a -> IO ()8??TestableaaIO() queryURIqueryURI :: MonadCGI m => m URI??MonadCGImmURIhLike progURI, but the returned URI also includes any extra path information, and any query parameters. If the server is rewriting request URIs, this URI can be different from the one requested by the client. See also requestURI. Characters in the components of the returned URI are escaped when needed, as required by Network.URI.  queryString queryString :: MonadCGI m => m StringpASAMonadCGImmStringThe information which follows the ? in the URL which referenced this program. This is the percent-encoded query information. For most normal uses, getInput and friends are probably more convenient. queryquery :: URI -> StringBBURIString& QopAuthInt QopAuthInt :: QopBBQop&QopAuthQopAuth :: QopC CQop&Qopdata Qop9CV putTraceMsg putTraceMsg :: String -> IO ()CCStringIO()putTraceMsg function outputs the trace message from IO monad. Usually the output stream is System.IO.stderr but if the function is called from Windows GUI application then the output will be directed to the Windows debug console. 6putStrLnputStrLn :: String -> IO ()DDStringIO()9The same as putStr, but adds a newline character. eputStrLnputStrLn ::  ByteString -> IO ()EwE ByteStringIO()7Write a ByteString to stdout, appending a newline byte 6putStrputStr :: String -> IO ()$FFStringIO()UWrite a string to the standard output device (same as hPutStr stdout). eputStrputStr ::  ByteString -> IO ()FF ByteStringIO()Write a ByteString to stdout 6putCharputChar :: Char -> IO ()VGCGCharIO()YWrite a character to the standard output device (same as hPutChar stdout). purplepurple :: StringGGStringLpurepure :: Applicative f => a -> f a]H=H Applicativefafa"PuncPunc :: String -> LexemeHHStringLexeme=Punctuation or reserved symbol, e.g. (, :: ' ptrToWordPtr ptrToWordPtr :: Ptr a -> WordPtr]IGIPtraWordPtr+casts a Ptr to a WordPtr ' ptrToIntPtr ptrToIntPtr :: Ptr a -> IntPtrIIPtraIntPtr+casts a Ptr to an IntPtr 'Ptrdata Ptr aFJA value of type Ptr a represents a pointer to an object, or an array of objects, which may be marshalled to or from Haskell values of type a. The type a will often be an instance of class Foreign.Storable.Storable which provides the marshalling operations. However this is not essential, and you can provide your own operations to access the pointer. For example you might write small foreign functions to get or set the fields of a C struct. pseqpseq :: a -> b -> bLuLabbRSemantically identical to seq, but with a subtle operational difference: seq is strict in both its arguments, so the compiler may, for example, rearrange a seq b into b seq a seq b. This is normally no problem when using seq to express strictness, but it can be a problem when annotating code for parallelism, because we need more control over the order of evaluation; we may want to evaluate a before b, because we know that b has already been sparked in parallel with par. This is why we have pseq. In contrast to seq, pseq is only strict in its first argument (as far as the compiler is concerned), which restricts the transformations that the compiler can do, and ensures that the user can retain control of the evaluation order. &ProxyProxy :: String -> Maybe Authority -> ProxyZP4PStringMaybe AuthorityProxyUse the proxy given. Should be of the form http://host:port, host, host:port, or http://host. Optional Authority to authenticate with the proxy as. &Proxydata Proxy?QDProxy specifies if a proxy should be used for the request.  protoNumber protoNumber ::  ProtocolEntry -> ProtocolNumberRQ ProtocolEntryProtocolNumber protoName protoName ::  ProtocolEntry ->  ProtocolNameRcR ProtocolEntry ProtocolNameProtocolNumbertype ProtocolNumber = CIntRProtocolNumbertype ProtocolNumber = CIntS ProtocolNametype  ProtocolName = String\S ProtocolEntry  ProtocolEntry ::  ProtocolName -> [ProtocolName] -> ProtocolNumber ->  ProtocolEntry8TS ProtocolName[] ProtocolNameProtocolNumber ProtocolEntry ProtocolEntrydata  ProtocolEntryvT protoAliases protoAliases ::  ProtocolEntry -> [ProtocolName]UT ProtocolEntry[] ProtocolNamepropertyproperty :: Testable a => a -> PropertywUXUTestableaaPropertyPropertydata PropertyUpromotepromote ::  (a -> Gen b) ->  Gen (a -> b)#VVaGenbGenab progURIprogURI :: MonadCGI m => m URIViVMonadCGImmURIAttempts to reconstruct the absolute URI of this program. This does not include any extra path information or query parameters. See queryURI for that. If the server is rewriting request URIs, this URI can be different from the one requested by the client. See also requestURI. Characters in the components of the returned URI are escaped when needed, as required by Network.URI. productproduct ::  Num a => [a] -> ayX`XNuma[]aaNThe product function computes the product of a finite list of numbers. Mproductproduct :: (Foldable t, Num a) => t a -> aHY!YFoldabletNumataaPThe product function computes the product of the numbers of a structure. KProductProduct :: a ->  Product aYYaProductaKProductnewtype Product a,ZMonoid under multiplication.  PrivateUse PrivateUse :: GeneralCategoryZZGeneralCategoryCo: Other, Private Use _ PrintfTypeclass  PrintfType tZZThe PrintfType class provides the variable argument magic for printf. Its implementation is intentionally not visible from this module. If you attempt to pass an argument of a type which is not an instance of this class to printf or hPrintf, then the compiler will report it as a missing instance of PrintfArg. _ PrintfArgclass  PrintfArg a\_printfprintf :: PrintfType r => String -> r\\ PrintfTyperStringrFormat a variable number of arguments with the C-style formatting string. The return value is either String or (IO a). The format string consists of ordinary characters and /conversion specifications/, which specify how to format one of the arguments to printf in the output string. A conversion specification begins with the character %, followed by one or more of the following flags:
-      left adjust (default is right adjust)
+      always use a sign (+ or -) for signed conversions
0      pad with zeroes rather than spaces
followed optionally by a field width:
num    field width
*      as num, but taken from argument list
followed optionally by a precision:
.num   precision (number of decimal places)
and finally, a format character:
c      character               Char, Int, Integer, ...
d      decimal                 Char, Int, Integer, ...
o      octal                   Char, Int, Integer, ...
x      hexadecimal             Char, Int, Integer, ...
X      hexadecimal             Char, Int, Integer, ...
u      unsigned decimal        Char, Int, Integer, ...
f      floating point          Float, Double
g      general format float    Float, Double
G      general format float    Float, Double
e      exponent format float   Float, Double
E      exponent format float   Float, Double
s      string                  String
Mismatch between the argument types and the format string will cause an exception to be thrown at runtime. Examples:
> printf "%d\n" (23::Int)
23
> printf "%s %s\n" "Hello" "World"
Hello World
> printf "%.2f\n" pi
3.14
6printprint ::  Show a => a -> IO ()ccShowaaIO()The print function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class Show; print converts values to strings for output using the show 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]])
 primHtmlChar primHtmlChar :: String -> HtmleeStringHtmlprimHtmlprimHtml :: String -> HtmlPf?fStringHtmlprimeprime :: Int32ffInt320A prime larger than the maximum hash table size  prettyHtml' prettyHtml' ::  HtmlElement -> [String]4gg HtmlElement[]String prettyHtml prettyHtml ::  HTML html => html -> StringggHTMLhtmlhtmlString9PrefixPrefix :: FixityggFixityprepre :: Html -> Html=h.hHtmlHtml% postRequest postRequest :: String -> Request_StringhhStringRequest_StringpostRequest urlString is convenience constructor for POST Requests. If urlString isn't a syntactically valid URL, the function raises an error.  PortNumbernewtype  PortNumberi PortNumberdata  PortNumberiPortNumPortNum :: Word16 ->  PortNumber5jjWord16 PortNumberBpolarpolar :: RealFloat a =>  Complex a -> (a, a)jj RealFloataComplexa(,)aaThe function polar takes a complex number and returns a (magnitude, phase) pair in canonical form: the magnitude is nonnegative, and the phase in the range (-pi, pi]; if the magnitude is zero, then so is the phase. % pokeElemOff  pokeElemOff :: Storable a => Ptr a -> Int -> a -> IO ()Zl,lStorableaPtraIntaIO()% pokeByteOff  pokeByteOff :: Storable a => Ptr b -> Int -> a -> IO ()mlStorableaPtrbIntaIO()%pokepoke :: Storable a => Ptr a -> a -> IO ()mamStorableaPtraaIO()'plusPtrplusPtr :: Ptr a -> Int -> Ptr bmmPtraIntPtrb9Advances the given address by the given offset in bytes. CPicotype Pico = Fixed E12qnBphasephase :: RealFloat a =>  Complex a -> ann RealFloataComplexaa~The phase of a complex number, in the range (-pi, pi]. If the magnitude is zero, then so is the phase.  permutations permutations :: [a] -> [[a]]oo[]a[][]aThe permutations function returns the list of all permutations of the argument.
permutations "abc" == ["abc","bac","cba","bca","cab","acb"]
p Permissions  Permissions :: Bool -> Bool -> Bool -> Bool ->  Permissions"qpBoolBoolBoolBool Permissionsp Permissionsdata  Permissions\q\ performGC performGC :: IO ()qqIO())Triggers an immediate garbage collection % peekElemOff peekElemOff :: Storable a => Ptr a -> Int -> IO acr9rStorableaPtraIntIOa% peekByteOff peekByteOff :: Storable a => Ptr b -> Int -> IO arrStorableaPtrbIntIOa%peekpeek :: Storable a => Ptr a -> IO aosJsStorableaPtraIOa7PatternMatchFailPatternMatchFail :: String ->  ExceptionssString ExceptionA pattern matching failure. The String argument should contain a descriptive message including the function name, source file and line number. 5PatternMatchFailPatternMatchFail :: String -> PatternMatchFailttStringPatternMatchFail5PatternMatchFaildata PatternMatchFailCu pathTranslatedpathTranslated :: MonadCGI m => m StringuuMonadCGImmStringZThe path returned by pathInfo, but with virtual-to-physical mapping applied to it.  pathInfopathInfo :: MonadCGI m => m Stringyv\vMonadCGImmStringThe extra path information, as given by the client. This is any part of the request path that follows the CGI program path. If the string returned by this function is not empty, it is guaranteed to start with a '/'. Note that this function returns an unencoded string. Make sure to percent-encode any characters that are not allowed in URI paths before using the result of this function to construct a URI. See progURI, queryURI and requestURI for a higher-level interface. pathpath :: URI -> StringxxURIStringopath path :: Graph -> Vertex -> Vertex -> BoolJy*yGraphVertexVertexBool/Is the second vertex reachable from the first? passwordpassword :: String -> HtmlyyStringHtmllpartitionWithKeypartitionWithKey ::  Ord k => (k -> a -> Bool) -> Map k a -> (Map k a, Map k a)zdzOrdkkaBoolMapka(,)MapkaMapkaO(n). Partition the map according to a predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split.
partitionWithKey (\ k _ -> k > 3) (fromList [(5,"a"), (3,"b")]) == (singleton 5 "a", singleton 3 "b")
partitionWithKey (\ k _ -> k < 7) (fromList [(5,"a"), (3,"b")]) == (fromList [(3, "b"), (5, "a")], empty)
partitionWithKey (\ k _ -> k > 7) (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3, "b"), (5, "a")])
npartitionWithKeypartitionWithKey :: (Key -> a -> Bool) -> IntMap a -> (IntMap a, IntMap a)}S}KeyaBoolIntMapa(,)IntMapaIntMapaO(n). Partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split.
partitionWithKey (\ k _ -> k > 3) (fromList [(5,"a"), (3,"b")]) == (singleton 5 "a", singleton 3 "b")
partitionWithKey (\ k _ -> k < 7) (fromList [(5,"a"), (3,"b")]) == (fromList [(3, "b"), (5, "a")], empty)
partitionWithKey (\ k _ -> k > 7) (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3, "b"), (5, "a")])
 partitionEitherspartitionEithers ::  [Either a b] ->  ([a], [b])K[]Eitherab(,)[]a[]bPartitions a list of Either into two lists All the Left elements are extracted, in order, to the first component of the output. Similarly the Right elements are extracted to the second component of the output. i partition partition ::  Ord a =>  (a -> Bool) -> Set a -> (Set a, Set a)OrdaaBoolSeta(,)SetaSetaO(n). Partition the set into two sets, one with all elements that satisfy the predicate and one with all elements that don't satisfy the predicate. See also split. l partition partition ::  Ord k =>  (a -> Bool) -> Map k a -> (Map k a, Map k a)YOrdkaBoolMapka(,)MapkaMapkaO(n). Partition the map according to a predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split.
partition (> "a") (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", singleton 5 "a")
partition (< "x") (fromList [(5,"a"), (3,"b")]) == (fromList [(3, "b"), (5, "a")], empty)
partition (> "x") (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3, "b"), (5, "a")])
 partition partition ::  (a -> Bool) -> [a] ->  ([a], [a])҅aBool[]a(,)[]a[]aThe partition function takes a predicate a list and returns the pair of lists of elements which do and do not satisfy the predicate, respectively; i.e.,
partition p xs == (filter p xs, filter (not . p) xs)
m partition partition ::  (Int -> Bool) -> IntSet -> (IntSet, IntSet)V'IntBoolIntSet(,)IntSetIntSet<O(n). partition the set according to some predicate. n partition partition ::  (a -> Bool) -> IntMap a -> (IntMap a, IntMap a)DaBoolIntMapa(,)IntMapaIntMapaO(n). Partition the map according to some predicate. The first map contains all elements that satisfy the predicate, the second all elements that fail the predicate. See also split.
partition (> "a") (fromList [(5,"a"), (3,"b")]) == (singleton 3 "b", singleton 5 "a")
partition (< "x") (fromList [(5,"a"), (3,"b")]) == (fromList [(3, "b"), (5, "a")], empty)
partition (> "x") (fromList [(5,"a"), (3,"b")]) == (empty, fromList [(3, "b"), (5, "a")])
e partition partition :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)Word8Bool ByteString(,) ByteString ByteStringO(n) The partition function takes a predicate a ByteString and returns the pair of ByteStrings with elements which do and do not satisfy the predicate, respectively; i.e.,
partition p bs == (filter p xs, filter (not . p) xs)
U parseVersion parseVersion ::  ReadP Version@-ReadPVersionDA parser for versions in the format produced by showVersion. parseURIReferenceparseURIReference :: String ->  Maybe URIStringMaybeURIParse a URI reference to a URI value. Returns Nothing if the string is not a valid URI reference. (an absolute or relative URI with optional fragment identifier). parseURIparseURI :: String ->  Maybe URIStringMaybeURI-Turn a string containing a URI into a URI. Returns Nothing if the string is not a valid URI; (an absolute URI with optional fragment identifier). NOTE: this is different from the previous network.URI, whose parseURI function works like parseURIReference in this module. parseRelativeReferenceparseRelativeReference :: String ->  Maybe URIˏStringMaybeURIParse a relative URI to a URI value. Returns Nothing if the string is not a valid relative URI. (a relative URI with optional fragment identifier).  ParseErrordata  ParseError>The abstract data type ParseError represents parse errors. It provides the source position (SourcePos) of the error and a list of error messages (Message). A ParseError can be returned by the function Text.Parsec.Prim.parse. ParseError is an instance of the Show class.  parseContentTypeparseContentType ::  Monad m => String ->  m ContentType{RMonadmStringm ContentTypeParse the standard representation of a content-type. If the input cannot be parsed, this function calls fail with a (hopefully) informative error message. parseabsoluteURIparseabsoluteURI :: String ->  Maybe URI}StringMaybeURIparseAbsoluteURIparseAbsoluteURI :: String ->  Maybe URIStringMaybeURIParse an absolute URI to a URI value. Returns Nothing if the string is not a valid absolute URI. (an absolute URI without a fragment identifier). "parensparens ::  ReadPrec a ->  ReadPrec a!ReadPrecaReadPreca(parens p) parses "P", "(P0)", "((P0))", etc, where p parses "P" in the current precedence context and parses "P0" in precedence context zero paramparam :: HtmlHtmlParagraphSeparatorParagraphSeparator :: GeneralCategoryeSGeneralCategoryZp: Separator, Paragraph  paragraph paragraph :: Html -> HtmlؖɖHtmlHtmlparpar :: a -> b -> b*abbIndicates that it may be beneficial to evaluate the first argument in parallel with the second. Returns the value of the second argument. a par b is exactly equivalent semantically to b. par is generally used when the value of a is likely to be required later, but not immediately. Also it is a good idea to ensure that a is not a trivial computation, otherwise the cost of spawning it in parallel overshadows the benefits obtained by running it in parallel. Note that actual parallelism is only supported by certain implementations (GHC with the -threaded option, and GPH, for now). On other implementations, par a b = b. packSocketTypepackSocketType ::  SocketType -> CIntR= SocketTypeCInt packFamily packFamily :: Family -> CIntFamilyCIntepackCStringLenpackCStringLen ::  CStringLen ->  IO ByteString7 CStringLenIO ByteStringO(n). Construct a new ByteString from a CStringLen. The resulting ByteString is an immutable copy of the original CStringLen. The ByteString is a normal Haskell value and will be managed on the Haskell heap. e packCString packCString :: CString ->  IO ByteStringCStringIO ByteStringO(n). Construct a new ByteString from a CString. The resulting ByteString is an immutable copy of the original CString, and is managed on the Haskell heap. The original CString must be null terminated. epackpack :: [Word8] ->  ByteString[]Word8 ByteStringO(n) Convert a '[Word8]' into a ByteString. For applications with large numbers of string literals, pack can be a bottleneck. In such cases, consider using packAddress (GHC only). pp :: Html -> Html%HtmlHtml7OverflowOverflow :: ArithExceptionyhArithException5OverflowOverflow :: ArithException͟ArithException outputNothing outputNothing :: MonadCGI m =>  m CGIResultE%MonadCGImm CGIResult)Do not output anything (except headers).  outputNotFoundoutputNotFound :: (MonadIO m, MonadCGI m) => String ->  m CGIResultMonadIOmMonadCGImStringm CGIResult@Use outputError to output and log a 404 Not Found error.  outputMethodNotAllowedoutputMethodNotAllowed :: (MonadIO m, MonadCGI m) => [String] ->  m CGIResult(MonadIOmMonadCGIm[]Stringm CGIResultIUse outputError to output and log a 405 Method Not Allowed error.  outputInternalServerErroroutputInternalServerError :: (MonadIO m, MonadCGI m) => [String] ->  m CGIResult@MonadIOmMonadCGIm[]Stringm CGIResultFUse outputError to output and log a 500 Internal Server Error.  outputFPS outputFPS :: MonadCGI m =>  ByteString ->  m CGIResultMonadCGIm ByteStringm CGIResultOutput a ByteString. The output is assumed to be text/html, encoded using ISO-8859-1. To change this, set the Content-type header using setHeader.  outputExceptionoutputException :: (MonadCGI m, MonadIO m) =>  Exception ->  m CGIResultt9MonadCGImMonadIOm Exceptionm CGIResultNOutput a 500 Internal Server Error with information from an Exception.  outputError  outputError :: (MonadCGI m, MonadIO m) => Int -> String -> [String] ->  m CGIResultXMonadCGImMonadIOmIntString[]Stringm CGIResultOutput an error page to the user, with the given HTTP status code in the response. Also logs the error information using logCGI.  outputoutput :: MonadCGI m => String ->  m CGIResultMonadCGImStringm CGIResultOutput a String. The output is assumed to be text/html, encoded using ISO-8859-1. To change this, set the Content-type header using setHeader. o outdegree outdegree :: Graph ->  Table IntGraphTableInt.A table of the count of edges from each node. &outout :: String -> BrowserAction t ()W4String BrowserActiont()  otherwise otherwise :: BoolBoolotherwise is defined as the value True. It helps to make guards more readable. eg.
f x | x < 0     = ...
    | otherwise = ...
 OtherSymbol OtherSymbol :: GeneralCategoryGeneralCategorySo: Symbol, Other OtherPunctuationOtherPunctuation :: GeneralCategory GeneralCategoryPo: Punctuation, Other  OtherNumber OtherNumber :: GeneralCategory~lGeneralCategoryNo: Number, Other  OtherLetter OtherLetter :: GeneralCategoryګGeneralCategoryLo: Letter, Other [osos :: String6-String6The operating system on which the program is running. ordListordList ::  HTML a => [a] -> Html٬HTMLa[]aHtmlordord :: Char -> Int%CharIntCThe Prelude.fromEnum method restricted to the type Data.Char.Char. Ordclass Eq a => Ord aThe Ord class is used for totally ordered datatypes. Instances of Ord can be derived for any user-defined datatype whose constituent types are in Ord. The declared order of the constructors in the data declaration determines the ordering in derived Ord instances. The Ordering datatype allows a single comparison to determine the precise ordering of two objects. Minimal complete definition: either compare or <=. Using compare can be more efficient for complex types. oror :: [Bool] -> Bool[]BoolBoolor returns the disjunction of a Boolean list. For the result to be False, the list must be finite; True, however, results from a True value at a finite index of a finite or infinite list. Moror :: Foldable t => t Bool -> BoolK(FoldablettBoolBoolor returns the disjunction of a container of Bools. For the result to be False, the container must be finite; True, however, results from a True value finitely far from the left end. Loptionaloptional :: Alternative f => f a ->  f (Maybe a)~ AlternativeffafMaybea One or none. optionoption :: Html -> Html HtmlHtml6 openTempFile openTempFile :: FilePath -> String -> IO (FilePath, Handle)FilePathStringIO(,)FilePathHandleThe function creates a temporary file in ReadWrite mode. The created file isn't deleted automatically, so you need to delete it manually. The file is creates with permissions such that only the current user can read/write it. With some exceptions (see below), the file will be created securely in the sense that an attacker should not be able to cause openTempFile to overwrite another file on the filesystem using your credentials, by putting symbolic links (on Unix) in the place where the temporary file is to be created. On Unix the O_CREAT and O_EXCL flags are used to prevent this attack, but note that O_EXCL is sometimes not supported on NFS filesystems, so if you rely on this behaviour it is best to use local filesystems only. ! openTCPPort openTCPPort :: String -> Int ->  IO ConnectionC!StringIntIO ConnectionopenTCPPort uri port establishes a connection to a remote host, using getHostByName which possibly queries the DNS system, hence may trigger a network connection. !openTCPConnectionopenTCPConnection :: BufferType ty => String -> Int -> IO (HandleStream ty) BufferTypetyStringIntIO HandleStreamty! openStream openStream :: HStream bufType => String -> Int -> IO (HandleStream bufType)EHStreambufTypeStringIntIO HandleStreambufType!openSocketStreamopenSocketStream :: HStream bufType => String -> Socket -> IO (HandleStream bufType)cHStreambufTypeStringSocketIO HandleStreambufTypeOpenPunctuationOpenPunctuation :: GeneralCategoryǺGeneralCategoryPs: Punctuation, Open 6openFileopenFile :: FilePath -> IOMode ->  IO HandledAFilePathIOModeIOHandle/Computation openFile file mode allocates and returns a new, open handle to manage the file file. It manages input if mode is ReadMode, output if mode is WriteMode or AppendMode, and both input and output if mode is ReadWriteMode. If the file does not exist and it is opened for output, it should be created as a new file. If mode is WriteMode 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 openFile with mode WriteMode unless it is subsequently written to successfully. The handle is positioned at the end of the file if mode is AppendMode, 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: Note: if you will be working with files containing binary data, you'll want to be using openBinaryFile. &OpenConnectionOpenConnection :: BrowserEventType tyBrowserEventTypety6openBinaryTempFileopenBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle)FilePathStringIO(,)FilePathHandlejLike openTempFile, but opens the file in binary mode. See openBinaryFile for more comments. 6openBinaryFileopenBinaryFile :: FilePath -> IOMode ->  IO HandleFilePathIOModeIOHandleLike openFile, but open the file in binary mode. On Windows, reading a file in text mode (which is the default) will translate CRLF to LF, and writing will translate LF to CRLF. This is usually what you want with text files. With binary files this is undesirable; also, as usual under Microsoft operating systems, text mode treats control-Z as EOF. Binary mode turns off all special treatment of end-of-line and end-of-file characters. (See also hSetBinaryMode.)  OOBInline OOBInline ::  SocketOption SocketOption5 onException onException :: IO a -> IO b -> IO aaCIOaIObIOaoneofoneof :: [Gen a] -> Gen a[]GenaGenaDon on ::  (b -> b -> c) -> (a -> b) -> a -> a -> cU6bbcabaacz(*) `on` f = \x y -> f x * f y. Typical usage: Data.List.sortBy (compare `on` fst). Algebraic properties:
  • (*) `on` id = (*) (if (*) {, const })
  • ((*) `on` f) `on` g = (*) `on` (f . g)
  • flip on f . flip on g = flip on (g .
    f)
oliveolive :: String Stringolistolist :: Html -> Html_PHtmlHtmlokok :: Result ->  Maybe BoolResultMaybeBoolxOctoberOctober :: MonthMonthN numerator numerator :: Integral a => Ratio a -> axWIntegralaRatioaaExtract the numerator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive. nullURInullURI :: URI=7URI Blank URI 'nullPtrnullPtr :: Ptr aPtra~The constant nullPtr contains a distinguished value of Ptr that is not associated with a valid memory location. ! nullHooks nullHooks :: StreamHooks tyaM StreamHooksty' nullFunPtr nullFunPtr :: FunPtr aFunPtraThe constant nullFunPtr contains a distinguished value of FunPtr that is not associated with a valid memory location. inullnull :: Set a -> BoolvSetaBool$O(1). Is this the empty set? jnullnull :: Seq a -> BoolSeqaBool)O(1). Is this the empty sequence? lnullnull :: Map k a -> BooloMapkaBool~O(1). Is the map empty?
Data.Map.null (empty)           == True
Data.Map.null (singleton 1 'a') == False
nullnull :: [a] -> BoolUC[]aBoolTest whether a list is empty. mnullnull :: IntSet -> BoolIntSetBoolO(1). Is the set empty? nnullnull :: IntMap a -> BoolA+IntMapaBoolO(1). Is the map empty?
Data.IntMap.null (empty)           == True
Data.IntMap.null (singleton 1 'a') == False
enullnull ::  ByteString -> Bool!  ByteStringBool0O(1) Test whether a ByteString is empty. nubBynubBy :: (a -> a -> Bool) -> [a] -> [a]aaBool[]a[]aThe nubBy function behaves just like nub, except it uses a user-supplied equality predicate instead of the overloaded == function. nubnub :: Eq a => [a] -> [a]Eqa[]a[]aThe nub function removes duplicate elements from a list. In particular, it keeps only the first occurrence of each element. (The name nub means `essence'.) It is a special case of nubBy, which allows the programmer to supply their own equality test. nowrapnowrap :: HtmlAttrHtmlAttrxNovemberNovember :: MonthaYMonthi notMember notMember ::  Ord a => a -> Set a -> BoolOrdaaSetaBool0O(log n). Is the element not in the set? l notMember notMember ::  Ord k => k -> Map k a -> BoolwOrdkkMapkaBoolO(log n). Is the key not a member of the map? See also member.
notMember 5 (fromList [(5,'a'), (3,'b')]) == False
notMember 1 (fromList [(5,'a'), (3,'b')]) == True
m notMember notMember :: Int -> IntSet -> BoolIntIntSetBool3O(min(n,W)). Is the element not in the set? n notMember notMember :: Key -> IntMap a -> Boolx]KeyIntMapaBoolO(log n). Is the key not a member of the map?
notMember 5 (fromList [(5,'a'), (3,'b')]) == False
notMember 1 (fromList [(5,'a'), (3,'b')]) == True
x noTimeDiff noTimeDiff :: TimeDifflaTimeDiffnull time difference. NothingNothing :: Maybe aMaybeanotElemnotElem :: Eq a => a -> [a] -> BoolB$Eqaa[]aBool/notElem is the negation of elem. MnotElemnotElem :: (Foldable t, Eq a) => a -> t a -> BoolFoldabletEqaataBool/notElem is the negation of elem. enotElemnotElem :: Word8 ->  ByteString -> BoolWord8 ByteStringBool9O(n) notElem is the inverse of elem  NotConnected NotConnected ::  SocketStatus@1 SocketStatus NotAssigned NotAssigned :: GeneralCategoryGeneralCategoryCn: Other, Not Assigned  notnot :: Bool -> BoolBoolBoolBoolean "not"  NoSocketType NoSocketType ::  SocketTypedW SocketTypenoshadenoshade :: HtmlAttrHtmlAttrxnormalizeTimeDiffnormalizeTimeDiff :: TimeDiff -> TimeDiff$ TimeDiffTimeDiff+converts a time difference to normal form. normalizePathSegmentsnormalizePathSegments :: String -> StringStringString8Path segment normalization; cf. RFC3986 section 6.2.2.4 normalizeEscapenormalizeEscape :: String -> Stringo\StringString4Encoding normalization; cf. RFC3986 section 6.2.2.2  normalizeCase normalizeCase :: String -> String StringStringdCase normalization; cf. RFC3986 section 6.2.2.1 NOTE: authority case normalization is not performed noresizenoresize :: HtmlAttrHtmlAttr9NoRepNoRep :: DataRepDataRep&NoProxyNoProxy :: Proxy91ProxyDon't use a proxy. 7NonTerminationNonTermination ::  Exception Exception~The current thread is stuck in an infinite loop. This exception may or may not be thrown when the program is non-terminating. 5NonTerminationNonTermination :: NonTerminationoNonTermination5NonTerminationdata NonTerminationnonStrictRelativeTononStrictRelativeTo :: URI -> URI ->  Maybe URIM2URIURIMaybeURIJReturns a new URI which represents the value of the first URI interpreted as relative to the second URI. For example:
"foo" `relativeTo` "http://bar.org/" = "http://bar.org/foo"
"http:foo" `nonStrictRelativeTo` "http://bar.org/" = "http://bar.org/foo"
Algorithm from RFC3986 [3], section 5.2.2 NonSpacingMarkNonSpacingMark :: GeneralCategoryGeneralCategoryMn: Mark, Non-Spacing 7 NoMethodError NoMethodError :: String ->  ExceptioniString ExceptionAn attempt was made to invoke a class method which has no definition in this instance, and there was no default definition given in the class declaration. GHC issues a warning when you compile an instance which has missing methods. 5 NoMethodError NoMethodError :: String ->  NoMethodErrorString NoMethodError5 NoMethodErrordata  NoMethodErrornoHtmlnoHtml :: HtmlYRHtmlnohrefnohref :: HtmlAttrHtmlAttrnoframesnoframes :: Html -> HtmlHtmlHtmlNoDelayNoDelay ::  SocketOptionC4 SocketOptionkNodeNode :: a -> Forest a -> Tree aaForestaTreea6 NoBuffering NoBuffering ::  BufferMode BufferMode#buffering is disabled if possible. @nmergeIOnmergeIO :: [[a]] -> IO [a]v[][]aIO[]aNI_NUMERICSERVNI_NUMERICSERV ::  NameInfoFlag NameInfoFlagNI_NUMERICHOSTNI_NUMERICHOST ::  NameInfoFlagO@ NameInfoFlag NI_NOFQDN NI_NOFQDN ::  NameInfoFlag NameInfoFlag NI_NAMEREQD NI_NAMEREQD ::  NameInfoFlag NameInfoFlagNI_DGRAMNI_DGRAM ::  NameInfoFlagG8 NameInfoFlag{ nextnext :: RandomGen g => g -> (Int, g) RandomGengg(,)IntgS newUnique newUnique ::  IO Unique IOUniqueCreates a new object of type Unique. The value returned will not compare equal to any other value of type Unique returned by previous calls to newUnique. There is no limit on the number of times newUnique may be called. OnewSTRefnewSTRef :: a -> ST s (STRef s a)tVaSTsSTRefsa5Build a new STRef in the current state thread { newStdGen newStdGen ::  IO StdGenIOStdGenxApplies split to the current global random generator, updates it with one of the results, and returns the other.  newStablePtr newStablePtr :: a -> IO (StablePtr a)aIO StablePtra>Create a stable pointer referring to the given Haskell value. #newIORefnewIORef :: a ->  IO (IORef a)raIOIORefaBuild a new IORef (newForeignPtrEnv newForeignPtrEnv :: FinalizerEnvPtr env a -> Ptr env -> Ptr a -> IO (ForeignPtr a)>FinalizerEnvPtrenvaPtrenvPtraIO ForeignPtraThis variant of newForeignPtr adds a finalizer that expects an environment in addition to the finalized pointer. The environment that will be passed to the finalizer is fixed by the second argument to newForeignPtrEnv. (newForeignPtr_newForeignPtr_ :: Ptr a -> IO (ForeignPtr a)PtraIO ForeignPtraTurns a plain memory reference into a foreign pointer that may be associated with finalizers by using addForeignPtrFinalizer. ( newForeignPtr newForeignPtr :: FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)0 FinalizerPtraPtraIO ForeignPtra(Turns a plain memory reference into a foreign pointer, and associates a finaliser with the reference. The finaliser will be executed after the last reference to the foreign object is dropped. Note that there is no guarantee on how soon the finaliser is executed after the last reference was dropped; this depends on the details of the Haskell storage manager. Indeed, there is no guarantee that the finalizer is executed at all; a program may exit with finalizers outstanding. (This is true of GHC, other implementations may give stronger guarantees). & newForeignPtr newForeignPtr :: Ptr a -> IO () -> IO (ForeignPtr a)PtraIO()IO ForeignPtraTurns a plain memory reference into a foreign object by associating a finalizer - given by the monadic operation - with the reference. The finalizer will be executed after the last reference to the foreign object is dropped. Note that there is no guarantee on how soon the finalizer is executed after the last reference was dropped; this depends on the details of the Haskell storage manager. The only guarantee is that the finalizer runs before the program terminates.  newCookie newCookie :: String -> String -> CookieJ/StringStringCookieConstruct a cookie with only name and value set. This client will expire when the browser sessions ends, will only be sent to the server and path which set it and may be sent using any means. newnew :: (key -> key -> Bool) -> (key -> Int32) -> IO (HashTable key val)keykeyBoolkeyInt32IO HashTablekeyvalCreates a new hash table. The following property should hold for the eq and hash functions passed to new:
eq A B  =>  hash A == hash B
 networkName networkName ::  NetworkEntry ->  NetworkName NetworkEntry NetworkName NetworkNametype  NetworkName = String7 networkFamily networkFamily ::  NetworkEntry -> Family NetworkEntryFamily NetworkEntry  NetworkEntry ::  NetworkName ->  [NetworkName] -> Family ->  NetworkAddr ->  NetworkEntryO NetworkName[] NetworkNameFamily NetworkAddr NetworkEntry NetworkEntrydata  NetworkEntrynetworkAliasesnetworkAliases ::  NetworkEntry ->  [NetworkName][7 NetworkEntry[] NetworkNamenetworkAddressnetworkAddress ::  NetworkEntry ->  NetworkAddr NetworkEntry NetworkAddr NetworkAddrtype  NetworkAddr = CULong"7NestedAtomicallyNestedAtomically ::  Exception|p ExceptionThe runtime detected an attempt to nest one STM transaction inside another one, presumably due to the use of unsafePeformIO with atomically. 5NestedAtomicallyNestedAtomically :: NestedAtomicallyxeNestedAtomically5NestedAtomicallydata NestedAtomically negotiate negotiate :: Acceptable a => [a] -> Maybe (Accept a) -> [a]m1 Acceptablea[]aMaybeAccepta[]anavynavy :: StringString NameInfoFlagdata  NameInfoFlagnamename :: String -> HtmlAttrA,StringHtmlAttrmzeromzero :: MonadPlus m => m a MonadPlusmma@ myThreadId myThreadId ::  IO ThreadIdIOThreadId>Returns the ThreadId of the calling thread (GHC only).  myrecvmyrecv :: Socket -> Int ->  IO StringSocketIntIOStringmultiplemultiple :: HtmlAttrHtmlAttrMmsummsum :: (Foldable t, MonadPlus m) => t (m a) -> m aOFoldablet MonadPlusmtmama@The sum of a collection of actions, generalizing concat. msummsum :: MonadPlus m => [m a] -> m a? MonadPlusm[]mama8This generalizes the list-based concat function. mplusmplus :: MonadPlus m => m a -> m a -> m a MonadPlusmmamamaxMonthdata Month/A month of the year. KMonoidclass Monoid awThe monoid class. A minimal complete definition must supply mempty and mappend, and these should satisfy the monoid laws. xMondayMonday :: Day93Day MonadPlusclass  Monad m =>  MonadPlus m}-Monads that also support choice and failure.  MonadCGIclass  Monad m => MonadCGI mThe class of CGI monads. Most CGI actions can be run in any monad which is an instance of this class, which means that you can use your own monad transformers to add extra functionality. Monadclass Monad mThe Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions. Haskell's do expressions provide a convenient syntax for writing monadic expressions. Minimal complete definition: >>= and return. Instances of Monad should satisfy the following laws:
return a >>= k  ==  k a
m >>= return  ==  m
m >>= (\x -> k x >>= h)  ==  (m >>= k) >>= h
Instances of both Monad and Functor should additionally satisfy the law:
fmap f xs  ==  xs >>= return . f
The instances of Monad for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws. O modifySTRef modifySTRef ::  STRef s a -> (a -> a) -> ST s ()  STRefsaaaSTs()'Mutate the contents of an STRef # modifyIORef modifyIORef :: IORef a -> (a -> a) -> IO ()  IORefaaaIO()'Mutate the contents of an IORef ModifierSymbolModifierSymbol :: GeneralCategory,  GeneralCategorySk: Symbol, Modifier ModifierLetterModifierLetter :: GeneralCategory  GeneralCategoryLm: Letter, Modifier Cmod'mod' ::  Real a => a -> a -> a!  Realaaaa5generalisation of mod to any instance of Real # mkWeakIORef mkWeakIORef :: IORef a -> IO () -> IO (Weak (IORef a))  IORefaIO()IOWeakIORefa.Make a Weak pointer to an IORef  mkTyConApp mkTyConApp :: TyCon ->  [TypeRep] -> TypeRep  TyCon[]TypeRepTypeRep2Applies a type constructor to a sequence of types mkTyConmkTyCon :: String -> TyCon?-StringTyConBuilds a TyCon object representing a type constructor. An implementation of Data.Typeable should ensure that the following holds:
mkTyCon "a" == mkTyCon "a"
9 mkStringType mkStringType :: String -> DataTypedOStringDataType"Constructs the String type 9mkStringConstrmkStringConstr :: DataType -> String -> ConstrDataTypeStringConstr{ mkStdGenmkStdGen :: Int -> StdGenjZIntStdGenThe function mkStdGen provides an alternative way of producing an initial generator, by mapping an Int into a generator. Again, distinct arguments should be likely to produce distinct generators. mkSocketmkSocket :: CInt -> Family ->  SocketType -> ProtocolNumber ->  SocketStatus ->  IO Socket-CIntFamily SocketTypeProtocolNumber SocketStatusIOSocketMkSocketMkSocket :: CInt -> Family ->  SocketType -> ProtocolNumber -> MVar SocketStatus -> Socket"CIntFamily SocketTypeProtocolNumberMVar SocketStatusSocketmkRegexWithOpts mkRegexWithOpts :: String -> Bool -> Bool -> RegexStringBoolBoolRegexvMakes a regular expression, where the multi-line and case-sensitive options can be changed from the default settings. mkRegexmkRegex :: String -> RegexzStringRegexMakes a regular expression with the default options (multi-line, case-sensitive). The syntax of regular expressions is otherwise that of egrep (i.e. POSIX "extended" regular expressions). BmkPolarmkPolar :: RealFloat a => a -> a ->  Complex a RealFloataaaComplexaDForm a complex number from polar components of magnitude and phase. 9 mkNorepType mkNorepType :: String -> DataTypevStringDataType;Constructs a non-representation for a non-presentable type 9 mkIntType mkIntType :: String -> DataType,StringDataTypeConstructs the Int type 9 mkIntConstr mkIntConstr :: DataType -> Integer -> ConstrDataTypeIntegerConstr mkHtmlTable mkHtmlTable :: BlockTable (Int -> Int -> Html) ->  HtmlTablen@ BlockTableIntIntHtml HtmlTablemkFunTymkFunTy :: TypeRep -> TypeRep -> TypeRepTypeRepTypeRepTypeRepeA special case of mkTyConApp, which applies the function type constructor to a pair of types. 9 mkFloatType mkFloatType :: String -> DataTypeStringDataType!Constructs the Float type 9 mkFloatConstr mkFloatConstr :: DataType -> Double -> ConstrdGDataTypeDoubleConstr9 mkDataType mkDataType :: String -> [Constr] -> DataTypeString[]ConstrDataType!Constructs an algebraic datatype &MkCookieMkCookie :: String -> String -> String ->  Maybe String ->  Maybe String ->  Maybe String -> CookieStringStringStringMaybeStringMaybeStringMaybeStringCookie9mkConstr mkConstr :: DataType -> String -> [String] -> Fixity -> ConstrDataTypeString[]StringFixityConstrConstructs a constructor mkAppTymkAppTy :: TypeRep -> TypeRep -> TypeRepoQTypeRepTypeRepTypeRep&Adds a TypeRep argument to a TypeRep. lminViewWithKeyminViewWithKey :: Map k a -> Maybe ((k, a), Map k a):MapkaMaybe(,)(,)kaMapkaO(log n). Retrieves the minimal (key,value) pair of the map, and the map stripped of that element, or Nothing if passed an empty map.
minViewWithKey (fromList [(5,"a"), (3,"b")]) == Just ((3,"b"), singleton 5 "a")
minViewWithKey empty == Nothing
nminViewWithKeyminViewWithKey :: IntMap a -> Maybe ((Key, a), IntMap a)IntMapaMaybe(,)(,)KeyaIntMapaO(log n). Retrieves the minimal (key,value) pair of the map, and the map stripped of that element, or Nothing if passed an empty map.
minViewWithKey (fromList [(5,"a"), (3,"b")]) == Just ((3,"b"), singleton 5 "a")
minViewWithKey empty == Nothing
iminViewminView :: Set a -> Maybe (a, Set a)!]!SetaMaybe(,)aSetaO(log n). Retrieves the minimal key of the set, and the set stripped of that element, or Nothing if passed an empty set. lminViewminView :: Map k a -> Maybe (a, Map k a)"f"MapkaMaybe(,)aMapka O(log n). Retrieves the value associated with minimal key of the map, and the map stripped of that element, or Nothing if passed an empty map.
minView (fromList [(5,"a"), (3,"b")]) == Just ("b", singleton 5 "a")
minView empty == Nothing
mminViewminView :: IntSet -> Maybe (Int, IntSet)$#IntSetMaybe(,)IntIntSetO(min(n,W)). Retrieves the minimal key of the set, and the set stripped of that element, or Nothing if passed an empty set. nminViewminView :: IntMap a -> Maybe (a, IntMap a)3%%IntMapaMaybe(,)aIntMapaO(log n). Retrieves the minimal key of the map, and the map stripped of that element, or Nothing if passed an empty map. 'minusPtrminusPtr :: Ptr a -> Ptr b -> Int0&&PtraPtrbIntComputes the offset required to get from the second to the first argument. We have
p2 == p1 `plusPtr` (p2 `minusPtr` p1)
 minimumBy minimumBy :: (a -> a -> Ordering) -> [a] -> a?''aaOrdering[]aaThe minimumBy 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. M minimumBy minimumBy :: Foldable t => (a -> a -> Ordering) -> t a -> a(f(FoldabletaaOrderingtaaZThe least element of a non-empty structure with respect to the given comparison function. minimumminimum ::  Ord a => [a] -> aT);)Orda[]aaminimum returns the minimum value from a list, which must be non-empty, finite, and of an ordered type. It is a special case of minimumBy, which allows the programmer to supply their own comparison function. Mminimumminimum :: (Foldable t, Ord a) => t a -> a**FoldabletOrdataa,The least element of a non-empty structure. eminimumminimum ::  ByteString -> Word8C+-+ ByteStringWord8O(n) minimum returns the minimum value from a ByteString This function will fuse. An exception will be thrown in the case of an empty ByteString. minmin ::  Ord a => a -> a -> aO,9,OrdaaaaCMicrotype Micro = Fixed E6,methodmethod :: String -> HtmlAttr,,StringHtmlAttrmetameta :: Html"--Html@mergeIOmergeIO :: [a] -> [a] -> IO [a]-y-[]a[]aIO[]amenumenu :: String -> [Html] -> Html.-String[]HtmlHtmlKmemptymempty ::  Monoid a => a^.M.Monoidaaimembermember ::  Ord a => a -> Set a -> Bool..OrdaaSetaBool,O(log n). Is the element in the set? lmembermember ::  Ord k => k -> Map k a -> Bool/d/OrdkkMapkaBoolO(log n). Is the key a member of the map? See also notMember.
member 5 (fromList [(5,'a'), (3,'b')]) == True
member 1 (fromList [(5,'a'), (3,'b')]) == False
mmembermember :: Int -> IntSet -> Bool00IntIntSetBool6O(min(n,W)). Is the value a member of the set? nmembermember :: Key -> IntMap a -> BoolU1:1KeyIntMapaBoolO(min(n,W)). Is the key a member of the map?
member 5 (fromList [(5,'a'), (3,'b')]) == True
member 1 (fromList [(5,'a'), (3,'b')]) == False
Kmconcatmconcat ::  Monoid a => [a] -> aa2E2Monoida[]aa maybeToList maybeToList :: Maybe a -> [a]22Maybea[]aThe maybeToList function returns an empty list when given Nothing or a singleton list when not given Nothing. maybe maybe :: b -> (a -> b) -> Maybe a -> b33babMaybeab The maybe function takes a default value, a function, and a Maybe value. If the Maybe value is Nothing, the function returns the default value. Otherwise, it applies the function to the value inside the Just and returns the result. Maybedata Maybe a 5-The Maybe type encapsulates an optional value. A value of type Maybe a either contains a value of type a (represented as Just a), or it is empty (represented as Nothing). Using Maybe is a good way to deal with errors or exceptional cases without resorting to drastic measures such as error. The Maybe type is also a monad. It is a simple kind of error monad, where all errors are represented by Nothing. A richer error monad can be built using the Data.Either.Either type. xMayMay :: Monthn7f7MonthlmaxViewWithKeymaxViewWithKey :: Map k a -> Maybe ((k, a), Map k a)87MapkaMaybe(,)(,)kaMapkaO(log n). Retrieves the maximal (key,value) pair of the map, and the map stripped of that element, or Nothing if passed an empty map.
maxViewWithKey (fromList [(5,"a"), (3,"b")]) == Just ((5,"a"), singleton 3 "b")
maxViewWithKey empty == Nothing
nmaxViewWithKeymaxViewWithKey :: IntMap a -> Maybe ((Key, a), IntMap a)99IntMapaMaybe(,)(,)KeyaIntMapaO(log n). Retrieves the maximal (key,value) pair of the map, and the map stripped of that element, or Nothing if passed an empty map.
maxViewWithKey (fromList [(5,"a"), (3,"b")]) == Just ((5,"a"), singleton 3 "b")
maxViewWithKey empty == Nothing
imaxViewmaxView :: Set a -> Maybe (a, Set a)`;6;SetaMaybe(,)aSetaO(log n). Retrieves the maximal key of the set, and the set stripped of that element, or Nothing if passed an empty set. lmaxViewmaxView :: Map k a -> Maybe (a, Map k a)o<?<MapkaMaybe(,)aMapkaO(log n). Retrieves the value associated with maximal key of the map, and the map stripped of that element, or Nothing if passed an
maxView (fromList [(5,"a"), (3,"b")]) == Just ("a", singleton 3 "b")
maxView empty == Nothing
mmaxViewmaxView :: IntSet -> Maybe (Int, IntSet)==IntSetMaybe(,)IntIntSetO(min(n,W)). Retrieves the maximal key of the set, and the set stripped of that element, or Nothing if passed an empty set. nmaxViewmaxView :: IntMap a -> Maybe (a, IntMap a)?>IntMapaMaybe(,)aIntMapaO(log n). Retrieves the maximal key of the map, and the map stripped of that element, or Nothing if passed an empty map.  MaxSegment MaxSegment ::  SocketOption?? SocketOptionmaxListenQueuemaxListenQueue :: Int&@ @Int maxlength maxlength :: Int -> HtmlAttr@t@IntHtmlAttr maximumBy maximumBy :: (a -> a -> Ordering) -> [a] -> aA@aaOrdering[]aaThe maximumBy 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. M maximumBy maximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> agB8BFoldabletaaOrderingtaa\The largest element of a non-empty structure with respect to the given comparison function. maximummaximum ::  Ord a => [a] -> a(CCOrda[]aamaximum returns the maximum value from a list, which must be non-empty, finite, and of an ordered type. It is a special case of maximumBy, which allows the programmer to supply their own comparison function. Mmaximummaximum :: (Foldable t, Ord a) => t a -> aD`DFoldabletOrdataa.The largest element of a non-empty structure. emaximummaximum ::  ByteString -> Word8EE ByteStringWord8O(n) maximum returns the maximum value from a ByteString This function will fuse. An exception will be thrown in the case of an empty ByteString. 9maxConstrIndexmaxConstrIndex :: DataType -> ConIndex4FFDataTypeConIndex<Gets the maximum constructor index of an algebraic datatype maxmax ::  Ord a => a -> a -> aFFOrdaaaa MathSymbol MathSymbol :: GeneralCategory/GGGeneralCategorySm: Symbol, Math  matchRegexAll matchRegexAll :: Regex -> String -> (Maybe (String, String, String, [String])HGRegexStringMaybe(,,,)StringStringString[]StringYMatch a regular expression against a string, returning more information about the match.  matchRegex matchRegex :: Regex -> String -> Maybe [String]IHRegexStringMaybe[]String,Match a regular expression against a string maroonmaroon :: StringlIcIString markupTag markupTag ::  HtmlElement -> StringII HtmlElementString markupContent markupContent ::  HtmlElement -> HtmlHJ2J HtmlElementHtml markupAttrs markupAttrs ::  HtmlElement ->  [HtmlAttr]JJ HtmlElement[]HtmlAttr marginwidth marginwidth :: Int -> HtmlAttr(KKIntHtmlAttr marginheight marginheight :: Int -> HtmlAttrK|KIntHtmlAttrxMarchMarch :: MonthKKMonthl mapWithKey mapWithKey ::  (k -> a -> b) -> Map k a -> Map k b^L6LkabMapkaMapkbO(n). Map a function over all values in the map.
let f key x = (show key) ++ ":" ++ x
mapWithKey f (fromList [(5,"a"), (3,"b")]) == fromList [(3, "3:b"), (5, "5:a")]
n mapWithKey mapWithKey :: (Key -> a -> b) -> IntMap a -> IntMap bMMKeyabIntMapaIntMapbO(n). Map a function over all values in the map.
let f key x = (show key) ++ ":" ++ x
mapWithKey f (fromList [(5,"a"), (3,"b")]) == fromList [(3, "3:b"), (5, "5:a")]
Kmappendmappend ::  Monoid a => a -> a -> aNNMonoidaaaai mapMonotonic mapMonotonic :: (a -> b) -> Set a -> Set bgOHOabSetaSetbMO(n). The mapMonotonic f s == map f s, but works only when f is monotonic. The precondition is not checked. Semi-formally, we have:
and [x < y ==> f x < f y | x <- ls, y <- ls] 
                    ==> mapMonotonic f s == map f s
    where ls = toList s
lmapMaybeWithKeymapMaybeWithKey ::  Ord k => (k -> a -> Maybe b) -> Map k a -> Map k btQ9QOrdkkaMaybebMapkaMapkbO(n). Map keys/values and collect the Just results.
let f k _ = if k < 5 then Just ("key : " ++ (show k)) else Nothing
mapMaybeWithKey f (fromList [(5,"a"), (3,"b")]) == singleton 3 "key : 3"
nmapMaybeWithKeymapMaybeWithKey :: (Key -> a -> Maybe b) -> IntMap a -> IntMap bSRKeyaMaybebIntMapaIntMapbO(n). Map keys/values and collect the Just results.
let f k _ = if k < 5 then Just ("key : " ++ (show k)) else Nothing
mapMaybeWithKey f (fromList [(5,"a"), (3,"b")]) == singleton 3 "key : 3"
mapMaybemapMaybe :: (a -> Maybe b) -> [a] -> [b]lTFTaMaybeb[]a[]bIThe mapMaybe function is a version of map which can throw out elements. In particular, the functional argument returns something of type Maybe b. If this is Nothing, no element is added on to the result list. If it just Just b, then b is included in the result list. lmapMaybemapMaybe ::  Ord k => (a -> Maybe b) -> Map k a -> Map k b_V'VOrdkaMaybebMapkaMapkbO(n). Map values and collect the Just results.
let f x = if x == "a" then Just "new a" else Nothing
mapMaybe f (fromList [(5,"a"), (3,"b")]) == singleton 5 "new a"
nmapMaybemapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap bWWaMaybebIntMapaIntMapbO(n). Map values and collect the Just results.
let f x = if x == "a" then Just "new a" else Nothing
mapMaybe f (fromList [(5,"a"), (3,"b")]) == singleton 5 "new a"
MmapM_mapM_ :: (Foldable t, Monad m) =>  (a -> m b) -> t a -> m ()%YXFoldabletMonadmambtam()xMap each element of a structure to a monadic action, evaluate these actions from left to right, and ignore the results. mapM_mapM_ ::  Monad m =>  (a -> m b) -> [a] -> m ().ZZMonadmamb[]am()SmapM_ f is equivalent to sequence_ . map f. RmapMmapM :: (Traversable t, Monad m) =>  (a -> m b) -> t a -> m (t b)9[Z TraversabletMonadmambtamtbmapMmapM ::  Monad m =>  (a -> m b) -> [a] -> m [b][[Monadmamb[]am[]bQmapM f is equivalent to sequence . map f. l mapKeysWith  mapKeysWith ::  Ord k2 =>  (a -> a -> a) ->  (k1 -> k2) -> Map k1 a -> Map k2 a\\Ordk2aaak1k2Mapk1aMapk2aO(n*log n). mapKeysWith c f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the associated values will be combined using c.
mapKeysWith (++) (\ _ -> 1) (fromList [(1,"b"), (2,"a"), (3,"d"), (4,"c")]) == singleton 1 "cdab"
mapKeysWith (++) (\ _ -> 3) (fromList [(1,"b"), (2,"a"), (3,"d"), (4,"c")]) == singleton 3 "cdab"
lmapKeysMonotonicmapKeysMonotonic ::  (k1 -> k2) -> Map k1 a -> Map k2 a_g_k1k2Mapk1aMapk2awO(n). mapKeysMonotonic f s == mapKeys f s, but works only when f is strictly monotonic. That is, for any values x and y, if x < y then f x < f y. The precondition is not checked. Semi-formally, we have:
and [x < y ==> f x < f y | x <- ls, y <- ls] 
                    ==> mapKeysMonotonic f s == mapKeys f s
    where ls = keys s
This means that f maps distinct original keys to distinct resulting keys. This function has better performance than mapKeys.
mapKeysMonotonic (\ k -> k * 2) (fromList [(5,"a"), (3,"b")]) == fromList [(6, "b"), (10, "a")]
valid (mapKeysMonotonic (\ k -> k * 2) (fromList [(5,"a"), (3,"b")])) == True
valid (mapKeysMonotonic (\ _ -> 1)     (fromList [(5,"a"), (3,"b")])) == False
lmapKeysmapKeys ::  Ord k2 =>  (k1 -> k2) -> Map k1 a -> Map k2 acvcOrdk2k1k2Mapk1aMapk2aDO(n*log n). mapKeys f s is the map obtained by applying f to each key of s. The size of the result may be smaller if f maps two or more distinct keys to the same new key. In this case the value at the smallest of these keys is retained.
mapKeys (+ 1) (fromList [(5,"a"), (3,"b")])                        == fromList [(4, "b"), (6, "a")]
mapKeys (\ _ -> 1) (fromList [(1,"b"), (2,"a"), (3,"d"), (4,"c")]) == singleton 1 "c"
mapKeys (\ _ -> 3) (fromList [(1,"b"), (2,"a"), (3,"d"), (4,"c")]) == singleton 3 "c"
7 mapException mapException :: (Exception -> Exception) -> a -> a~f]f Exception ExceptionaaoThis function maps one exception into another as proposed in the paper "A semantics for imprecise exceptions". 5 mapException mapException ::  (Exception e1, Exception e2) =>  (e1 -> e2) -> a -> agng Exceptione1 Exceptione2e1e2aaoThis function maps one exception into another as proposed in the paper "A semantics for imprecise exceptions". lmapEitherWithKeymapEitherWithKey ::  Ord k => (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c)hhOrdkkaEitherbcMapka(,)MapkbMapkcO(n). Map keys/values and separate the Left and Right results.
let f k a = if k < 5 then Left (k * 2) else Right (a ++ a)
mapEitherWithKey f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (fromList [(1,2), (3,6)], fromList [(5,"aa"), (7,"zz")])

mapEitherWithKey (\_ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (empty, fromList [(1,"x"), (3,"b"), (5,"a"), (7,"z")])
nmapEitherWithKeymapEitherWithKey :: (Key -> a -> Either b c) -> IntMap a -> (IntMap b, IntMap c)kCkKeyaEitherbcIntMapa(,)IntMapbIntMapcO(n). Map keys/values and separate the Left and Right results.
let f k a = if k < 5 then Left (k * 2) else Right (a ++ a)
mapEitherWithKey f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (fromList [(1,2), (3,6)], fromList [(5,"aa"), (7,"zz")])

mapEitherWithKey (\_ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (empty, fromList [(1,"x"), (3,"b"), (5,"a"), (7,"z")])
l mapEither mapEither ::  Ord k => (a -> Either b c) -> Map k a -> (Map k b, Map k c)nmOrdkaEitherbcMapka(,)MapkbMapkcO(n). Map values and separate the Left and Right results.
let f a = if a < "c" then Left a else Right a
mapEither f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (fromList [(3,"b"), (5,"a")], fromList [(1,"x"), (7,"z")])

mapEither (\ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (empty, fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
n mapEither mapEither :: (a -> Either b c) -> IntMap a -> (IntMap b, IntMap c)sp-paEitherbcIntMapa(,)IntMapbIntMapcO(n). Map values and separate the Left and Right results.
let f a = if a < "c" then Left a else Right a
mapEither f (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (fromList [(3,"b"), (5,"a")], fromList [(1,"x"), (7,"z")])

mapEither (\ a -> Right a) (fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
    == (empty, fromList [(5,"a"), (3,"b"), (1,"x"), (7,"z")])
 mapAndUnzipM mapAndUnzipM ::  Monad m => (a -> m (b, c)) -> [a] ->  m ([b], [c])rrMonadmam(,)bc[]am(,)[]b[]cThe mapAndUnzipM function maps its first argument over a list, returning the result as a pair of lists. This function is mainly used with complicated data structures or a state-transforming monad. lmapAccumWithKey mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b ->  (a, Map k c)wt5takb(,)acaMapkb(,)aMapkcAO(n). The function mapAccumWithKey threads an accumulating argument through the map in ascending order of keys.
let f a k b = (a ++ " " ++ (show k) ++ "-" ++ b, b ++ "X")
mapAccumWithKey f "Everything:" (fromList [(5,"a"), (3,"b")]) == ("Everything: 3-b 5-a", fromList [(3, "bX"), (5, "aX")])
nmapAccumWithKey mapAccumWithKey :: (a -> Key -> b -> (a, c)) -> a -> IntMap b ->  (a, IntMap c)vNvaKeyb(,)acaIntMapb(,)aIntMapcJO(n). The function mapAccumWithKey threads an accumulating argument through the map in ascending order of keys.
let f a k b = (a ++ " " ++ (show k) ++ "-" ++ b, b ++ "X")
mapAccumWithKey f "Everything:" (fromList [(5,"a"), (3,"b")]) == ("Everything: 3-b 5-a", fromList [(3, "bX"), (5, "aX")])
R mapAccumR  mapAccumR :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)xfx Traversabletab(,)acatb(,)atcThe mapAccumR function behaves like a combination of fmap and foldr; it applies a function to each element of a structure, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new structure.  mapAccumR  mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] ->  (acc, [y])}z>zaccx(,)accyacc[]x(,)acc[]y The mapAccumR function behaves like a combination of map and foldr; 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. e mapAccumR  mapAccumR :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)m| |accWord8(,)accWord8acc ByteString(,)acc ByteStringThe mapAccumR function behaves like a combination of map and foldr; it applies a function to each element of a ByteString, passing an accumulating parameter from right to left, and returning a final value of this accumulator together with the new ByteString. R mapAccumL  mapAccumL :: Traversable t => (a -> b -> (a, c)) -> a -> t b -> (a, t c)V~~ Traversabletab(,)acatb(,)atcThe mapAccumL function behaves like a combination of fmap and foldl; it applies a function to each element of a structure, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new structure.  mapAccumL  mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] ->  (acc, [y])-accx(,)accyacc[]x(,)acc[]y The mapAccumL function behaves like a combination of map and foldl; 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. e mapAccumL  mapAccumL :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)ЁaccWord8(,)accWord8acc ByteString(,)acc ByteStringThe mapAccumL function behaves like a combination of map and foldl; it applies a function to each element of a ByteString, passing an accumulating parameter from left to right, and returning a final value of this accumulator together with the new list. lmapAccum mapAccum :: (a -> b -> (a, c)) -> a -> Map k b ->  (a, Map k c)ab(,)acaMapkb(,)aMapkcO(n). The function mapAccum threads an accumulating argument through the map in ascending order of keys.
let f a b = (a ++ b, b ++ "X")
mapAccum f "Everything: " (fromList [(5,"a"), (3,"b")]) == ("Everything: ba", fromList [(3, "bX"), (5, "aX")])
nmapAccum mapAccum :: (a -> b -> (a, c)) -> a -> IntMap b ->  (a, IntMap c)ab(,)acaIntMapb(,)aIntMapcO(n). The function mapAccum threads an accumulating argument through the map in ascending order of keys.
let f a b = (a ++ b, b ++ "X")
mapAccum f "Everything: " (fromList [(5,"a"), (3,"b")]) == ("Everything: ba", fromList [(3, "bX"), (5, "aX")])
imapmap :: (Ord a, Ord b) => (a -> b) -> Set a -> Set bvCOrdaOrdbabSetaSetbO(n*log n). map f s is the set obtained by applying f to each element of s. It's worth noting that the size of the result may be smaller if, for some (x,y), x /= y && f x == f y lmapmap :: (a -> b) -> Map k a -> Map k bňabMapkaMapkbO(n). Map a function over all values in the map.
map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]
mapmap :: (a -> b) -> [a] -> [b]ωab[]a[]bmap f xs is the list obtained by applying f to each element of xs, i.e.,
map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn]
map f [x1, x2, ...] == [f x1, f x2, ...]
mmapmap ::  (Int -> Int) -> IntSet -> IntSet;IntIntIntSetIntSetO(n*min(n,W)). map f s is the set obtained by applying f to each element of s. It's worth noting that the size of the result may be smaller if, for some (x,y), x /= y && f x == f y nmapmap :: (a -> b) -> IntMap a -> IntMap babIntMapaIntMapbO(n). Map a function over all values in the map.
map (++ "x") (fromList [(5,"a"), (3,"b")]) == fromList [(3, "bx"), (5, "ax")]
emapmap :: (Word8 -> Word8) ->  ByteString ->  ByteStringڍWord8Word8 ByteString ByteStringO(n) map f xs is the ByteString obtained by applying f to each element of xs. This function is subject to array fusion. lMapdata Map k a1A Map from keys k to values a. Lmanymany :: Alternative f => f a -> f [a]W, Alternativeffaf[]aZero or more. (mallocForeignPtrBytesmallocForeignPtrBytes :: Int -> IO (ForeignPtr a)ԏIntIO ForeignPtraThis function is similar to mallocForeignPtr, except that the size of the memory required is given explicitly as a number of bytes. (mallocForeignPtrArray0mallocForeignPtrArray0 :: Storable a => Int -> IO (ForeignPtr a)+StorableaIntIO ForeignPtraThis function is similar to Foreign.Marshal.Array.mallocArray0, but yields a memory area that has a finalizer attached that releases the memory area. As with mallocForeignPtr, it is not guaranteed that the block of memory was allocated by Foreign.Marshal.Alloc.malloc. (mallocForeignPtrArraymallocForeignPtrArray :: Storable a => Int -> IO (ForeignPtr a)StorableaIntIO ForeignPtraThis function is similar to Foreign.Marshal.Array.mallocArray, but yields a memory area that has a finalizer attached that releases the memory area. As with mallocForeignPtr, it is not guaranteed that the block of memory was allocated by Foreign.Marshal.Alloc.malloc. (mallocForeignPtrmallocForeignPtr :: Storable a => IO (ForeignPtr a)aStorableaIO ForeignPtraAllocate some memory and return a ForeignPtr to it. The memory will be released automatically when the ForeignPtr is discarded. mallocForeignPtr is equivalent to
do { p <- malloc; newForeignPtr finalizerFree p }
although it may be implemented differently internally: you may not assume that the memory returned by mallocForeignPtr has been allocated with Foreign.Marshal.Alloc.malloc. GHC notes: mallocForeignPtr has a heavily optimised implementation in GHC. It uses pinned memory in the garbage collected heap, so the ForeignPtr does not require a finalizer to free the memory. Use of mallocForeignPtr and associated functions is strongly recommended in preference to newForeignPtr with a finalizer. pmakeRelativeToCurrentDirectorymakeRelativeToCurrentDirectory :: FilePath ->  IO FilePath( FilePathIOFilePath+makeRelative the current directory. B magnitude magnitude :: RealFloat a =>  Complex a -> aӘ RealFloataComplexaa/The nonnegative magnitude of a complex number. LowercaseLetterLowercaseLetter :: GeneralCategoryfTGeneralCategoryLl: Letter, Lowercase 7LossOfPrecisionLossOfPrecision :: ArithExceptionޙ͙ArithException5LossOfPrecisionLossOfPrecision :: ArithException@/ArithExceptionFlooploop :: ArrowLoop a => a (b, d) (c, d) -> a b cٚ ArrowLoopaa(,)bd(,)cdabcl lookupIndex lookupIndex ::  Ord k => k -> Map k a ->  Maybe IntqFOrdkkMapkaMaybeIntO(log n). Lookup the index of a key. The index is a number from 0 up to, but not including, the size of the map.
isJust (lookupIndex 2 (fromList [(5,"a"), (3,"b")]))   == False
fromJust (lookupIndex 3 (fromList [(5,"a"), (3,"b")])) == 0
fromJust (lookupIndex 5 (fromList [(5,"a"), (3,"b")])) == 1
isJust (lookupIndex 6 (fromList [(5,"a"), (3,"b")]))   == False
llookuplookup ::  Ord k => k -> Map k a -> Maybe aeOrdkkMapkaMaybeaO(log n). Lookup the value at a key in the map. The function will return the corresponding value as (Just value), or Nothing if the key isn't in the map. An example of using lookup:
import Prelude hiding (lookup)
import Data.Map

employeeDept = fromList([("John","Sales"), ("Bob","IT")])
deptCountry = fromList([("IT","USA"), ("Sales","France")])
countryCurrency = fromList([("USA", "Dollar"), ("France", "Euro")])

employeeCurrency :: String -> Maybe String
employeeCurrency name = do
    dept <- lookup name employeeDept
    country <- lookup dept deptCountry
    lookup country countryCurrency

main = do
    putStrLn $ "John's currency: " ++ (show (employeeCurrency "John"))
    putStrLn $ "Pete's currency: " ++ (show (employeeCurrency "Pete"))
The output of this program:
John's currency: Just "Euro"
Pete's currency: Nothing
lookuplookup :: Eq a => a -> [(a, b)] -> Maybe b~Eqaa[](,)abMaybebIlookup key assocs looks up a key in an association list. nlookuplookup :: Key -> IntMap a -> Maybe aqPKeyIntMapaMaybeaTO(min(n,W)). Lookup the value at a key in the map. See also Data.Map.lookup. lookuplookup :: HashTable key val -> key -> IO (Maybe val)c0 HashTablekeyvalkeyIOMaybeval/Looks up the value of a key in the hash table.  longestChain longestChain :: HashTable key val -> IO [(key, val)]2 HashTablekeyvalIO[](,)keyval`This function is useful for determining whether your hash function is working well for your data set. It returns the longest chain of key/value pairs in the hash table for which all the keys hash to the same bucket. If this chain is particularly long (say, longer than 14 elements or so), then it might be a good idea to try a different hash function.  logCGIlogCGI ::  MonadIO m => String -> m ()MonadIOmStringm()Logs some message using the server's logging facility. FIXME: does this have to be more general to support FastCGI etc? Maybe we should store log messages in the CGIState?  listToMaybe listToMaybe :: [a] -> Maybe a[]aMaybeaThe listToMaybe function returns Nothing on an empty list or Just a where a is the first element of the list.  Listening Listening ::  SocketStatus SocketStatuslistenlisten :: Socket -> Int -> IO ()u[SocketIntIO()linklink :: String -> HtmlAttrѨStringHtmlAttrLingerLinger ::  SocketOption SocketOption lineToHtml lineToHtml :: String -> Html}lStringHtml linesToHtml linesToHtml :: [String] -> HtmlЩ[]StringHtml LineSeparator LineSeparator :: GeneralCategoryG5GeneralCategoryZl: Separator, Line lineslines :: String -> [String]String[]String}lines breaks a string up into a list of strings at newline characters. The resulting strings do not contain newlines. 6 LineBuffering LineBuffering ::  BufferMode BufferMode.line-buffering should be enabled if possible. Linetype Line = Intlimelime :: String.%StringliftM5liftM5 ::  Monad m => !(a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m rGMonadma1a2a3a4a5rma1ma2ma3ma4ma5mrfPromote a function to a monad, scanning the monadic arguments from left to right (cf. liftM2). liftM4liftM4 ::  Monad m => (a1 -> a2 -> a3 -> a4 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m rSMonadma1a2a3a4rma1ma2ma3ma4mrfPromote a function to a monad, scanning the monadic arguments from left to right (cf. liftM2). liftM3 liftM3 ::  Monad m => (a1 -> a2 -> a3 -> r) -> m a1 -> m a2 -> m a3 -> m rܯMonadma1a2a3rma1ma2ma3mrfPromote a function to a monad, scanning the monadic arguments from left to right (cf. liftM2). liftM2 liftM2 ::  Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m rMonadma1a2rma1ma2mrPromote a function to a monad, scanning the monadic arguments from left to right. For example,
liftM2 (+) [0,1] [0,2] = [0,2,1,3]
liftM2 (+) (Just 1) Nothing = Nothing
liftMliftM ::  Monad m =>  (a1 -> r) -> m a1 -> m r3 Monadma1rma1mrPromote a function to a monad. LliftA3 liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d% Applicativefabcdfafbfcfd$Lift a ternary function to actions. LliftA2 liftA2 :: Applicative f =>  (a -> b -> c) -> f a -> f b -> f cų Applicativefabcfafbfc#Lift a binary function to actions. LliftAliftA :: Applicative f => (a -> b) -> f a -> f b ApplicativefabfafboLift a function to actions. This function may be used as a value for fmap in a Functor instance. lili :: Html -> Htmln_HtmlHtml"lexPlexP :: ReadPrec LexemeReadPrecLexemeParse a single lexeme  lexLitChar lexLitChar ::  ReadS String,ReadSStringRead a string representation of a character, using Haskell source-language escape conventions. For example:
lexLitChar  "\\nHello"  =  [("\\n", "Hello")]
"Lexemedata LexemeHaskell lexemes. "lexlex ::  ReadS String^LReadSStringThe lex function reads a single lexeme from the input, discarding initial white space, and returning the characters that constitute the lexeme. If the input string contains only white space, lex returns a single successful `lexeme' consisting of the empty string. (Thus lex "" = [("","")].) If there is no legal lexeme at the beginning of the input string, lex fails (i.e. returns []). This lexer is not completely faithful to the Haskell lexical syntax in the following respects:
  • Qualified names are not handled properly
  • Octal and hexadecimal numerics are not recognized as a single token
  • Comments are not treated properly
klevelslevels :: Tree a -> [[a]]lTreea[][]a*Lists of nodes at each level of the tree.  LetterNumber LetterNumber :: GeneralCategoryGeneralCategoryNl: Number, Letter jlengthlength :: Seq a -> Int{iSeqaInt5O(1). The number of elements in the sequence. lengthlength :: [a] -> Int[]aIntlength returns the length of a finite list as an Int. It is an instance of the more general Data.List.genericLength, the result type of which may be any kind of number. elengthlength ::  ByteString -> Int ByteStringIntOO(1) length returns the length of a ByteString as an Int. legendlegend :: Html -> HtmlHtmlHtml leftslefts ::  [Either a b] -> [a]([]Eitherab[]axExtracts from a list of Either all the Left elements All the Left elements are extracted in order. FleftAppleftApp :: ArrowApply a => a b c -> a (Either b d) (Either c d)S ArrowApplyaabcaEitherbdEithercdAny instance of ArrowApply can be made into an instance of ArrowChoice by defining left = leftApp. Fleftleft :: ArrowChoice a => a b c -> a (Either b d) (Either c d)< ArrowChoiceaabcaEitherbdEithercd LeftLeft :: a ->  Either a baEitherab lazyBufferOp lazyBufferOp :: BufferOp ByteStringD+BufferOp ByteStringhlazyBufferOp is the BufferOp definition over ByteStrings, the non-strict kind. lastlast :: [a] -> a[]aaHExtract the last element of a list, which must be finite and non-empty. elastlast ::  ByteString -> Word8 ByteStringWord8O(1) Extract the last element of a ByteString, which must be finite and non-empty. An exception will be thrown in the case of an empty ByteString. KLastLast :: Maybe a -> Last a~MaybeaLastaKLastnewtype Last a8Maybe monoid returning the rightmost non-Nothing value.  LanguageLanguage :: String -> LanguageePStringLanguage Languagenewtype Languagelanglang :: String -> HtmlAttrStringHtmlAttrlabellabel :: Testable a => String -> a -> Property\TestableaStringaPropertyFKleisliKleisli ::  (a -> m b) ->  Kleisli m a bambKleislimabFKleislinewtype Kleisli m a b8Kleisli arrows of a monad. @ killThread killThread :: ThreadId -> IO ()ThreadIdIO()killThread terminates the given thread (GHC only). Any work already done by the thread isn't lost: the computation is suspended until required by another thread. The memory used by the thread will be garbage collected if it isn't referenced from anywhere. The killThread function is defined in terms of throwTo:
killThread tid = throwTo tid ThreadKilled
Killthread is a no-op if the target thread has already completed. lkeysSetkeysSet :: Map k a -> Set kMapkaSetkO(n). The set of all keys of the map.
keysSet (fromList [(5,"a"), (3,"b")]) == Data.Set.fromList [3,5]
keysSet empty == Data.Set.empty
nkeysSetkeysSet :: IntMap a -> IntSetIntMapaIntSetO(n*min(n,W)). The set of all keys of the map.
keysSet (fromList [(5,"a"), (3,"b")]) == Data.IntSet.fromList [3,5]
keysSet empty == Data.IntSet.empty
lkeyskeys :: Map k a -> [k]Mapka[]kO(n). Return all keys of the map in ascending order.
keys (fromList [(5,"a"), (3,"b")]) == [3,5]
keys empty == []
nkeyskeys :: IntMap a -> [Key]IntMapa[]KeyO(n). Return all keys of the map in ascending order.
keys (fromList [(5,"a"), (3,"b")]) == [3,5]
keys empty == []
keyboardkeyboard :: Html -> HtmlHtmlHtmlnKeytype Key = Int KeepAlive KeepAlive ::  SocketOption<- SocketOptionJustJust :: a -> Maybe a}aMaybeaxJuneJune :: MonthMonthxJulyJuly :: MonthMonthjoinjoin ::  Monad m => m (m a) -> m auQMonadmmmamaThe join function is the conventional monad join operator. It is used to remove one level of monadic structure, projecting its bound argument into the outer level. xJanuaryJanuary :: Month`XMonthJIxclass  Ord a => Ix aWThe Ix class is used to map a contiguous subrange of values in a type onto integers. It is used primarily for array indexing (see the array package). The first argument (l,u) of each of these operations is a pair specifying the lower and upper bounds of a contiguous subrange of values. An implementation is entitled to assume the following laws about these operations: Minimal complete instance: range, index and inRange. iterateiterate :: (a -> a) -> a -> [a]YBaaa[]aiterate f x returns an infinite list of repeated applications of f to x:
iterate f x == [x, f x, f (f x), ...]
italicsitalics :: Html -> HtmlN?HtmlHtmlitagitag :: String -> HtmlStringHtmlisURIReferenceisURIReference :: String -> Bool StringBooloTest if string contains a valid URI reference (an absolute or relative URI with optional fragment identifier). isURIisURI :: String -> BoolStringBoolYTest if string contains a valid URI (an absolute URI with optional fragment identifier). isUpperisUpper :: Char -> Bool~oCharBoolSelects upper-case or title-case alphabetic Unicode characters (letters). Title case is used by a small number of letter ligatures like the single-character form of Lj.  isUnreserved isUnreserved :: Char -> BoolCharBool Returns True if the character is an "unreserved" character in a URI. These characters do not need to be escaped in a URI. The only characters allowed in a URI are either "reserved", "unreserved", or an escape sequence (% followed by two hex digits). isUnescapedInURIisUnescapedInURI :: Char -> BoolCharBoolDReturns True if the character is allowed unescaped in a URI. !isTCPConnectedToisTCPConnectedTo :: HandleStream ty -> String -> IO Bool HandleStreamtyStringIOBoolisSymbolisSymbol :: Char -> Bool@1CharBoolPSelects Unicode symbol characters, including mathematical and currency symbols.  isSuffixOf isSuffixOf :: Eq a => [a] -> [a] -> BoolEqa[]a[]aBoolThe isSuffixOf function takes two lists and returns True iff the first list is a suffix of the second. Both lists must be finite. e isSuffixOf isSuffixOf ::  ByteString ->  ByteString -> Bool1 ByteString ByteStringBoolHO(n) The isSuffixOf function takes two ByteStrings and returns True iff the first is a suffix of the second. The following holds:
isSuffixOf x y == reverse x `isPrefixOf` reverse y
However, the real implemenation uses memcmp to compare the end of the string only, with no reverse required.. i isSubsetOf isSubsetOf ::  Ord a => Set a -> Set a -> BoolOrdaSetaSetaBoolzO(n+m). Is this a subset? (s1 isSubsetOf s2) tells whether s1 is a subset of s2. m isSubsetOf isSubsetOf :: IntSet -> IntSet -> BoolIntSetIntSetBoolzO(n+m). Is this a subset? (s1 isSubsetOf s2) tells whether s1 is a subset of s2. l isSubmapOfBy  isSubmapOfBy ::  Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool=OrdkabBoolMapkaMapkbBoolO(n+m). The expression (isSubmapOfBy f t1 t2) returns True if all keys in t1 are in tree t2, and when f returns True when applied to their respective values. For example, the following expressions are all True:
isSubmapOfBy (==) (fromList [('a',1)]) (fromList [('a',1),('b',2)])
isSubmapOfBy (<=) (fromList [('a',1)]) (fromList [('a',1),('b',2)])
isSubmapOfBy (==) (fromList [('a',1),('b',2)]) (fromList [('a',1),('b',2)])
But the following are all False:
isSubmapOfBy (==) (fromList [('a',2)]) (fromList [('a',1),('b',2)])
isSubmapOfBy (<)  (fromList [('a',1)]) (fromList [('a',1),('b',2)])
isSubmapOfBy (==) (fromList [('a',1),('b',2)]) (fromList [('a',1)])
n isSubmapOfBy  isSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> BoolabBoolIntMapaIntMapbBoolO(n+m). The expression (isSubmapOfBy f m1 m2) returns True if all keys in m1 are in m2, and when f returns True when applied to their respective values. For example, the following expressions are all True:
isSubmapOfBy (==) (fromList [(1,1)]) (fromList [(1,1),(2,2)])
isSubmapOfBy (<=) (fromList [(1,1)]) (fromList [(1,1),(2,2)])
isSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1),(2,2)])
But the following are all False:
isSubmapOfBy (==) (fromList [(1,2)]) (fromList [(1,1),(2,2)])
isSubmapOfBy (<) (fromList [(1,1)]) (fromList [(1,1),(2,2)])
isSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1)])
l isSubmapOf isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool{EOrdkEqaMapkaMapkaBooldO(n+m). This function is defined as (isSubmapOf = isSubmapOfBy (==)). n isSubmapOf isSubmapOf :: Eq a => IntMap a -> IntMap a -> BoolxLEqaIntMapaIntMapaBooleO(n+m). Is this a submap? Defined as (isSubmapOf = isSubmapOfBy (==)).  IsStringclass IsString amClass for string-like datastructures; used by the overloaded string extension (-foverloaded-strings in GHC). isSpaceisSpace :: Char -> BoolCharBool{Selects white-space characters in the Latin-1 range. (In Unicode terms, this includes spaces and some control characters.) isSignedisSigned ::  Bits a => a -> BoolBitsaaBool isSeparator isSeparator :: Char -> BoolCharBool0Selects Unicode space and separator characters.  isReserved isReserved :: Char -> BoolCharBoolReturns True if the character is a "reserved" character in a URI. To include a literal instance of one of these characters in a component of a URI, it must be escaped. isRelativeReferenceisRelativeReference :: String -> BoolStringBoolaTest if string contains a valid relative URI (a relative URI with optional fragment identifier).  isPunctuation isPunctuation :: Char -> BoolxCharBooldSelects Unicode punctuation characters, including various kinds of connectors, brackets and quotes. iisProperSubsetOfisProperSubsetOf ::  Ord a => Set a -> Set a -> Bool_OrdaSetaSetaBoolFO(n+m). Is this a proper subset? (ie. a subset but not equal). misProperSubsetOfisProperSubsetOf :: IntSet -> IntSet -> BoolR9IntSetIntSetBoolFO(n+m). Is this a proper subset? (ie. a subset but not equal). lisProperSubmapOfBy isProperSubmapOfBy ::  Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Boolk0OrdkabBoolMapkaMapkbBool*O(n+m). Is this a proper submap? (ie. a submap but not equal). The expression (isProperSubmapOfBy f m1 m2) returns True when m1 and m2 are not equal, all keys in m1 are in m2, and when f returns True when applied to their respective values. For example, the following expressions are all True:
isProperSubmapOfBy (==) (fromList [(1,1)]) (fromList [(1,1),(2,2)])
isProperSubmapOfBy (<=) (fromList [(1,1)]) (fromList [(1,1),(2,2)])
But the following are all False:
isProperSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1),(2,2)])
isProperSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1)])
isProperSubmapOfBy (<)  (fromList [(1,1)])       (fromList [(1,1),(2,2)])
nisProperSubmapOfBy isProperSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> BoolW&abBoolIntMapaIntMapbBool*O(n+m). Is this a proper submap? (ie. a submap but not equal). The expression (isProperSubmapOfBy f m1 m2) returns True when m1 and m2 are not equal, all keys in m1 are in m2, and when f returns True when applied to their respective values. For example, the following expressions are all True:
isProperSubmapOfBy (==) (fromList [(1,1)]) (fromList [(1,1),(2,2)])
isProperSubmapOfBy (<=) (fromList [(1,1)]) (fromList [(1,1),(2,2)])
But the following are all False:
isProperSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1),(2,2)])
isProperSubmapOfBy (==) (fromList [(1,1),(2,2)]) (fromList [(1,1)])
isProperSubmapOfBy (<)  (fromList [(1,1)])       (fromList [(1,1),(2,2)])
lisProperSubmapOfisProperSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool7OrdkEqaMapkaMapkaBoolO(n+m). Is this a proper submap? (ie. a submap but not equal). Defined as (isProperSubmapOf = isProperSubmapOfBy (==)). nisProperSubmapOfisProperSubmapOf :: Eq a => IntMap a -> IntMap a -> BoolrFEqaIntMapaIntMapaBoolO(n+m). Is this a proper submap? (ie. a submap but not equal). Defined as (isProperSubmapOf = isProperSubmapOfBy (==)). isPrintisPrint :: Char -> Bool^OCharBoolaSelects printable Unicode characters (letters, numbers, marks, punctuation, symbols and spaces).  isPrefixOf isPrefixOf :: Eq a => [a] -> [a] -> BoolF"Eqa[]a[]aBooluThe isPrefixOf function takes two lists and returns True iff the first list is a prefix of the second. e isPrefixOf isPrefixOf ::  ByteString ->  ByteString -> BoolE$ ByteString ByteStringBoolO(n) The isPrefixOf function takes two ByteStrings and returns True iff the first is a prefix of the second.  isOctDigit isOctDigit :: Char -> Bool#CharBool=Selects ASCII octal digits, i.e. '0'..'7'. isNumberisNumber :: Char -> BoolCharBool`Selects Unicode numeric characters, including digits from various scripts, Roman numerals, etc.  isNothing isNothing :: Maybe a -> Bool{fMaybeaBoolVThe isNothing function returns True iff its argument is Nothing. 9 isNorepType isNorepType :: DataType -> Bool7$DataTypeBool"Test for a non-representable type isMarkisMark :: Char -> BoolCharBoolbSelects Unicode mark characters, e.g. accents and the like, which combine with preceding letters. ismapismap :: HtmlAttrQFHtmlAttrisLowerisLower :: Char -> BoolCharBool<Selects lower-case alphabetic Unicode characters (letters). isLetterisLetter :: Char -> Bool;,CharBoolSelects alphabetic Unicode characters (lower-case, upper-case and title-case letters, plus letters of caseless scripts and modifiers letters). This function is equivalent to Data.Char.isAlpha. isLatin1isLatin1 :: Char -> BoolTECharBoolxSelects the first 256 characters of the Unicode character set, corresponding to the ISO 8859-1 (Latin-1) character set. isJustisJust :: Maybe a -> Bool)MaybeaBool`The isJust function returns True iff its argument is of the form Just _.  isIPv6address isIPv6address :: String -> BoolStringBool-Test if string contains a valid IPv6 address  isIPv4address isIPv4address :: String -> BoolqStringBool-Test if string contains a valid IPv4 address  isInfixOf isInfixOf :: Eq a => [a] -> [a] -> Bool4Eqa[]a[]aBoolThe isInfixOf function takes two lists and returns True iff the first list is contained, wholly and intact, anywhere within the second. Example:
isInfixOf "Haskell" "I really like Haskell." -> True
isInfixOf "Ial" "I really like Haskell." -> False
e isInfixOf isInfixOf ::  ByteString ->  ByteString -> Bool ByteString ByteStringBoolCheck whether one string is a substring of another. isInfixOf p s is equivalent to not (null (findSubstrings p s)).  isHexDigit isHexDigit :: Char -> BoolCharBool{Selects ASCII hexadecimal digits, i.e. '0'..'9', 'a'..'f', 'A'..'F'. 6isEOFisEOF :: IO BoolwjIOBoolgThe computation isEOF is identical to hIsEOF, except that it works only on stdin. isDigitisDigit :: Char -> Bool4 % CharBool7Selects ASCII digits, i.e. '0'..'9'. @isCurrentThreadBoundisCurrentThreadBound :: IO Bool  IOBoolReturns True if the calling thread is bound, that is, if it is safe to use foreign libraries that rely on thread-local state from the calling thread.  isControl isControl :: Char -> Bool  CharBooldSelects control characters, which are the non-printing characters of the Latin-1 subset of Unicode. ! isConnectedTo isConnectedTo ::  Connection -> String -> IO Bool   ConnectionStringIOBoolChecks both that the underlying Socket is connected and that the connection peer matches the given host name (which is recorded locally). _IsCharclass IsChar c|  isAsciiUpper isAsciiUpper :: Char -> Bool  CharBooleSelects ASCII upper-case letters, i.e. characters satisfying both isAscii and isUpper.  isAsciiLower isAsciiLower :: Char -> Bool  CharBooleSelects ASCII lower-case letters, i.e. characters satisfying both isAscii and isLower. isAsciiisAscii :: Char -> Bool\MCharBooliSelects the first 128 characters of the Unicode character set, corresponding to the ASCII character set.  isAlphaNum isAlphaNum :: Char -> Bool!CharBool Selects alphabetic or numeric digit Unicode characters. Note that numeric digits outside the ASCII range are selected by this function but not by isDigit. Such digits may be part of identifiers but are not used by the printer and reader to represent numbers. isAlphaisAlpha :: Char -> BoolsCharBoolSelects alphabetic Unicode characters (lower-case, upper-case and title-case letters, plus letters of caseless scripts and modifiers letters). This function is equivalent to Data.Char.isLetter. isAllowedInURIisAllowedInURI :: Char -> BoolCharBool:Returns True if the character is allowed in a URI. 9 isAlgType isAlgType :: DataType -> BoolD1DataTypeBoolTest for an algebraic type  isAbsoluteURI isAbsoluteURI :: String -> BoolStringBool^Test if string contains a valid absolute URI (an absolute URI without a fragment identifier). #IORefdata IORef aS*A mutable variable in the IO monad 6IOModedata IOMode7 IOExceptiondata  IOExceptionExceptions that occur in the IO monad. An IOException records a more specific error type, a descriptive string and maybe the handle that was used when the error was flagged. 7 IOException IOException ::  IOException ->  Exception IOException ExceptionuThese are the standard IO exceptions generated by Haskell's IO operations. See also System.IO.Error. 5 IOExceptiondata  IOExceptionExceptions that occur in the IO monad. An IOException records a more specific error type, a descriptive string and maybe the handle that was used when the error was flagged. 7ioErrorsioErrors ::  Exception ->  Maybe IOError ExceptionMaybeIOError7ioErrorioError :: IOError -> IO abMIOErrorIOa0Raise an IOError in the IO monad. 5ioErrorioError :: IOError -> IO aIOErrorIOa0Raise an IOError in the IO monad. &ioActionioAction :: IO a -> BrowserAction t awIOa BrowserActionta8Lifts an IO action into the BrowserAction monad. 6IOdata IO aA value of type IO a is a computation which, when performed, does some I/O before returning a value of type a. There is really only one way to "perform" an I/O action: bind it to Main.main in your program. When your program is run, the I/O will be performed. It isn't possible to perform I/O from an arbitrary function, unless that function is itself in the IO monad and called at some point, directly or indirectly, from Main.main. IO is a monad, so IO actions can be combined using either the do-notation or the >> and >>= operations from the Monad class.  intToDigit intToDigit :: Int -> CharIntCharConvert an Int in the range 0..15 to the corresponding single digit Char. This function fails on other inputs, and generates lower-case hexadecimal digits. mIntSetdata IntSetA set of integers. 9IntRepIntRep :: DataRep(DataRep' intPtrToPtr intPtrToPtr :: IntPtr -> Ptr azIntPtrPtra+casts an IntPtr to a Ptr 'IntPtrdata IntPtrRA signed integral type that can be losslessly converted to and from Ptr. nIntMapdata IntMap an(A map of integers to values a.  intersperse intersperse :: a -> [a] -> [a]a[]a[]aThe intersperse function takes an element and a list and `intersperses' that element between the elements of the list. For example,
intersperse ',' "abcde" == "a,b,c,d,e"
e intersperse intersperse :: Word8 ->  ByteString ->  ByteStringV 4 Word8 ByteString ByteStringO(n) The intersperse function takes a Word8 and a ByteString and `intersperses' that byte between the elements of the ByteString. It is analogous to the intersperse function on Lists. lintersectionWithKey intersectionWithKey ::  Ord k => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c"!OrdkkabcMapkaMapkbMapkc0O(n+m). Intersection with a combining function. Intersection is more efficient on (bigset `intersection` smallset).
let f k al ar = (show k) ++ ":" ++ al ++ "|" ++ ar
intersectionWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "5:a|A"
nintersectionWithKey intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap a$#KeyabaIntMapaIntMapbIntMapaO(n+m). The intersection with a combining function.
let f k al ar = (show k) ++ ":" ++ al ++ "|" ++ ar
intersectionWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "5:a|A"
lintersectionWith intersectionWith ::  Ord k =>  (a -> b -> c) -> Map k a -> Map k b -> Map k c%%OrdkabcMapkaMapkbMapkcO(n+m). Intersection with a combining function.
intersectionWith (++) (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "aA"
nintersectionWith intersectionWith ::  (a -> b -> a) -> IntMap a -> IntMap b -> IntMap aE''abaIntMapaIntMapbIntMapaO(n+m). The intersection with a combining function.
intersectionWith (++) (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "aA"
i intersection intersection ::  Ord a => Set a -> Set a -> Set a(e(OrdaSetaSetaSetaO(n+m). The intersection of two sets. Elements of the result come from the first set, so for example
import qualified Data.Set as S
data AB = A | B deriving Show
instance Ord AB where compare _ _ = EQ
instance Eq AB where _ == _ = True
main = print (S.singleton A `S.intersection` S.singleton B,
              S.singleton B `S.intersection` S.singleton A)
prints (fromList [A],fromList [B]). l intersection intersection ::  Ord k => Map k a -> Map k b -> Map k a**OrdkMapkaMapkbMapka,O(n+m). Intersection of two maps. Return data in the first map for the keys existing in both maps. (intersection m1 m2 == intersectionWith const m1 m2).
intersection (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "a"
m intersection intersection :: IntSet -> IntSet -> IntSet,q,IntSetIntSetIntSet-O(n+m). The intersection of two sets. n intersection intersection :: IntMap a -> IntMap b -> IntMap aP-&-IntMapaIntMapbIntMapaO(n+m). The (left-biased) intersection of two maps (based on keys).
intersection (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 5 "a"
 intersectBy  intersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]..aaBool[]a[]a[]aSThe intersectBy function is the non-overloaded version of intersect.  intersect intersect :: Eq a => [a] -> [a] -> [a]/`/Eqa[]a[]a[]a3The intersect function takes the list intersection of two lists. For example,
[1,2,3,4] `intersect` [2,4,6,8] == [2,4]
If the first list contains duplicates, so will the result. It is a special case of intersectBy, which allows the programmer to supply their own equality test.  intercalate intercalate :: [a] -> [[a]] -> [a]<11[]a[][]a[]aintercalate xs xss is equivalent to (concat (intersperse xs xss)). It inserts the list xs in between the lists in xss and concatenates the result. e intercalate intercalate ::  ByteString ->  [ByteString] ->  ByteString2{2 ByteString[] ByteString ByteStringO(n) The intercalate function takes a ByteString and a list of ByteStrings and concatenates the list after interspersing the first argument between each element of the list. 6interactinteract :: (String -> String) -> IO ()33StringStringIO()The interact function takes a function of type String->String as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device. einteractinteract :: (ByteString -> ByteString) -> IO ()p5I5 ByteString ByteStringIO()The interact function takes a function of type ByteString -> ByteString as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device. 9 IntConstr IntConstr :: Integer ->  ConstrRep66Integer ConstrRepintAttrintAttr :: String -> Int -> HtmlAttrS797StringIntHtmlAttrInt8data Int878-bit signed integer type Int64data Int64764-bit signed integer type Int32data Int32832-bit signed integer type Int16data Int16Y816-bit signed integer type "IntInt :: Integer -> Lexeme88IntegerLexemeInteger literal linsertWithKey' insertWithKey' ::  Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a9x9OrdkkaaakaMapkaMapkaNSame as insertWithKey, but the combining function is applied strictly. l insertWithKey  insertWithKey ::  Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k a::OrdkkaaakaMapkaMapkaO(log n). Insert with a function, combining key, new value and old value. insertWithKey f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert the pair (key,f key new_value old_value). Note that the key passed to f is the same key passed to insertWithKey.
let f key new_value old_value = (show key) ++ ":" ++ new_value ++ "|" ++ old_value
insertWithKey f 5 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:xxx|a")]
insertWithKey f 7 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a"), (7, "xxx")]
insertWithKey f 5 "xxx" empty                         == singleton 5 "xxx"
n insertWithKey  insertWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> IntMap a>]>KeyaaaKeyaIntMapaIntMapaxO(min(n,W)). Insert with a combining function. insertWithKey f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f key new_value old_value.
let f key new_value old_value = (show key) ++ ":" ++ new_value ++ "|" ++ old_value
insertWithKey f 5 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:xxx|a")]
insertWithKey f 7 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a"), (7, "xxx")]
insertWithKey f 5 "xxx" empty                         == singleton 5 "xxx"
l insertWith'  insertWith' ::  Ord k =>  (a -> a -> a) -> k -> a -> Map k a -> Map k aAAOrdkaaakaMapkaMapkaKSame as insertWith, but the combining function is applied strictly. l insertWith  insertWith ::  Ord k =>  (a -> a -> a) -> k -> a -> Map k a -> Map k aBBOrdkaaakaMapkaMapkaAO(log n). Insert with a function, combining new value and old value. insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert the pair (key, f new_value old_value).
insertWith (++) 5 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "xxxa")]
insertWith (++) 7 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a"), (7, "xxx")]
insertWith (++) 5 "xxx" empty                         == singleton 5 "xxx"
n insertWith  insertWith ::  (a -> a -> a) -> Key -> a -> IntMap a -> IntMap aEEaaaKeyaIntMapaIntMapaO(min(n,W)). Insert with a combining function. insertWith f key value mp will insert the pair (key, value) into mp if key does not exist in the map. If the key does exist, the function will insert f new_value old_value.
insertWith (++) 5 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "xxxa")]
insertWith (++) 7 "xxx" (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a"), (7, "xxx")]
insertWith (++) 5 "xxx" empty                         == singleton 5 "xxx"
linsertLookupWithKey insertLookupWithKey ::  Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)HHOrdkkaaakaMapka(,)MaybeaMapka)O(log n). Combines insert operation with old value retrieval. The expression (insertLookupWithKey f k x map) is a pair where the first element is equal to (lookup k map) and the second element equal to (insertWithKey f k x map).
let f key new_value old_value = (show key) ++ ":" ++ new_value ++ "|" ++ old_value
insertLookupWithKey f 5 "xxx" (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "5:xxx|a")])
insertLookupWithKey f 7 "xxx" (fromList [(5,"a"), (3,"b")]) == (Nothing,  fromList [(3, "b"), (5, "a"), (7, "xxx")])
insertLookupWithKey f 5 "xxx" empty                         == (Nothing,  singleton 5 "xxx")
This is how to define insertLookup using insertLookupWithKey:
let insertLookup kx x t = insertLookupWithKey (\_ a _ -> a) kx x t
insertLookup 5 "x" (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "x")])
insertLookup 7 "x" (fromList [(5,"a"), (3,"b")]) == (Nothing,  fromList [(3, "b"), (5, "a"), (7, "x")])
ninsertLookupWithKey insertLookupWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> (Maybe a, IntMap a)NMKeyaaaKeyaIntMapa(,)MaybeaIntMapaO(min(n,W)). The expression (insertLookupWithKey f k x map) is a pair where the first element is equal to (lookup k map) and the second element equal to (insertWithKey f k x map).
let f key new_value old_value = (show key) ++ ":" ++ new_value ++ "|" ++ old_value
insertLookupWithKey f 5 "xxx" (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "5:xxx|a")])
insertLookupWithKey f 7 "xxx" (fromList [(5,"a"), (3,"b")]) == (Nothing,  fromList [(3, "b"), (5, "a"), (7, "xxx")])
insertLookupWithKey f 5 "xxx" empty                         == (Nothing,  singleton 5 "xxx")
This is how to define insertLookup using insertLookupWithKey:
let insertLookup kx x t = insertLookupWithKey (\_ a _ -> a) kx x t
insertLookup 5 "x" (fromList [(5,"a"), (3,"b")]) == (Just "a", fromList [(3, "b"), (5, "x")])
insertLookup 7 "x" (fromList [(5,"a"), (3,"b")]) == (Nothing,  fromList [(3, "b"), (5, "a"), (7, "x")])
insertBy insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]RRaaOrderinga[]a[]a-The non-overloaded version of insert. iinsertinsert ::  Ord a => a -> Set a -> Set a]S9SOrdaaSetaSetaO(log n). Insert an element in a set. If the set already contains an element equal to the given value, it is replaced with the new value. linsert insert ::  Ord k => k -> a -> Map k a -> Map k aT\TOrdkkaMapkaMapkaO(log n). Insert a new key and value in the map. If the key is already present in the map, the associated value is replaced with the supplied value. insert is equivalent to insertWith const.
insert 5 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'x')]
insert 7 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'a'), (7, 'x')]
insert 5 'x' empty                         == singleton 5 'x'
insertinsert ::  Ord a => a -> [a] -> [a]VVOrdaa[]a[]apThe insert function takes an element and a list and inserts the element into the list at the last position where it is still less than or equal to the next element. In particular, if the list is sorted before the call, the result will also be sorted. It is a special case of insertBy, which allows the programmer to supply their own comparison function. minsertinsert :: Int -> IntSet -> IntSetXXIntIntSetIntSetO(min(n,W)). Add a value to the set. When the value is already an element of the set, it is replaced by the new one, ie. insert is left-biased. ninsert insert :: Key -> a -> IntMap a -> IntMap aYYKeyaIntMapaIntMapaO(min(n,W)). Insert a new key/value pair in the map. If the key is already present in the map, the associated value is replaced with the supplied value, i.e. insert is equivalent to insertWith const.
insert 5 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'x')]
insert 7 'x' (fromList [(5,'a'), (3,'b')]) == fromList [(3, 'b'), (5, 'a'), (7, 'x')]
insert 5 'x' empty                         == singleton 5 'x'
insert insert :: HashTable key val -> key -> val -> IO ()\\.\ HashTablekeyvalkeyvalIO()Inserts a key/value mapping into the hash table. Note that insert doesn't remove the old entry from the table - the behaviour is like an association list, where lookup returns the most-recently-inserted mapping for a key in the table. The reason for this is to keep insert as efficient as possible. If you need to update a mapping, then we provide update. JinRangeinRange :: Ix a => (a, a) -> a -> Bool]^;^Ixa(,)aaaBoolinputinput :: Html^^Htmlinitsinits :: [a] -> [[a]]^^[]a[][]aThe inits function returns all initial segments of the argument, shortest first. For example,
inits "abc" == ["","a","ab","abc"]
einitsinits ::  ByteString ->  [ByteString]__ ByteString[] ByteStringXO(n) Return all initial segments of the given ByteString, shortest first.  InitialQuote InitialQuote :: GeneralCategory``GeneralCategoryPi: Punctuation, Initial quote initinit :: [a] -> [a]&aa[]a[]a^Return all the elements of a list except the last one. The list must be finite and non-empty. einitinit ::  ByteString ->  ByteStringaa ByteString ByteStringO(1) Return all the elements of a ByteString except the last one. An exception will be thrown in the case of an empty ByteString. 9InfixInfix :: FixitybbFixity inet_ntoa inet_ntoa ::  HostAddress ->  IO String/cc HostAddressIOString inet_addr inet_addr :: String -> IO HostAddressccStringIO HostAddress7IndexOutOfBoundsIndexOutOfBounds :: String -> ArrayException$d dStringArrayExceptionCAn attempt was made to index an array outside its declared bounds. 5IndexOutOfBoundsIndexOutOfBounds :: String -> ArrayExceptionddStringArrayExceptionCAn attempt was made to index an array outside its declared bounds. 9 indexConstr indexConstr :: DataType -> ConIndex -> ConstreeDataTypeConIndexConstr=Gets the constructor for an index (algebraic datatypes only) jindexindex :: Seq a -> Int -> aTf?fSeqaIntaO(log(min(i,n-i))). The element at the specified position, which should be a positive integer less than the size of the sequence. If the position is out of range, index fails with an error. Jindexindex :: Ix a => (a, a) -> a -> IntgygIxa(,)aaaInteindexindex ::  ByteString -> Int -> Word8hg ByteStringIntWord8KO(1) ByteString index (subscript) operator, starting from 0. oindegreeindegree :: Graph ->  Table InthhGraphTableInt.A table of the count of edges into each node.  incSourceLine incSourceLine ::  SourcePos -> Line ->  SourcePoszi[i SourcePosLine SourcePos1Increments the line number of a source position. incSourceColumnincSourceColumn ::  SourcePos -> Column ->  SourcePos?jj SourcePosColumn SourcePos3Increments the column number of a source position.  iNADDR_ANY iNADDR_ANY ::  HostAddressjj HostAddressThe IPv4 wild card address.  iN6ADDR_ANY iN6ADDR_ANY ::  HostAddress66k'k HostAddress6The IPv6 wild card address. BimagPartimagPart :: RealFloat a =>  Complex a -> akk RealFloataComplexaa1Extracts the imaginary part of a complex number. imageimage :: Html;l4lHtml identifier identifier :: String -> HtmlAttrllStringHtmlAttr"IdentIdent :: String -> LexemellStringLexeme4Haskell identifier, e.g. foo, Baz Didid :: a -> aqmhmaaIdentity function. :idid :: Category cat => cat a ammCategorycatcataa6 hWaitForInput hWaitForInput :: Handle -> Int -> IO BoolfnJnHandleIntIOBoolComputation hWaitForInput hdl t waits until input is available on handle hdl. It returns True as soon as input is available on hdl, or False if no input is available within t milliseconds. If t is less than zero, then hWaitForInput waits indefinitely. This operation may fail with: NOTE for GHC users: unless you use the -threaded flag, hWaitForInput t where t >= 0 will block all other Haskell threads for the duration of the call. It behaves like a safe foreign call in this respect.  httpequiv httpequiv :: String -> HtmlAttrsq^qStringHtmlAttrHtmlTreedata HtmlTreeqHtmlTag HtmlTag :: String ->  [HtmlAttr] -> Html ->  HtmlElementKrrString[]HtmlAttrHtml HtmlElement HtmlTable HtmlTable :: BlockTable (Int -> Int -> Html) ->  HtmlTablerr BlockTableIntIntHtml HtmlTable HtmlTablenewtype  HtmlTables HTMLTABLEclass  HTMLTABLE htWs HtmlString HtmlString :: String ->  HtmlElementssString HtmlElementHtmlNode HtmlNode :: Html ->  [HtmlTree] -> Html -> HtmlTreeat8tHtml[]HtmlTreeHtmlHtmlTreeHtmlLeafHtmlLeaf :: Html -> HtmlTreettHtmlHtmlTree HtmlElementdata  HtmlElementtHtmlAttrHtmlAttr :: String -> String -> HtmlAttryu\uStringStringHtmlAttrHtmlAttrdata HtmlAttruHtmlHtml ::  [HtmlElement] -> Htmlvu[] HtmlElementHtmlHtmlnewtype HtmlBvHTMLclass HTML aqv6hTellhTell :: Handle ->  IO IntegervvHandleIOInteger!hstreamToConnectionhstreamToConnection :: HandleStream String ->  ConnectionqwJw HandleStreamString Connection!HStreamclass BufferType bufType => HStream bufTypewHStream overloads the use of HandleStreams, letting you overload the handle operations over the type that is communicated across the handle. It is used in the context of Network.HTTP to buy us freedom in how HTTP Request and Response payloads are represented. The package provides instances for ByteStrings and String, but should you want to plug in your own payload representation, defining your own HStream instance is all it takes. hspacehspace :: Int -> HtmlAttrzyIntHtmlAttr6hShowhShow :: Handle ->  IO StringgzNzHandleIOStringhShow is in the IO monad, and gives more comprehensive output than the (pure) instance of Show for Handle. 6hSetPosnhSetPosn ::  HandlePosn -> IO ()W{>{ HandlePosnIO()VIf a call to hGetPosn hdl returns a position p, then computation hSetPosn p sets the position of hdl to the position it held at the time of the call to hGetPosn. This operation may fail with: 6 hSetFileSize hSetFileSize :: Handle -> Integer -> IO ()2}}HandleIntegerIO()|hSetFileSize hdl size truncates the physical file with handle hdl to size bytes. 6hSetEchohSetEcho :: Handle -> Bool -> IO ()%~ ~HandleBoolIO()<Set the echoing status of a handle connected to a terminal. 6 hSetBuffering hSetBuffering :: Handle ->  BufferMode -> IO ()~~Handle BufferModeIO()uComputation hSetBuffering hdl mode sets the mode of buffering for handle hdl on subsequent reads and writes. If the buffer mode is changed from BlockBuffering or LineBuffering to NoBuffering, then
  • if hdl is writable, the buffer is flushed as for hFlush;
  • if hdl is not writable, the contents of the buffer is discarded.
This operation may fail with:
  • isPermissionError if the handle has already been used for reading or writing and the implementation does not allow the buffering mode to be changed.
6hSetBinaryModehSetBinaryMode :: Handle -> Bool -> IO ()ˁHandleBoolIO()qSelect binary mode (True) or text mode (False) on a open handle. (See also openBinaryFile.) 6hSeek hSeek :: Handle -> SeekMode -> Integer -> IO ()ĂHandleSeekModeIntegerIO()Computation hSeek hdl mode i sets the position of handle hdl depending on mode. The offset i is given in terms of 8-bit bytes. If hdl is block- or line-buffered, then seeking to a position which is not in the current buffer will first cause any items in the output buffer to be written to the device, and then cause the input buffer to be discarded. Some handles may not be seekable (see hIsSeekable), or only support a subset of the possible positioning operations (for instance, it may only be possible to seek to the end of a tape, or to a positive offset from the beginning or current position). It is not possible to set a negative I/O position, or for a physical file, an I/O position beyond the current end-of-file. This operation may fail with: hrefhref :: String -> HtmlAttr҆StringHtmlAttr6hReadyhReady :: Handle -> IO Bool3HandleIOBoolComputation hReady hdl indicates whether at least one item is available for input from handle hdl. This operation may fail with:
  • System.IO.Error.isEOFError if the end of file has been reached.
hrhr :: HtmlWPHtml6 hPutStrLn hPutStrLn :: Handle -> String -> IO ()ԈHandleStringIO():The same as hPutStr, but adds a newline character. e hPutStrLn hPutStrLn :: Handle ->  ByteString -> IO ()rHandle ByteStringIO()9Write a ByteString to a handle, appending a newline byte 6hPutStrhPutStr :: Handle -> String -> IO ()E(HandleStringIO().Computation hPutStr hdl s writes the string s to the file or channel managed by hdl. This operation may fail with: ehPutStrhPutStr :: Handle ->  ByteString -> IO ()ӋHandle ByteStringIO()/A synonym for hPut, for compatibility 6hPutCharhPutChar :: Handle -> Char -> IO ()HandleCharIO()yComputation hPutChar hdl ch writes the character ch to the file or channel managed by hdl. Characters may be buffered if buffering is enabled for hdl. This operation may fail with: 6hPutBufNonBlocking hPutBufNonBlocking :: Handle -> Ptr a -> Int -> IO IntHandlePtraIntIOInt6hPutBuf hPutBuf :: Handle -> Ptr a -> Int -> IO ()G#HandlePtraIntIO()hPutBuf hdl buf count writes count 8-bit bytes from the buffer buf to the handle hdl. It returns (). This operation may fail with:
  • ResourceVanished if the handle is a pipe or socket, and the reading end is closed. (If this is a POSIX system, and the program has not asked to ignore SIGPIPE, then a SIGPIPE may be delivered instead, whose default action is to terminate the program).
ehPuthPut :: Handle ->  ByteString -> IO ()hHandle ByteStringIO()<Outputs a ByteString to the specified Handle. _ HPrintfTypeclass  HPrintfType tThe HPrintfType class provides the variable argument magic for hPrintf. Its implementation is intentionally not visible from this module. _hPrintfhPrintf :: HPrintfType r => Handle -> String -> r+ HPrintfTyperHandleStringrSimilar to printf, except that output is via the specified Handle. The return type is restricted to (IO a). 6hPrinthPrint ::  Show a => Handle -> a -> IO ()7ShowaHandleaIO()Computation hPrint hdl t writes the string representation of t given by the shows function to the file or channel managed by hdl and appends a newline. This operation may fail with:
  • System.IO.Error.isFullError if the device is full; or
  • System.IO.Error.isPermissionError if another system resource limit would be exceeded.
 hotLinkURL hotLinkURL :: HotLink -> URL!HotLinkURLhotLinkContentshotLinkContents :: HotLink -> [Html]}HotLink[]HtmlhotLinkAttributeshotLinkAttributes :: HotLink ->  [HtmlAttr]HotLink[]HtmlAttrhotlinkhotlink :: URL -> [Html] -> HotLinkpURL[]HtmlHotLinkHotLink HotLink :: URL -> [Html] ->  [HtmlAttr] -> HotLink+URL[]Html[]HtmlAttrHotLinkHotLinkdata HotLink]hostNamehostName ::  HostEntry -> HostNameǘ HostEntryHostNameHostNametype HostName = StringHostNametype HostName = StringE hostFamily hostFamily ::  HostEntry -> Family HostEntryFamily HostEntry  HostEntry :: HostName ->  [HostName] -> Family ->  [HostAddress] ->  HostEntryDHostName[]HostNameFamily[] HostAddress HostEntry HostEntrydata  HostEntry hostAliases hostAliases ::  HostEntry ->  [HostName]5 HostEntry[]HostName hostAddresses hostAddresses ::  HostEntry ->  [HostAddress] HostEntry[] HostAddress HostAddress6type  HostAddress6# = (Word32, Word32, Word32, Word32) hostAddress hostAddress ::  HostEntry ->  HostAddresss HostEntry HostAddress HostAddresstype  HostAddress = Word32Ӝ!hook_writeBlock hook_writeBlock :: StreamHooks ty -> (ty -> String) -> ty ->  Result () -> IO ()r StreamHookstytyStringtyResult()IO()! hook_readLine  hook_readLine :: StreamHooks ty -> (ty -> String) ->  Result ty -> IO (){? StreamHookstytyStringResulttyIO()!hook_readBlock hook_readBlock :: StreamHooks ty -> (ty -> String) -> Int ->  Result ty -> IO ()Z StreamHookstytyStringIntResulttyIO()! hook_close hook_close :: StreamHooks ty -> IO ()ҟ StreamHookstyIO()6 hLookAhead hLookAhead :: Handle -> IO Char;$HandleIOCharComputation hLookAhead returns the next character from the handle without removing it from the input buffer, blocking until a character is available. This operation may fail with: 6 hIsWritable hIsWritable :: Handle -> IO BoolHandleIOBool6hIsTerminalDevicehIsTerminalDevice :: Handle -> IO Bool%HandleIOBool'Is the handle connected to a terminal? 6 hIsSeekable hIsSeekable :: Handle -> IO BoolHandleIOBool6 hIsReadable hIsReadable :: Handle -> IO Bool" HandleIOBool6hIsOpenhIsOpen :: Handle -> IO BoolnHandleIOBool6hIsEOFhIsEOF :: Handle -> IO BoolϣHandleIOBoolyFor a readable handle hdl, hIsEOF hdl returns True if no further input can be taken from hdl or for a physical file, if the current I/O position is equal to the length of the file. Otherwise, it returns False. NOTE: hIsEOF may block, because it is the same as calling hLookAhead and checking for an EOF exception. 6 hIsClosed hIsClosed :: Handle -> IO BoolƥHandleIOBoolhiddenhidden :: String -> String -> Html8StringStringHtml6hGetPosnhGetPosn :: Handle ->  IO HandlePosnHandleIO HandlePosnComputation hGetPosn hdl returns the current I/O position of hdl as a value of the abstract type HandlePosn. ehGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteStringɧHandleIntIO ByteStringhGetNonBlocking is identical to hGet, except that it will never block waiting for data to become available, instead it returns only whatever data is available. 6hGetLinehGetLine :: Handle ->  IO String٨HandleIOStringComputation hGetLine hdl reads a line from the file or channel managed by hdl. This operation may fail with:
  • isEOFError if the end of file is encountered when reading the first character of the line.
If hGetLine encounters end-of-file at any other point while reading in a line, it is treated as a line terminator and the (partial) line is returned. ehGetLinehGetLine :: Handle ->  IO ByteStringЪHandleIO ByteStringRead a line from a handle 6hGetEchohGetEcho :: Handle -> IO BoollUHandleIOBool<Get the echoing status of a handle connected to a terminal. 6 hGetContents hGetContents :: Handle ->  IO StringHandleIOStringComputation hGetContents hdl returns the list of characters corresponding to the unread portion of the channel or file managed by hdl, which is put into an intermediate state, semi-closed. In this state, hdl is effectively closed, but items are read from hdl on demand and accumulated in a special list returned by hGetContents hdl. Any operation that fails because a handle is closed, also fails if a handle is semi-closed. The only exception is hClose. A semi-closed handle becomes closed:
  • if hClose is applied to it;
  • if an I/O error occurs when reading an item from the handle;
  • or once the entire contents of the handle has been read.
Once a semi-closed handle becomes closed, the contents of the associated list becomes fixed. The contents of this final list is only partially specified: it will contain at least all the items of the stream that were evaluated prior to the handle becoming closed. Any I/O errors encountered while a handle is semi-closed are simply discarded. This operation may fail with: e hGetContents hGetContents :: Handle ->  IO ByteStringL/HandleIO ByteStringRead entire handle contents strictly into a ByteString. This function reads chunks at a time, doubling the chunksize on each read. The final buffer is then realloced to the appropriate size. For files > half of available memory, this may lead to memory exhaustion. Consider using readFile in this case. As with hGet, the string representation in the file is assumed to be ISO-8859-1. The Handle is closed once the contents have been read, or if an exception is thrown. 6hGetCharhGetChar :: Handle -> IO CharHandleIOCharComputation hGetChar hdl reads a character from the file or channel managed by hdl, blocking until a character is available. This operation may fail with: 6hGetBufNonBlocking hGetBufNonBlocking :: Handle -> Ptr a -> Int -> IO IntH#HandlePtraIntIOInthGetBufNonBlocking hdl buf count reads data from the handle hdl into the buffer buf until either EOF is reached, or count 8-bit bytes have been read, or there is no more data available to read immediately. hGetBufNonBlocking is identical to hGetBuf, except that it will never block waiting for data to become available, instead it returns only whatever data is available. To wait for data to arrive before calling hGetBufNonBlocking, use hWaitForInput. If the handle is a pipe or socket, and the writing end is closed, hGetBufNonBlocking will behave as if EOF was reached. 6 hGetBuffering hGetBuffering :: Handle ->  IO BufferModeP3HandleIO BufferModecComputation hGetBuffering hdl returns the current buffering mode for hdl. 6hGetBuf hGetBuf :: Handle -> Ptr a -> Int -> IO IntCHandlePtraIntIOInthGetBuf hdl buf count reads data from the handle hdl into the buffer buf until either EOF is reached or count 8-bit bytes have been read. It returns the number of bytes actually read. This may be zero if EOF was reached before any data was read (or if count is zero). hGetBuf never raises an EOF exception, instead it returns a value smaller than count. If the handle is a pipe or socket, and the writing end is closed, hGetBuf will behave as if EOF was reached. ehGethGet :: Handle -> Int ->  IO ByteStringܻHandleIntIO ByteStringRead a ByteString directly from the specified Handle. This is far more efficient than reading the characters into a String and then using pack. First argument is the Handle to read from, and the second is the number of bytes to read. It returns the bytes read, up to n, or EOF. hGet is implemented in terms of hGetBuf. If the handle is a pipe or socket, and the writing end is closed, hGet will behave as if EOF was reached. 6hFlushhFlush :: Handle -> IO ()HandleIO()The action hFlush hdl causes any items buffered for output in handle hdl to be sent immediately to the operating system. This operation may fail with:
  • isFullError if the device is full;
  • isPermissionError if a system resource limit would be exceeded. It is unspecified whether the characters in the buffer are discarded or retained under these circumstances.
6 hFileSize hFileSize :: Handle ->  IO Integer.HandleIOIntegerFor a handle hdl which attached to a physical file, hFileSize hdl returns the size of that file in 8-bit bytes. heightheight :: Int -> HtmlAttrIntHtmlAttr7 HeapOverflow HeapOverflow :: AsyncExceptionm\AsyncExceptionThe program's heap is reaching its limit, and the program should take action to reduce the amount of live data it has. Notes:
  • It is undefined which thread receives this exception.
  • GHC currently does not throw HeapOverflow exceptions.
5 HeapOverflow HeapOverflow :: AsyncExceptionAsyncExceptionThe program's heap is reaching its limit, and the program should take action to reduce the amount of live data it has. Notes:
  • It is undefined which thread receives this exception.
  • GHC currently does not throw HeapOverflow exceptions.
headerheader :: Html -> Html;,HtmlHtmlheadhead :: [a] -> ax[]aa>Extract the first element of a list, which must be non-empty. eheadhead ::  ByteString -> Word8#  ByteStringWord8O(1) Extract the first element of a ByteString, which must be non-empty. An exception will be thrown in the case of an empty ByteString. 6hClosehClose :: Handle -> IO ()HandleIO()Computation hClose hdl makes handle hdl closed. Before the computation finishes, if hdl is writable its buffer is flushed as for hFlush. Performing hClose on a handle that has already been closed has no effect; doing so is not an error. All other operations on a closed handle will fail. If hClose fails for any reason, any further operations (apart from hClose) on the handle will still fail as if hdl had been successfully closed. C HasResolutionclass  HasResolution aIS hashUnique hashUnique :: Unique -> IntUniqueIntHashes a Unique into an Int. Two Uniques may hash to the same value, although in practice this is unlikely. The Int returned makes a good hash key.  HashTabledata  HashTable key val hashString hashString :: String -> Int32StringInt32=A sample hash function for Strings. We keep multiplying by the golden ratio and adding. The implementation is:
hashString = foldl' f golden
  where f m c = fromIntegral (ord c) * magic + hashInt32 m
        magic = 0xdeadbeef
Where hashInt32 works just as hashInt shown above. Knuth argues that repeated multiplication by the golden ratio will minimize gaps in the hash space, and thus it's a good choice for combining together multiple keys to form one. Here we know that individual characters c are often small, and this produces frequent collisions if we use ord c alone. A particular problem are the shorter low ASCII and ISO-8859-1 character strings. We pre-multiply by a magic twiddle factor to obtain a good distribution. In fact, given the following test:
testp :: Int32 -> Int
testp k = (n - ) . length . group . sort . map hs . take n $ ls
  where ls = [] : [c : l | l <- ls, c <- ['\0'..'\xff']]
        hs = foldl' f golden
        f m c = fromIntegral (ord c) * k + hashInt32 m
        n = 100000
We discover that testp magic = 0. hashInthashInt :: Int -> Int32{IntInt32A sample (and useful) hash function for Int and Int32, implemented by extracting the uppermost 32 bits of the 64-bit result of multiplying by a 33-bit constant. The constant is from Knuth, derived from the golden ratio:
golden = round ((sqrt 5 - 1) * 2^32)
We get good key uniqueness on small inputs (a problem with previous versions): (length $ group $ sort $ map hashInt [-32767..65536]) == 65536 + 32768 ! HandleStreamdata  HandleStream an handleSocketErrorhandleSocketError :: Socket ->  IOException ->  IO (Result a)Socket IOExceptionIOResulta)Exception handler for socket operations. 5HandlerHandler ::  (e -> IO a) ->  Handler aeIOaHandlera5Handlerdata Handler a6 HandlePosndata  HandlePosn7 handleJust  handleJust :: (Exception -> Maybe b) ->  (b -> IO a) -> IO a -> IO a ExceptionMaybebbIOaIOaIOaUA version of catchJust with the arguments swapped around (see handle). 5 handleJust  handleJust :: Exception e => (e -> Maybe b) ->  (b -> IO a) -> IO a -> IO a ExceptioneeMaybebbIOaIOaIOaUA version of catchJust with the arguments swapped around (see handle).  handleExceptionCGIhandleExceptionCGI :: CGI a -> (Exception -> CGI a) -> CGI aCGIa ExceptionCGIaCGIaDDeprecated version of catchCGI. Use catchCGI instead.  handleErrors handleErrors ::  CGI CGIResult ->  CGI CGIResultCGI CGIResultCGI CGIResultCatches any exception thrown by the given CGI action, returns an error page with a 500 Internal Server Error, showing the exception information, and logs the error. Typical usage:
cgiMain :: CGI CGIResult
cgiMain = ...

main :: IO ()
main = runCGI (handleErrors cgiMain)
7handlehandle :: (Exception -> IO a) -> IO a -> IO aW ExceptionIOaIOaIOaA version of catch with the arguments swapped around; useful in situations where the code for the handler is shorter. For example:
do handle (\e -> exitWith (ExitFailure 1)) $
   ...
5handlehandle :: Exception e =>  (e -> IO a) -> IO a -> IO a ExceptioneeIOaIOaIOaA version of catch with the arguments swapped around; useful in situations where the code for the handler is shorter. For example:
do handle (\e -> exitWith (ExitFailure 1)) $
   ...
6Handledata HandleuHaskell defines operations to read and write characters from and to files, represented by values of type Handle. Each value of this type is a handle: a record used by the Haskell run-time system to manage I/O with file system objects. A handle has at least the following properties:
  • whether it manages input or output or both;
  • whether it is open, closed or semi-closed;
  • whether the object is seekable;
  • whether buffering is disabled, or enabled on a line or block basis;
  • a buffer (whose length may be zero).
Most handles will also have a current I/O position indicating where the next input or output operation will occur. A handle is readable if it manages only input or both input and output; likewise, it is writable if it manages only output or both input and output. A handle is open when first allocated. Once it is closed it can no longer be used for either input or output, though an implementation cannot re-use its storage while references remain to it. Handles are in the Show and Eq classes. The string produced by showing a handle is system dependent; it should include enough information to identify the handle for debugging. A handle is equal according to == only to itself; no attempt is made to compare the internal state of different handles for equality. GHC note: a Handle will be automatically closed when the garbage collector detects that it has become unreferenced by the program. However, relying on this behaviour is not generally recommended: the garbage collector is unpredictable. If possible, use explicit an explicit hClose to close Handles when they are no longer required. GHC does not currently attempt to free up file descriptors when they have run out, it is your responsibility to ensure that this doesn't happen. h6h6 :: Html -> HtmlHtmlHtmlh5h5 :: Html -> HtmlHtmlHtmlh4h4 :: Html -> HtmlG8HtmlHtmlh3h3 :: Html -> HtmlHtmlHtmlh2h2 :: Html -> HtmlHtmlHtmlh1h1 :: Html -> Html+HtmlHtml9gunfold gunfold ::  Data a => (c (b -> r) -> c r) ->  (r -> c r) -> Constr -> c aDataacbrcrrcrConstrcaguigui :: String -> Html -> Html\EStringHtmlHtmlguardguard :: MonadPlus m => Bool -> m () MonadPlusmBoolm()guard b is return () if b is True, and mzero if b is False. groupBygroupBy :: (a -> a -> Bool) -> [a] -> [[a]]aaBool[]a[][]aKThe groupBy function is the non-overloaded version of group. egroupBygroupBy :: (Word8 -> Word8 -> Bool) ->  ByteString ->  [ByteString]Word8Word8Bool ByteString[] ByteStringKThe groupBy function is the non-overloaded version of group. groupgroup :: Eq a => [a] -> [[a]]pEqa[]a[][]aThe group function takes a list and returns a list of lists such that the concatenation of the result is equal to the argument. Moreover, each sublist in the result contains only equal elements. For example,
group "Mississippi" = ["M","i","ss","i","ss","i","pp","i"]
It is a special case of groupBy, which allows the programmer to supply their own equality test. egroupgroup ::  ByteString ->  [ByteString]m ByteString[] ByteStringThe group function takes a ByteString and returns a list of ByteStrings such that the concatenation of the result is equal to the argument. Moreover, each sublist in the result contains only equal elements. For example,
group "Mississippi" = ["M","i","ss","i","ss","i","pp","i"]
It is a special case of groupBy, which allows the programmer to supply their own equality test. It is about 40% faster than groupBy (==) greengreen :: StringStringgraygray :: StringStringographFromEdges'graphFromEdges' ::  Ord key => [(node, key, [key])] -> %(Graph, Vertex -> (node, key, [key]))_Ordkey[](,,)nodekey[]key(,)GraphVertex(,,)nodekey[]keyIdentical to graphFromEdges, except that the return value does not include the function which maps keys to vertices. This version of graphFromEdges is for backwards compatibility. ographFromEdgesgraphFromEdges ::  Ord key => [(node, key, [key])] -> :(Graph, Vertex -> (node, key, [key]), key -> Maybe Vertex)0Ordkey[](,,)nodekey[]key(,,)GraphVertex(,,)nodekey[]keykeyMaybeVertexBuild a graph from a list of nodes uniquely identified by keys, with a list of keys of nodes this node should have edges to. The out-list may contain keys that don't correspond to nodes of the graph; they are ignored. oGraphtype Graph = Table [Vertex]YAdjacency list representation of a graph, mapping each vertex to its list of successors. 9gmapTgmapT ::  Data a => (b -> b) -> a -> aDataabbaa9gmapQr gmapQr ::  Data a => (r' -> r -> r) -> r ->  (d -> r') -> a -> rN"Dataar'rrrdr'ar9gmapQl gmapQl ::  Data a => (r -> r' -> r) -> r ->  (d -> r') -> a -> rDataarr'rrdr'ar9gmapQi gmapQi ::  Data a => Int -> (d -> u) -> a -> ukDataaIntduau9gmapQgmapQ ::  Data a => (d -> u) -> a -> [u] Dataadua[]u9gmapMpgmapMp :: (Data a, MonadPlus m) =>  (d -> m d) -> a -> m a{Dataa MonadPlusmdmdama9gmapMogmapMo :: (Data a, MonadPlus m) =>  (d -> m d) -> a -> m aW!Dataa MonadPlusmdmdama9gmapMgmapM :: (Data a, Monad m) =>  (d -> m d) -> a -> m aDataaMonadmdmdama9gfoldl gfoldl ::  Data a => (c (d -> b) -> d -> c b) ->  (g -> c g) -> a -> c axDataacdbdcbgcgacaL getZipList getZipList ::  ZipList a -> [a]# ZipLista[]a getVarWithDefaultgetVarWithDefault :: MonadCGI m => String -> String -> m StringMonadCGImStringStringmString getVarsgetVars :: MonadCGI m => m [(String, String)]Z(MonadCGImm[](,)StringString4Get all CGI environment variables and their values.  getVargetVar :: MonadCGI m => String -> m (Maybe String)MonadCGImStringmMaybeStringjGet the value of a CGI environment variable. Example:
remoteAddr <- getVar "REMOTE_ADDR"
pgetUserDocumentsDirectorygetUserDocumentsDirectory ::  IO FilePathIOFilePathReturns the current user's document directory. The directory returned is expected to be writable by the current user, but note that it isn't generally considered good practice to store application-specific data here; use getAppUserDataDirectory instead. On Unix, getUserDocumentsDirectory returns the value of the HOME environment variable. On Windows, the system is queried for a suitable path; a typical path might be C:/Documents and Settings/user/My Documents. The operation may fail with: 7getUncaughtExceptionHandlergetUncaughtExceptionHandler :: IO (Exception -> IO ())|^IO ExceptionIO()pgetTemporaryDirectorygetTemporaryDirectory ::  IO FilePathIOFilePathReturns the current directory for temporary files. On Unix, getTemporaryDirectory returns the value of the TMPDIR environment variable or "/tmp" if the variable isn't defined. On Windows, the function checks for the existence of environment variables in the following order and uses the first path found:
  • TMP environment variable.
  • TEMP environment variable.
  • USERPROFILE environment variable.
  • The Windows directory
The operation may fail with: The function doesn't verify whether the path exists. KgetSumgetSum :: Sum a -> aSumaa{ getStdRandom getStdRandom :: (StdGen -> (a, StdGen)) -> IO ae=StdGen(,)aStdGenIOa5Uses the supplied function to get a value from the current global random 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))
{ getStdGen getStdGen ::  IO StdGenIOStdGen)Gets the global random number generator. getSocketOptiongetSocketOption :: Socket ->  SocketOption -> IO IntSocket SocketOptionIOInt getSocketName getSocketName :: Socket ->  IO SockAddr SocketIOSockAddrgetServicePortNumbergetServicePortNumber ::  ServiceName ->  IO PortNumber ServiceNameIO PortNumberCGet the PortNumber corresponding to the ServiceName. getServiceEntrygetServiceEntry :: IO ServiceEntry]HIO ServiceEntrygetServiceEntriesgetServiceEntries :: Bool -> IO [ServiceEntry]BoolIO[] ServiceEntrygetServiceByPortgetServiceByPort ::  PortNumber ->  ProtocolName -> IO ServiceEntryj PortNumber ProtocolNameIO ServiceEntryCGet the service given a PortNumber and ProtocolName. getServiceByNamegetServiceByName ::  ServiceName ->  ProtocolName -> IO ServiceEntrya ServiceName ProtocolNameIO ServiceEntryGet service by name. %getResponseBodygetResponseBody :: Result (Response ty) -> IO ty7ResultResponsetyIOtygetResponseBody response takes the response of a HTTP requesting action and tries to extricate the body of the Response response. If the request action returned an error, an IO exception is raised. % getRequest getRequest :: String -> Request_StringoStringRequest_StringgetRequest urlString is convenience constructor for basic GET Requests. If urlString isn't a syntactically valid URL, the function raises an error. &getProxygetProxy :: BrowserAction t Proxy   BrowserActiontProxy6getProxy returns the current proxy settings. getProtocolNumbergetProtocolNumber ::  ProtocolName -> IO ProtocolNumberj C  ProtocolNameIOProtocolNumbergetProtocolEntrygetProtocolEntry :: IO ProtocolEntry  IO ProtocolEntrygetProtocolEntriesgetProtocolEntries :: Bool -> IO [ProtocolEntry]d @ BoolIO[] ProtocolEntrygetProtocolByNumbergetProtocolByNumber :: ProtocolNumber -> IO ProtocolEntry  ProtocolNumberIO ProtocolEntrygetProtocolByNamegetProtocolByName ::  ProtocolName -> IO ProtocolEntry p  ProtocolNameIO ProtocolEntryY getProgName getProgName ::  IO String  IOStringComputation getProgName returns the name of the program as it was invoked. However, this is hard-to-impossible to implement on some non-Unix OSes, so instead, for maximum portability, we just return the leafname of the program as invoked. Even then there are some differences between platforms: on Windows, for example, a program invoked as foo is probably really FOO.EXE, and that is what getProgName will return. K getProduct getProduct ::  Product a -> aProductaapgetPermissionsgetPermissions :: FilePath -> IO PermissionsfFilePathIO Permissions+The getPermissions operation returns the permissions for the file or directory. The operation may fail with:  getPeerName getPeerName :: Socket ->  IO SockAddr$ SocketIOSockAddr getPeerCred getPeerCred :: Socket -> IO (CUInt, CUInt, CUInt)SocketIO(,,)CUIntCUIntCUIntReturns the processID, userID and groupID of the socket's peer. Only available on platforms that support SO_PEERCRED on domain sockets. getNetworkEntrygetNetworkEntry :: IO NetworkEntryIO NetworkEntrygetNetworkEntriesgetNetworkEntries :: Bool -> IO [NetworkEntry]2BoolIO[] NetworkEntry!Get the list of network entries. getNetworkByNamegetNetworkByName ::  NetworkName -> IO NetworkEntry NetworkNameIO NetworkEntrygetNetworkByAddrgetNetworkByAddr ::  NetworkAddr -> Family -> IO NetworkEntry_ NetworkAddrFamilyIO NetworkEntry getNameInfo  getNameInfo :: [NameInfoFlag] -> Bool -> Bool -> SockAddr -> &IO (Maybe HostName, Maybe ServiceName):[] NameInfoFlagBoolBoolSockAddrIO(,)MaybeHostNameMaybe ServiceNameResolve an address to a host or service name. This function is protocol independent. The list of NameInfoFlag values controls query behaviour. The supported flags are as follows:
  • NI_NOFQDN If a host is local, return only the hostname part of the FQDN.
  • NI_NUMERICHOST The name of the host is not looked up. Instead, a numeric representation of the host's address is returned. For an IPv4 address, this will be a dotted-quad string. For IPv6, it will be colon-separated hexadecimal.
  • NI_NUMERICSERV The name of the service is not looked up. Instead, a numeric representation of the service is returned.
  • NI_NAMEREQD If the hostname cannot be looked up, an IO error is thrown.
  • NI_DGRAM Resolve a datagram-based service name. This is required only for the few protocols that have different port numbers for their datagram-based versions than for their stream-based versions.
Hostname and service name lookups can be expensive. You can specify which lookups to perform via the two Bool arguments. If one of these is False, the corresponding value in the returned tuple will be Nothing, and no lookup will be performed. If a host or service's name cannot be looked up, then the numeric form of the address or service will be returned. If the query fails, this function throws an IO exception. Example: (hostName, _) <- getNameInfo [] True False myAddress  getMultiInputFPSgetMultiInputFPS :: MonadCGI m => String -> m [ByteString]< MonadCGImStringm[] ByteString;Same as getMultiInput but using ByteStrings.  getMultiInput getMultiInput :: MonadCGI m => String ->  m [String] MonadCGImStringm[]StringGet all the values of an input variable, for example from a form. This can be used to get all the values from form controls which allow multiple values to be selected. Example:
vals <- getMultiInput "my_checkboxes"
pgetModificationTimegetModificationTime :: FilePath ->  IO ClockTime~`FilePathIO ClockTimeLThe getModificationTime operation returns the clock time at which the file or directory was last modified. The operation may fail with: &getMaxRedirectsgetMaxRedirects :: BrowserAction t (Maybe Int)K (  BrowserActiontMaybeIntgetMaxRedirects returns the current setting for the max-redirect count. If Nothing, the Network.Browser's default is used. &getMaxErrorRetriesgetMaxErrorRetries :: BrowserAction t (Maybe Int)f!C! BrowserActiontMaybeIntMgetMaxErrorRetries returns the current max number of error retries. &getMaxAuthAttemptsgetMaxAuthAttempts :: BrowserAction t (Maybe Int):"" BrowserActiontMaybeIntwgetMaxAuthAttempts returns the current max auth attempts. If Nothing, the browser's default is used. 6getLinegetLine ::  IO String""IOStringSRead a line from the standard input device (same as hGetLine stdin). egetLinegetLine ::  IO ByteString##IO ByteStringRead a line from stdin. KgetLastgetLast :: Last a -> Maybe a $$LastaMaybea getInputsFPS getInputsFPS :: MonadCGI m => m [(String, ByteString)]$$MonadCGImm[](,)String ByteStringGet the names and values of all inputs. Note: the same name may occur more than once in the output, if there are several values for the name.  getInputs getInputs :: MonadCGI m => m [(String, String)]%%MonadCGImm[](,)StringStringGet the names and values of all inputs. Note: the same name may occur more than once in the output, if there are several values for the name.  getInputNames getInputNames :: MonadCGI m =>  m [String]&&MonadCGImm[]String&Get the names of all input variables.  getInputFPS getInputFPS :: MonadCGI m => String -> m (Maybe ByteString)'o'MonadCGImStringmMaybe ByteString7Like getInput, but returns a ByteString.  getInputFilenamegetInputFilename :: MonadCGI m => String -> m (Maybe String)(O(MonadCGImStringmMaybeStringGet the file name of an input.  getInputContentTypegetInputContentType :: MonadCGI m => String -> m (Maybe String)I))MonadCGImStringmMaybeStringGet the content-type of an input, if the input exists, e.g. image/jpeg. For non-file inputs, this function returns text/plain. You can use parseContentType to get a structured representation of the the content-type value.  getInputgetInput :: MonadCGI m => String -> m (Maybe String)**MonadCGImStringmMaybeStringGet the value of an input variable, for example from a form. If the variable has multiple values, the first one is returned. Example:
query <- getInput "query"
getHtmlElementsgetHtmlElements :: Html ->  [HtmlElement]++Html[] HtmlElement getHostName getHostName ::  IO HostNameU,D,IOHostNamecCalling getHostName returns the standard host name for the current processor, as set at boot time.  getHostEntry getHostEntry ::  IO HostEntry--IO HostEntrygetHostEntriesgetHostEntries :: Bool -> IO [HostEntry]-r-BoolIO[] HostEntry getHostByName getHostByName :: HostName ->  IO HostEntry.-HostNameIO HostEntry+Resolve a HostName to IPv4 address.  getHostByAddr getHostByAddr :: Family ->  HostAddress ->  IO HostEntry..Family HostAddressIO HostEntryrGet a HostEntry corresponding to the given address and family. Note that only IPv4 is currently supported. pgetHomeDirectorygetHomeDirectory ::  IO FilePath//IOFilePathReturns the current user's home directory. The directory returned is expected to be writable by the current user, but note that it isn't generally considered good practice to store application-specific data here; use getAppUserDataDirectory instead. On Unix, getHomeDirectory returns the value of the HOME environment variable. On Windows, the system is queried for a suitable path; a typical path might be C:Documents And Settingsuser. The operation may fail with: KgetFirstgetFirst :: First a -> Maybe a22FirstaMaybeaYgetEnvironmentgetEnvironment :: IO [(String, String)]a3=3IO[](,)StringStringgetEnvironment retrieves the entire environment as a list of (key,value) pairs. If an environment entry does not contain an '=' character, the key is the whole entry and the value is the empty string. YgetEnvgetEnv :: String ->  IO String44StringIOStringComputation getEnv var returns the value of the environment variable var. This computation may fail with:
  • System.IO.Error.isDoesNotExistError if the environment variable does not exist.
KgetDualgetDual :: Dual a -> a55DualaapgetDirectoryContentsgetDirectoryContents :: FilePath ->  IO [FilePath]6i6FilePathIO[]FilePath(getDirectoryContents dir returns a list of all entries in dir. The operation may fail with: pgetCurrentDirectorygetCurrentDirectory ::  IO FilePath: :IOFilePathIf the operating system has a notion of current directories, getCurrentDirectory returns an absolute path to the current directory of the calling process. The operation may fail with: X getCPUTime getCPUTime ::  IO Integerk=[=IOIntegerComputation getCPUTime returns the number of picoseconds CPU time used by the current program. The precision of this result is implementation-dependent. & getCookies getCookies :: BrowserAction t [Cookie]>\> BrowserActiont[]CookieMgetCookies returns the current set of cookies known to the browser. &getCookieFiltergetCookieFilter :: *BrowserAction t (URI -> Cookie -> IO Bool)i?9? BrowserActiontURICookieIOBoolGgetCookieFilter returns the current cookie acceptance filter.  getCookie getCookie :: MonadCGI m => String -> m (Maybe String)G@@MonadCGImStringmMaybeStringGet the value of a cookie. 6 getContents getContents ::  IO String@@IOStringThe getContents operation returns all user input as a single string, which is read lazily as it is needed (same as hGetContents stdin). e getContents getContents ::  IO ByteStringAAIO ByteStringgetContents. Read stdin strictly. Equivalent to hGetContents stdin The Handle is closed after the contents have been read. LgetConstgetConst ::  Const a b -> aBzBConstabax getClockTime getClockTime ::  IO ClockTimeBBIO ClockTime9returns the current time in its internal representation. 6getChargetChar :: IO CharjC]CIOCharXRead a character from the standard input device (same as hGetChar stdin). &getBrowserStategetBrowserState ::  BrowserAction t (BrowserState t)MD%D BrowserActiont BrowserStatetvgetBrowserState returns the current browser config. Useful for restoring state across BrowserActions.  getBodyFPS getBodyFPS :: MonadCGI m =>  m ByteString7EEMonadCGImm ByteString6Get the uninterpreted request body as lazy ByteString  getBodygetBody :: MonadCGI m => m StringEEMonadCGImmString/Get the uninterpreted request body as a String &getAuthorityGengetAuthorityGen :: >BrowserAction t (URI -> String -> IO (Maybe (String, String)))FF BrowserActiontURIStringIOMaybe(,)StringStringAgetAuthorityGen returns the current authority generator &getAuthoritiesgetAuthorities :: BrowserAction t [Authority]GjG BrowserActiont[] Authority\getAuthorities return the current set of Authoritys known to the browser. YgetArgsgetArgs ::  IO [String]?H*HIO[]StringtComputation getArgs returns a list of the program's command line arguments (not including the program name). pgetAppUserDataDirectorygetAppUserDataDirectory :: String ->  IO FilePath>I#IStringIOFilePathReturns the pathname of a directory in which application-specific data for the current user can be stored. The result of getAppUserDataDirectory for a given application is specific to the current user. The argument should be the name of the application, which will be used to construct the pathname (so avoid using unusual characters that might result in an invalid pathname). Note: the directory may not actually exist, and may need to be created first. It is expected that the parent directory exists and is writable. On Unix, this function returns $HOME/.appName. On Windows, a typical path might be
C:/Documents And Settings/user/Application Data/appName
The operation may fail with: KgetAnygetAny :: Any -> BoolNM@MAnyBool&getAllowRedirectsgetAllowRedirects :: BrowserAction t BoolMM BrowserActiontBoolSgetAllowRedirects returns current setting of the do-chase-redirects flag. KgetAllgetAll :: All -> BooliN[NAllBool getAddrInfo  getAddrInfo :: Maybe AddrInfo -> Maybe HostName -> Maybe ServiceName ->  IO [AddrInfo]WOOMaybeAddrInfoMaybeHostNameMaybe ServiceNameIO[]AddrInfo4Resolve a host or service name to one or more addresses. The AddrInfo values that this function returns contain SockAddr values that you can pass directly to connect or bindSocket. This function is protocol independent. It can return both IPv4 and IPv6 address information. The AddrInfo argument specifies the preferred query behaviour, socket options, or protocol. You can override these conveniently using Haskell's record update syntax on defaultHints, for example as follows:
myHints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] }
Values for addrFlags control query behaviour. The supported flags are as follows:
  • AI_PASSIVE If no HostName value is provided, the network address in each SockAddr will be left as a wild card, i.e. as either iNADDR_ANY or iN6ADDR_ANY. This is useful for server applications that will accept connections from any client.
  • AI_CANONNAME The addrCanonName field of the first returned AddrInfo will contain the canonical name of the host.
  • AI_NUMERICHOST The HostName argument must be a numeric address in string form, and network name lookups will not be attempted.
Note: Although the following flags are required by RFC 3493, they may not have an effect on all platforms, because the underlying network stack may not support them. To see whether a flag from the list below will have any effect, call addrInfoFlagImplemented.
  • AI_NUMERICSERV The ServiceName argument must be a port number in string form, and service name lookups will not be attempted.
  • AI_ADDRCONFIG The list of returned AddrInfo values will only contain IPv4 addresses if the local system has at least one IPv4 interface configured, and likewise for IPv6.
  • AI_V4MAPPED If an IPv6 lookup is performed, and no IPv6 addresses are found, IPv6-mapped IPv4 addresses will be returned.
  • AI_ALL If AI_ALL is specified, return all matching IPv6 and IPv4 addresses. Otherwise, this flag has no effect.
You must provide a Just value for at least one of the HostName or ServiceName arguments. HostName can be either a numeric network address (dotted quad for IPv4, colon-separated hex for IPv6) or a hostname. In the latter case, its addresses will be looked up unless AI_NUMERICHOST is specified as a hint. If you do not provide a HostName value and do not set AI_PASSIVE as a hint, network addresses in the result will contain the address of the loopback interface. If the query fails, this function throws an IO exception instead of returning an empty list. Otherwise, it returns a non-empty list of AddrInfo values. There are several reasons why a query might result in several values. For example, the queried-for host could be multihomed, or the service might be available via several protocols. Note: the order of arguments is slightly different to that defined for getaddrinfo in RFC 2553. The AddrInfo parameter comes first to make partial application easier. Example: let hints = defaultHints { addrFlags = [AI_ADDRCONFIG, AI_CANONNAME] } addrs <- getAddrInfo (Just hints) (Just www.haskell.org) (Just http) let addr = head addrs sock <- socket (addrFamily addr) (addrSocketType addr) (addrProtocol addr) connect sock (addrAddress addr) { genRangegenRange :: RandomGen g => g ->  (Int, Int) ^] RandomGengg(,)IntInt genericTake genericTake :: Integral i => i -> [a] -> [a]^u^Integralii[]a[]aThe genericTake function is an overloaded version of take, which accepts any Integral value as the number of elements to take. genericSplitAtgenericSplitAt :: Integral i => i -> [b] ->  ([b], [b])__Integralii[]b(,)[]b[]bThe genericSplitAt function is an overloaded version of splitAt, which accepts any Integral value as the position at which to split. genericReplicategenericReplicate :: Integral i => i -> a -> [a]a`Integraliia[]aThe genericReplicate function is an overloaded version of replicate, which accepts any Integral value as the number of repetitions to make.  genericLength genericLength ::  Num i => [b] -> ibbNumi[]biThe genericLength function is an overloaded version of length. In particular, instead of returning an Int, it returns any type which is an instance of Num. It is, however, less efficient than length.  genericIndex genericIndex :: Integral a => [b] -> a -> bclcIntegrala[]bab~The genericIndex function is an overloaded version of !!, which accepts any Integral value as the index.  genericDrop genericDrop :: Integral i => i -> [a] -> [a]dsdIntegralii[]a[]aThe genericDrop function is an overloaded version of drop, which accepts any Integral value as the number of elements to drop. generate generate :: Int -> StdGen -> Gen a -> aeeIntStdGenGenaageneralCategorygeneralCategory :: Char -> GeneralCategory/ffCharGeneralCategory/The Unicode general category of the character. GeneralCategorydata GeneralCategoryfuUnicode General Categories (column 2 of the UnicodeData table) in the order they are listed in the Unicode standard. Gendata Gen aAggcast2gcast2 :: (Typeable2 t, Typeable2 t') =>  c (t a b) -> Maybe (c (t' a b))hg Typeable2t Typeable2t'ctabMaybect'abCast for * -> * -> * gcast1gcast1 :: (Typeable1 t, Typeable1 t') => c (t a) -> Maybe (c (t' a))hh Typeable1t Typeable1t'ctaMaybect'aCast for * -> * gcastgcast :: (Typeable a, Typeable b) => c a ->  Maybe (c b)iTiTypeableaTypeablebcaMaybecb9A flexible variation parameterised in a type constructor  funResultTy funResultTy :: TypeRep -> TypeRep ->  Maybe TypeRep\j5jTypeRepTypeRepMaybeTypeRepApplies a type to a function type. Returns: Just u if the first argument represents a function of type t -> u and the second argument represents a function of type t. Otherwise, returns Nothing. 'FunPtrdata FunPtr a}kA value of type FunPtr a is a pointer to a function callable from foreign code. The type a will normally be a foreign type, a function type with zero or more arguments where
  • the argument types are marshallable foreign types, i.e. Char, Int, Prelude.Double, Prelude.Float, Bool, Data.Int.Int8, Data.Int.Int16, Data.Int.Int32, Data.Int.Int64, Data.Word.Word8, Data.Word.Word16, Data.Word.Word32, Data.Word.Word64, Ptr a, FunPtr a, Foreign.StablePtr.StablePtr a or a renaming of any of these using newtype.
  • the return type is either a marshallable foreign type or has the form Prelude.IO t where t is a marshallable foreign type or ().
A value of type FunPtr a may be a pointer to a foreign function, either returned by another foreign function or imported with a a static address import like
foreign import ccall "stdlib.h &free"
  p_free :: FunPtr (Ptr a -> IO ())
or a pointer to a Haskell function created using a wrapper stub declared to produce a FunPtr of the correct type. For example:
type Compare = Int -> Int -> Bool
foreign import ccall "wrapper"
  mkCompare :: Compare -> IO (FunPtr Compare)
Calls to wrapper stubs like mkCompare allocate storage, which should be released with Foreign.Ptr.freeHaskellFunPtr when no longer required. To convert FunPtr values to corresponding Haskell functions, one can define a dynamic stub for the specific foreign type, e.g.
type IntFunction = CInt -> IO ()
foreign import ccall "dynamic" 
  mkFun :: FunPtr IntFunction -> IntFunction
Functorclass Functor frCThe Functor class is used for types that can be mapped over. Instances of Functor should satisfy the following laws:
fmap id  ==  id
fmap (f . g)  ==  fmap f . fmap g
The instances of Functor for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws. fuchsiafuchsia :: StringttString fstfst :: (a, b) -> apt]t(,)aba'Extract the first component of a pair.   fromString fromString :: IsString a => String -> autIsStringaStringa fromMaybe fromMaybe :: a -> Maybe a -> a{ufuaMaybeaaThe fromMaybe function takes a default value and and Maybe value. If the Maybe is Nothing, it returns the default values; otherwise, it returns the value contained in the Maybe. lfromListWithKeyfromListWithKey ::  Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k awvOrdkkaaa[](,)kaMapka5O(n*log n). Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey.
let f k a1 a2 = (show k) ++ a1 ++ a2
fromListWithKey f [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "3ab"), (5, "5a5ba")]
fromListWithKey f [] == empty
nfromListWithKeyfromListWithKey :: (Key -> a -> a -> a) ->  [(Key, a)] -> IntMap axxKeyaaa[](,)KeyaIntMapa O(n*min(n,W)). Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey'.
fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "ab"), (5, "aba")]
fromListWith (++) [] == empty
l fromListWith fromListWith ::  Ord k =>  (a -> a -> a) -> [(k, a)] -> Map k azzOrdkaaa[](,)kaMapka O(n*log n). Build a map from a list of key/value pairs with a combining function. See also fromAscListWith.
fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "ab"), (5, "aba")]
fromListWith (++) [] == empty
n fromListWith fromListWith ::  (a -> a -> a) ->  [(Key, a)] -> IntMap ae|5|aaa[](,)KeyaIntMapaO(n*min(n,W)). Create a map from a list of key/value pairs with a combining function. See also fromAscListWith.
fromListWith (++) [(5,"a"), (5,"b"), (3,"b"), (3,"a"), (5,"a")] == fromList [(3, "ab"), (5, "aba")]
fromListWith (++) [] == empty
ifromListfromList ::  Ord a => [a] -> Set a}}Orda[]aSeta9O(n*log n). Create a set from a list of elements. jfromListfromList :: [a] -> Seq a}~g~[]aSeqaO(n). Create a sequence from a finite list of elements. There is a function toList in the opposite direction for all instances of the Foldable class, including Seq. lfromListfromList ::  Ord k => [(k, a)] -> Map k aOrdk[](,)kaMapkalO(n*log n). Build a map from a list of key/value pairs. See also fromAscList. If the list contains more than one value for the same key, the last value for the key is retained.
fromList [] == empty
fromList [(5,"a"), (3,"b"), (5, "c")] == fromList [(5,"c"), (3,"b")]
fromList [(5,"c"), (3,"b"), (5, "a")] == fromList [(5,"a"), (3,"b")]
mfromListfromList :: [Int] -> IntSet|[]IntIntSet<O(n*min(n,W)). Create a set from a list of integers. nfromListfromList ::  [(Key, a)] -> IntMap aF![](,)KeyaIntMapaO(n*min(n,W)). Create a map from a list of key/value pairs.
fromList [] == empty
fromList [(5,"a"), (3,"b"), (5, "c")] == fromList [(5,"c"), (3,"b")]
fromList [(5,"c"), (3,"b"), (5, "a")] == fromList [(5,"a"), (3,"b")]
fromListfromList ::  Eq key => (key -> Int32) ->  [(key, val)] -> IO (HashTable key val) EqkeykeyInt32[](,)keyvalIO HashTablekeyvalvConvert a list of key/value pairs into a hash table. Equality on keys is taken from the Eq instance for the key type. fromJustfromJust :: Maybe a -> aބ̄Maybeaa~The fromJust function extracts the element out of a Just and throws an error if its argument is Nothing. 5 fromException fromException :: Exception e =>  SomeException -> Maybe eʅ Exceptione SomeExceptionMaybee$ fromDynamic fromDynamic :: Typeable a => Dynamic -> Maybe a[TypeableaDynamicMaybeasConverts a Dynamic object back into an ordinary Haskell value of the correct type. See also fromDyn. $fromDynfromDyn :: Typeable a => Dynamic -> a -> axWTypeableaDynamicaawConverts a Dynamic object back into an ordinary Haskell value of the correct type. See also fromDynamic. ifromDistinctAscListfromDistinctAscList :: [a] -> Set adN[]aSetaO(n). Build a set from an ascending list of distinct elements in linear time. The precondition (input list is strictly ascending) is not checked. lfromDistinctAscListfromDistinctAscList :: [(k, a)] -> Map k aj[](,)kaMapkaTO(n). Build a map from an ascending list of distinct elements in linear time. The precondition is not checked.
fromDistinctAscList [(3,"b"), (5,"a")] == fromList [(3, "b"), (5, "a")]
valid (fromDistinctAscList [(3,"b"), (5,"a")])          == True
valid (fromDistinctAscList [(3,"b"), (5,"a"), (5,"b")]) == False
mfromDistinctAscListfromDistinctAscList :: [Int] -> IntSetYC[]IntIntSetOO(n*min(n,W)). Build a set from an ascending list of distinct elements. nfromDistinctAscListfromDistinctAscList ::  [(Key, a)] -> IntMap a6[](,)KeyaIntMapaO(n*min(n,W)). Build a map from a list of key/value pairs where the keys are in ascending order and all distinct.
fromDistinctAscList [(3,"b"), (5,"a")] == fromList [(3, "b"), (5, "a")]
9 fromConstrM fromConstrM :: (Monad m, Data a) => m d -> Constr -> m ayMonadmDataamdConstrma(Monadic variation on fromConstrB 9 fromConstrB fromConstrB ::  Data a => d -> Constr -> aT8DataadConstra5Build a term and use a generic function for subterms 9 fromConstr fromConstr ::  Data a => Constr -> aߎDataaConstraBuild a term skeleton lfromAscListWithKeyfromAscListWithKey :: Eq k => (k -> a -> a -> a) -> [(k, a)] -> Map k aҏEqkkaaa[](,)kaMapkaO(n). Build a map from an ascending list in linear time with a combining function for equal keys. The precondition (input list is ascending) is not checked.
let f k a1 a2 = (show k) ++ ":" ++ a1 ++ a2
fromAscListWithKey f [(3,"b"), (5,"a"), (5,"b"), (5,"b")] == fromList [(3, "b"), (5, "5:b5:ba")]
valid (fromAscListWithKey f [(3,"b"), (5,"a"), (5,"b"), (5,"b")]) == True
valid (fromAscListWithKey f [(5,"a"), (3,"b"), (5,"b"), (5,"b")]) == False
nfromAscListWithKeyfromAscListWithKey :: (Key -> a -> a -> a) ->  [(Key, a)] -> IntMap ai4Keyaaa[](,)KeyaIntMapaO(n*min(n,W)). Build a map from a list of key/value pairs where the keys are in ascending order, with a combining function on equal keys.
fromAscListWith (++) [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "ba")]
lfromAscListWithfromAscListWith :: Eq k =>  (a -> a -> a) -> [(k, a)] -> Map k aړEqkaaa[](,)kaMapkaO(n). Build a map from an ascending list in linear time with a combining function for equal keys. The precondition (input list is ascending) is not checked.
fromAscListWith (++) [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "ba")]
valid (fromAscListWith (++) [(3,"b"), (5,"a"), (5,"b")]) == True
valid (fromAscListWith (++) [(5,"a"), (3,"b"), (5,"b")]) == False
nfromAscListWithfromAscListWith ::  (a -> a -> a) ->  [(Key, a)] -> IntMap aJaaa[](,)KeyaIntMapaO(n*min(n,W)). Build a map from a list of key/value pairs where the keys are in ascending order, with a combining function on equal keys.
fromAscListWith (++) [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "ba")]
i fromAscList fromAscList :: Eq a => [a] -> Set aEqa[]aSetaO(n). Build a set from an ascending list in linear time. The precondition (input list is ascending) is not checked. l fromAscList fromAscList :: Eq k => [(k, a)] -> Map k aEqk[](,)kaMapkaO(n). Build a map from an ascending list in linear time. The precondition (input list is ascending) is not checked.
fromAscList [(3,"b"), (5,"a")]          == fromList [(3, "b"), (5, "a")]
fromAscList [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "b")]
valid (fromAscList [(3,"b"), (5,"a"), (5,"b")]) == True
valid (fromAscList [(5,"a"), (3,"b"), (5,"b")]) == False
m fromAscList fromAscList :: [Int] -> IntSet[]IntIntSetFO(n*min(n,W)). Build a set from an ascending list of elements. n fromAscList fromAscList ::  [(Key, a)] -> IntMap a}X[](,)KeyaIntMapaO(n*min(n,W)). Build a map from a list of key/value pairs where the keys are in ascending order.
fromAscList [(3,"b"), (5,"a")]          == fromList [(3, "b"), (5, "a")]
fromAscList [(3,"b"), (5,"a"), (5,"b")] == fromList [(3, "b"), (5, "b")]
xFridayFriday :: DayDay frequency frequency :: [(Int, Gen a)] -> Gen a>[](,)IntGenaGena freeStablePtr freeStablePtr ::  StablePtr a -> IO () StablePtraIO()Dissolve the association between the stable pointer and the Haskell value. Afterwards, if the stable pointer is passed to deRefStablePtr or freeStablePtr, the behaviour is undefined. However, the stable pointer may still be passed to castStablePtrToPtr, but the Foreign.Ptr.Ptr () value returned by castStablePtrToPtr, in this case, is undefined (in particular, it may be Foreign.Ptr.nullPtr). Nevertheless, the call to castStablePtrToPtr is guaranteed not to diverge. 'freeHaskellFunPtrfreeHaskellFunPtr :: FunPtr a -> IO ()1FunPtraIO()Release the storage associated with the given FunPtr, which must have been obtained from a wrapper stub. This should be called whenever the return value from a foreign import wrapper function is no longer required; otherwise, the storage it uses will leak. framesetframeset :: Html -> HtmlHtmlHtml frameborder frameborder :: Int -> HtmlAttrIntHtmlAttrframeframe :: Html -> HtmlG8HtmlHtmlfragmentfragment :: URI -> StringURIStringfourfour ::  Monad m => m a -> m (a, a, a, a)'Monadmmam(,,,)aaaa&FormVartype FormVar = (String, String)n& formToRequest formToRequest :: Form -> Request_StringˣFormRequest_String formEncode formEncode :: [(String, String)] -> StringiA[](,)StringStringString?Formats name-value pairs as application/x-www-form-urlencoded.  formDecode formDecode :: String -> [(String, String)]-String[](,)StringStringGGets the name-value pairs from application/x-www-form-urlencoded data. xformatTimeDiff formatTimeDiff ::  TimeLocale -> String -> TimeDiff -> String  TimeLocaleStringTimeDiffStringformats time differences using local conventions and a formatting string. The formatting string is that understood by the ISO C strftime() function. xformatCalendarTime formatCalendarTime ::  TimeLocale -> String ->  CalendarTime -> StringzM TimeLocaleString CalendarTimeStringformats calendar times using local conventions and a formatting string. The formatting string is that understood by the ISO C strftime() function. FormatFormat :: GeneralCategoryhVGeneralCategoryCf: Other, Format MforM_forM_ :: (Foldable t, Monad m) => t a ->  (a -> m b) -> m ()'FoldabletMonadmtaambm()9forM_ is mapM_ with its arguments flipped. forM_forM_ ::  Monad m => [a] ->  (a -> m b) -> m ()éMonadm[]aambm()8forM_ is mapM_ with its arguments flipped formform :: Html -> HtmlyjHtmlHtmlRforMforM :: (Traversable t, Monad m) => t a ->  (a -> m b) -> m (t b)1 TraversabletMonadmtaambmtb7forM is mapM with its arguments flipped. forMforM ::  Monad m => [a] ->  (a -> m b) -> m [b]ʫMonadm[]aambm[]b6forM is mapM with its arguments flipped &Form Form ::  RequestMethod -> URI ->  [FormVar] -> Formͬ RequestMethodURI[]FormVarForm&Formdata Form@forkOSforkOS :: IO () ->  IO ThreadIdcFIO()IOThreadIdLike forkIO, this sparks off a new thread to run the IO computation passed as the first argument, and returns the ThreadId of the newly created thread. However, forkOS creates a bound thread, which is necessary if you need to call foreign (non-Haskell) libraries that make use of thread-local state, such as OpenGL (see Control.Concurrent#boundthreads). Using forkOS instead of forkIO makes no difference at all to the scheduling behaviour of the Haskell runtime system. It is a common misconception that you need to use forkOS instead of forkIO to avoid blocking all the Haskell threads when making a foreign call; this isn't the case. To allow foreign calls to be made without blocking all the Haskell threads (with GHC), it is only necessary to use the -threaded option when linking your program, and to make sure the foreign import is not marked unsafe. @forkIOforkIO :: IO () ->  IO ThreadIddIO()IOThreadIdSparks off a new thread to run the IO computation passed as the first argument, and returns the ThreadId of the newly created thread. The new thread will be a lightweight thread; if you want to use a foreign library that uses thread-local storage, use Control.Concurrent.forkOS instead. GHC note: the new thread inherits the blocked state of the parent (see Control.Exception.block). The newly created thread has an exception handler that discards the exceptions BlockedOnDeadMVar, BlockedIndefinitely, and ThreadKilled, and passes all other exceptions to the uncaught exception handler (see setUncaughtExceptionHandler). foreverforever ::  Monad m => m a -> m bsMonadmmamb;forever act repeats the action infinitely. kForesttype Forest a = [Tree a] ( ForeignPtrdata  ForeignPtr aF`The type ForeignPtr represents references to objects that are maintained in a foreign language, i.e., that are not part of the data structures usually managed by the Haskell storage manager. The essential difference between ForeignPtrs and vanilla memory references of type Ptr a is that the former may be associated with finalizers. A finalizer is a routine that is invoked when the Haskell storage manager detects that - within the Haskell heap and stack - there are no more references left that are pointing to the ForeignPtr. Typically, the finalizer will, then, invoke routines in the foreign language that free the resources bound by the foreign object. The ForeignPtr is parameterised in the same way as Ptr. The type argument of ForeignPtr should normally be an instance of class Storable. forAllforAll :: (Show a, Testable b) => Gen a -> (a -> b) -> PropertyUShowaTestablebGenaabPropertyMfor_for_ :: (Foldable t, Applicative f) => t a ->  (a -> f b) -> f () ʹFoldablet Applicativeftaafbf()<for_ is traverse_ with its arguments flipped. Rforfor :: "(Traversable t, Applicative f) => t a ->  (a -> f b) -> f (t b)  Traversablet Applicativeftaafbftb:for is traverse with its arguments flipped. fontfont :: Html -> HtmlHtmlHtmll foldWithKey  foldWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b2kabbbMapkab{O(n). Fold the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z . toAscList. For example,
keys map = foldWithKey (\k x ks -> k:ks) [] map
let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")"
foldWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)"
n foldWithKey  foldWithKey :: (Key -> a -> b -> b) -> b -> IntMap a -> bP*KeyabbbIntMapab{O(n). Fold the keys and values in the map, such that foldWithKey f z == Prelude.foldr (uncurry f) z . toAscList. For example,
keys map = foldWithKey (\k x ks -> k:ks) [] map
let f k a result = result ++ "(" ++ (show k) ++ ":" ++ a ++ ")"
foldWithKey f "Map: " (fromList [(5,"a"), (3,"b")]) == "Map: (5:a)(3:b)"
MfoldrM foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m bOFoldabletMonadmabmbbtambbMonadic fold over the elements of a structure, associating to the right, i.e. from right to left. efoldr1'foldr1' :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8eWord8Word8Word8 ByteStringWord8L'foldr1\'' is a variant of foldr1, but is strict in the accumulator. foldr1foldr1 ::  (a -> a -> a) -> [a] -> aR8aaa[]aa}foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty lists. Mfoldr1foldr1 :: Foldable t =>  (a -> a -> a) -> t a -> a_7Foldabletaaataaefoldr1foldr1 :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8Word8Word8Word8 ByteStringWord8foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty ByteStrings An exception will be thrown in the case of an empty ByteString. Mfoldr' foldr' :: Foldable t =>  (a -> b -> b) -> b -> t a -> bf;FoldabletabbbtabOFold over the elements of a structure, associating to the right, but strictly. efoldr' foldr' :: (Word8 -> a -> a) -> a ->  ByteString -> aK'Word8aaa ByteStringa?'foldr\'' is like foldr, but strict in the accumulator. foldr foldr ::  (a -> b -> b) -> b -> [a] -> b abbb[]abfoldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a list, reduces the list using the binary operator, from right to left:
foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)
Mfoldr foldr :: Foldable t =>  (a -> b -> b) -> b -> t a -> bFoldabletabbbtabefoldr foldr :: (Word8 -> a -> a) -> a ->  ByteString -> aF"Word8aaa ByteStringafoldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a ByteString, reduces the ByteString using the binary operator, from right to left. RfoldMapDefaultfoldMapDefault :: (Traversable t, Monoid m) => (a -> m) -> t a -> m TraversabletMonoidmamtam^This function may be used as a value for Data.Foldable.foldMap in a Foldable instance. MfoldMapfoldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> mFoldabletMonoidmamtamfoldM_ foldM_ ::  Monad m => (a -> b -> m a) -> a -> [b] -> m ()n:Monadmabmaa[]bm(),Like foldM, but discards the result. foldM foldM ::  Monad m => (a -> b -> m a) -> a -> [b] -> m aAMonadmabmaa[]bmaThe foldM function is analogous to foldl, except that its result is encapsulated in a monad. Note that foldM works from left-to-right over the list arguments. This could be an issue where '(>>)' and the `folded function' are not commutative.
foldM f a1 [x1, x2, ..., xm ]
==
do
  a2 <- f a1 x1
  a3 <- f a2 x2
  ...
  f am xm
If right-to-left evaluation is required, the input list should be reversed. MfoldlM foldlM :: (Foldable t, Monad m) => (a -> b -> m a) -> a -> t b -> m aFoldabletMonadmabmaatbmaaMonadic fold over the elements of a structure, associating to the left, i.e. from left to right. foldl1'foldl1' ::  (a -> a -> a) -> [a] -> aaaa[]aa"A strict version of foldl1 efoldl1'foldl1' :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8pCWord8Word8Word8 ByteStringWord8'foldl1\'' is like foldl1, but strict in the accumulator. An exception will be thrown in the case of an empty ByteString. foldl1foldl1 ::  (a -> a -> a) -> [a] -> aeKaaa[]aa}foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty lists. Mfoldl1foldl1 :: Foldable t =>  (a -> a -> a) -> t a -> arJFoldabletaaataaefoldl1foldl1 :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8Word8Word8Word8 ByteStringWord8foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty ByteStrings. This function is subject to array fusion. An exception will be thrown in the case of an empty ByteString. foldl' foldl' ::  (a -> b -> a) -> a -> [b] -> adabaa[]ba"A strict version of foldl. Mfoldl' foldl' :: Foldable t =>  (a -> b -> a) -> a -> t b -> aCFoldabletabaatbaNFold over the elements of a structure, associating to the left, but strictly. efoldl' foldl' :: (a -> Word8 -> a) -> a ->  ByteString -> a'aWord8aa ByteStringa'foldl\'' is like foldl, but strict in the accumulator. However, for ByteStrings, all left folds are strict in the accumulator. foldl foldl ::  (a -> b -> a) -> a -> [b] -> a0abaa[]ba&foldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:
foldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn
The list must be finite. Mfoldl foldl :: Foldable t =>  (a -> b -> a) -> a -> t b -> aFoldabletabaatbaefoldl foldl :: (a -> Word8 -> a) -> a ->  ByteString -> adaWord8aa ByteStringafoldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a ByteString, reduces the ByteString using the binary operator, from left to right. This function is subject to array fusion. MFoldableclass Foldable tData structures that can be folded. Minimal complete definition: foldMap or foldr. For example, given a data type
data Tree a = Empty | Leaf a | Node (Tree a) a (Tree a)
a suitable instance would be
instance Foldable Tree
   foldMap f Empty = mempty
   foldMap f (Leaf x) = f x
   foldMap f (Node l k r) = foldMap f l `mappend` f k `mappend` foldMap f r
This is suitable even for abstract types, as the monoid is assumed to satisfy the monoid laws. ifold fold ::  (a -> b -> b) -> b -> Set a -> b abbbSetabFO(n). Fold over the elements of a set in an unspecified order. lfold fold ::  (a -> b -> b) -> b -> Map k a -> babbbMapkabO(n). Fold the values in the map, such that fold f z == Prelude.foldr f z . elems. For example,
elems map = fold (:) [] map
let f a len = len + (length a)
fold f 0 (fromList [(5,"a"), (3,"bbb")]) == 4
mfold fold :: (Int -> b -> b) -> b -> IntSet -> bwYIntbbbIntSetbO(n). Fold over the elements of a set in an unspecified order.
sum set   == fold (+) 0 set
elems set == fold (:) [] set
nfold fold ::  (a -> b -> b) -> b -> IntMap a -> blabbbIntMapabO(n). Fold the values in the map, such that fold f z == Prelude.foldr f z . elems. For example,
elems map = fold (:) [] map
let f a len = len + (length a)
fold f 0 (fromList [(5,"a"), (3,"bbb")]) == 4
Mfoldfold :: (Foldable t, Monoid m) => t m -> mFoldabletMonoidmtmmfmapEfmapE :: (a -> Result b) ->  IO (Result a) ->  IO (Result b)aResultbIOResultaIOResultbR fmapDefault fmapDefault :: Traversable t => (a -> b) -> t a -> t b[. TraversabletabtatbSThis function may be used as a value for fmap in a Functor instance. fmapfmap ::  Functor f => (a -> b) -> f a -> f b7FunctorfabfafbFlowInfotype FlowInfo = Word32v9FloatRepFloatRep :: DataRepDataRep9 FloatConstr FloatConstr :: Double ->  ConstrRep(Double ConstrRepDflip flip ::  (a -> b -> c) -> b -> a -> cabcbac[flip f takes its (first) two arguments in the reverse order of f. o flattenSCCs flattenSCCs :: [SCC a] -> [a]hL[]SCCa[]a9The vertices of a list of strongly connected components. o flattenSCC flattenSCC ::  SCC vertex -> [vertex]SCCvertex[]vertex0The vertices of a strongly connected component. kflattenflatten :: Tree a -> [a]Treea[]a%The elements of a tree in pre-order. 9Fixitydata FixityFixity of constructors 6fixIOfixIO ::  (a -> IO a) -> IO aw]aIOaIOaCFixeddata Fixed aDfixfix :: (a -> a) -> aaaafix f is the least fixed point of the function f, i.e. the least defined x such that f x = x. Ffirstfirst ::  Arrow a => a b c -> a (b, d) (c, d)Arrowaabca(,)bd(,)cdKFirstFirst :: Maybe a -> First auZMaybeaFirstaKFirstnewtype First a7Maybe monoid returning the leftmost non-Nothing value. lfindWithDefault findWithDefault ::  Ord k => a -> k -> Map k a -> a|YOrdkakMapkaa:O(log n). The expression (findWithDefault def k map) returns the value at key k or returns default value def when the key is not in the map.
findWithDefault 'x' 1 (fromList [(5,'a'), (3,'b')]) == 'x'
findWithDefault 'x' 5 (fromList [(5,'a'), (3,'b')]) == 'a'
nfindWithDefault findWithDefault :: a -> Key -> IntMap a -> aE*aKeyIntMapaa:O(min(n,W)). The expression (findWithDefault def k map) returns the value at key k or returns def when the key is not an element of the map.
findWithDefault 'x' 1 (fromList [(5,'a'), (3,'b')]) == 'x'
findWithDefault 'x' 5 (fromList [(5,'a'), (3,'b')]) == 'a'
efindSubstringsfindSubstrings ::  ByteString ->  ByteString -> [Int] ByteString ByteString[]IntVFind the indexes of all (possibly overlapping) occurances of a substring in a string. e findSubstring findSubstring ::  ByteString ->  ByteString ->  Maybe Int  ByteString ByteStringMaybeIntGet the first index of a substring in another string, or Nothing if the string is not found. findSubstring p s is equivalent to listToMaybe (findSubstrings p s). ifindMinfindMin :: Set a -> a Setaa/O(log n). The minimal element of a set. lfindMinfindMin :: Map k a -> (k, a)Mapka(,)kaO(log n). The minimal key of the map. Calls error is the map is empty.
findMin (fromList [(5,"a"), (3,"b")]) == (3,"b")
findMin empty                            Error: empty map has no minimal element
mfindMinfindMin :: IntSet -> IntIntSetInt2O(min(n,W)). The minimal element of a set. nfindMinfindMin :: IntMap a -> a|iIntMapaa-O(log n). The minimal key of the map. ifindMaxfindMax :: Set a -> aSetaa/O(log n). The maximal element of a set. lfindMaxfindMax :: Map k a -> (k, a)yMapka(,)kaO(log n). The maximal key of the map. Calls error is the map is empty.
findMax (fromList [(5,"a"), (3,"b")]) == (5,"a")
findMax empty                            Error: empty map has no maximal element
mfindMaxfindMax :: IntSet -> IntIntSetInt2O(min(n,W)). The maximal element of a set. nfindMaxfindMax :: IntMap a -> a`MIntMapaa-O(log n). The maximal key of the map.  findIndices findIndices ::  (a -> Bool) -> [a] -> [Int]aBool[]a[]IntThe findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order. e findIndices findIndices :: (Word8 -> Bool) ->  ByteString -> [Int]@Word8Bool ByteString[]IntThe findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order. l findIndex findIndex ::  Ord k => k -> Map k a -> IntV4OrdkkMapkaIntO(log n). Return the index of a key. The index is a number from 0 up to, but not including, the size of the map. Calls error when the key is not a member of the map.
findIndex 2 (fromList [(5,"a"), (3,"b")])    Error: element is not in the map
findIndex 3 (fromList [(5,"a"), (3,"b")]) == 0
findIndex 5 (fromList [(5,"a"), (3,"b")]) == 1
findIndex 6 (fromList [(5,"a"), (3,"b")])    Error: element is not in the map
 findIndex findIndex ::  (a -> Bool) -> [a] ->  Maybe IntaBool[]aMaybeIntThe findIndex function takes a predicate and a list and returns the index of the first element in the list satisfying the predicate, or Nothing if there is no such element. e findIndex findIndex :: (Word8 -> Bool) ->  ByteString ->  Maybe IntWord8Bool ByteStringMaybeIntThe findIndex function takes a predicate and a ByteString and returns the index of the first element in the ByteString satisfying the predicate. pfindExecutablefindExecutable :: String -> IO (Maybe FilePath):StringIOMaybeFilePathGiven an executable file name, searches for such file in the directories listed in system PATH. The returned value is the path to the found executable or Nothing if there isn't such executable. For example (findExecutable "ghc") gives you the path to GHC. findfind ::  (a -> Bool) -> [a] -> Maybe aaBool[]aMaybeaThe find function takes a predicate and a list and returns the first element in the list matching the predicate, or Nothing if there is no such element. Mfindfind :: Foldable t =>  (a -> Bool) -> t a -> Maybe aFoldabletaBooltaMaybeaThe find function takes a predicate and a structure and returns the leftmost element of the structure matching the predicate, or Nothing if there is no such element. efindfind :: (Word8 -> Bool) ->  ByteString ->  Maybe Word8BWord8Bool ByteStringMaybeWord8 O(n) The find function takes a predicate and a ByteString, and returns the first element in matching the predicate, or Nothing if there is no such element.
find f p = case findIndex f p of Just n -> Just (p ! n) ; _ -> Nothing
 FinalQuote FinalQuote :: GeneralCategoryGeneralCategoryPf: Punctuation, Final quote 7finallyfinally :: IO a -> IO b -> IO a:IOaIObIOaRA specialised variant of bracket with just a computation to run afterward. 5finallyfinally :: IO a -> IO b -> IO aIOaIObIOaRA specialised variant of bracket with just a computation to run afterward. ( FinalizerPtrtype  FinalizerPtr a = FunPtr (Ptr a -> IO ())A Finalizer is represented as a pointer to a foreign function that, at finalisation time, gets as an argument a plain pointer variant of the foreign pointer that the finalizer is associated with. (FinalizerEnvPtrtype FinalizerEnvPtr env a% = FunPtr (Ptr env -> Ptr a -> IO ())(finalizeForeignPtrfinalizeForeignPtr ::  ForeignPtr a -> IO ()dF ForeignPtraIO()OCauses the finalizers associated with a foreign pointer to be run immediately. l filterWithKey filterWithKey ::  Ord k => (k -> a -> Bool) -> Map k a -> Map k af 1 OrdkkaBoolMapkaMapkaO(n). Filter all keys/values that satisfy the predicate.
filterWithKey (\k _ -> k > 4) (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
n filterWithKey filterWithKey :: (Key -> a -> Bool) -> IntMap a -> IntMap a  KeyaBoolIntMapaIntMapaO(n). Filter all keys/values that satisfy some predicate.
filterWithKey (\k _ -> k > 4) (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
filterMfilterM ::  Monad m =>  (a -> m Bool) -> [a] -> m [a]  MonadmamBool[]am[]a8This generalizes the list-based filter function. ifilterfilter ::  Ord a =>  (a -> Bool) -> Set a -> Set a  OrdaaBoolSetaSeta=O(n). Filter all elements that satisfy the predicate. lfilterfilter ::  Ord k =>  (a -> Bool) -> Map k a -> Map k a g OrdkaBoolMapkaMapkaO(n). Filter all values that satisfy the predicate.
filter (> "a") (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
filter (> "x") (fromList [(5,"a"), (3,"b")]) == empty
filter (< "a") (fromList [(5,"a"), (3,"b")]) == empty
filterfilter ::  (a -> Bool) -> [a] -> [a]aBool[]a[]afilter, applied to a predicate and a list, returns the list of those elements that satisfy the predicate; i.e.,
filter p xs = [ x | x <- xs, p x]
mfilterfilter ::  (Int -> Bool) -> IntSet -> IntSet=IntBoolIntSetIntSet>O(n). Filter all elements that satisfy some predicate. nfilterfilter ::  (a -> Bool) -> IntMap a -> IntMap aaBoolIntMapaIntMapaO(n). Filter all values that satisfy some predicate.
filter (> "a") (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
filter (> "x") (fromList [(5,"a"), (3,"b")]) == empty
filter (< "a") (fromList [(5,"a"), (3,"b")]) == empty
efilterfilter :: (Word8 -> Bool) ->  ByteString ->  ByteStringrWord8Bool ByteString ByteStringO(n) filter, applied to a predicate and a ByteString, returns a ByteString containing those characters that satisfy the predicate. This function is subject to array fusion. 6FilePathtype FilePath = StringFile and directory names are values of type String, whose precise meaning is operating system dependent. Files can be opened, yielding a handle which can then be used to operate on the contents of that file. fieldsetfieldset :: Html -> HtmlHtmlHtmlxFebruaryFebruary :: MonthMonthfdSocketfdSocket :: Socket -> CIntcRSocketCIntFamilydata FamilyiThis data type might have different constructors depending on what is supported by the operating system. failWithfailWith ::  ConnError -> Result aiN ConnErrorResulta failParse failParse :: String -> Result aStringResultafailfail ::  Monad m => String -> m a>MonadmStringmafaceface :: String -> HtmlAttrStringHtmlAttrZexitWithexitWith :: ExitCode -> IO aExitCodeIOaComputation exitWith code throws ExitException code. Normally this terminates the program, returning code to the program's caller. Before the program terminates, any open or semi-closed handles are first closed. A program that fails in any other way is treated as if it had called exitFailure. A program that terminates successfully without calling exitWith explicitly is treated as it it had called exitWith ExitSuccess. As an ExitException is not an IOError, exitWith bypasses the error handling in the IO monad and cannot be intercepted by catch from the Prelude. However it is an Exception, and can be caught using the functions of Control.Exception. This means that cleanup computations added with Control.Exception.bracket (from Control.Exception) are also executed properly on exitWith. Z exitSuccess exitSuccess :: IO aIOaThe computation exitSuccess is equivalent to exitWith ExitSuccess, It terminates the program sucessfully. Z ExitSuccess ExitSuccess :: ExitCodeExitCode"indicates successful termination; Z exitFailure exitFailure :: IO a IOaThe computation exitFailure is equivalent to exitWith (ExitFailure exitfail), where exitfail is implementation-dependent. Z ExitFailure ExitFailure :: Int -> ExitCode*IntExitCodeindicates program failure with an exit code. The exact interpretation of the code is operating-system dependent. In particular, some values may be prohibited (e.g. 0 on a POSIX-compliant system). 7 ExitException ExitException :: ExitCode ->  ExceptionbJExitCode Exception(The ExitException exception is thrown by System.Exit.exitWith (and System.Exit.exitFailure). The ExitCode argument is the value passed to System.Exit.exitWith. An unhandled ExitException exception in the main thread will cause the program to be terminated with the given exit code. ZExitCodedata ExitCode p executable executable ::  Permissions -> Bool(!! PermissionsBool7 Exceptiondata  Exception^!,The type of exceptions. Every kind of system-generated exception has a constructor in the Exception type, and values of other types may be injected into Exception by coercing them to Dynamic (see the section on Dynamic Exceptions: Control.OldException#DynamicExceptions). 5 Exceptionclass (Typeable e, Show e) =>  Exception e"evaluateevaluate :: Testable a => a ->  Gen ResultY#5#TestableaaGenResult7evaluateevaluate :: a -> IO a##aIOa)Forces its argument to be evaluated when the resultant IO action is executed. It can be used to order evaluation with respect to other IO operations; its semantics are given by
evaluate x `seq` y    ==>  y
evaluate x `catch` f  ==>  (return $! x) `catch` f
evaluate x >>= f      ==>  (return $! x) >>= f
Note: the first equation implies that (evaluate x) is not the same as (return $! x). A correct definition is
evaluate x = (return $! x) >>= return
5evaluateevaluate :: a -> IO a,&&aIOa)Forces its argument to be evaluated when the resultant IO action is executed. It can be used to order evaluation with respect to other IO operations; its semantics are given by
evaluate x `seq` y    ==>  y
evaluate x `catch` f  ==>  (return $! x) `catch` f
evaluate x >>= f      ==>  (return $! x) >>= f
Note: the first equation implies that (evaluate x) is not the same as (return $! x). A correct definition is
evaluate x = (return $! x) >>= return
escapeURIStringescapeURIString :: (Char -> Bool) -> String -> String((CharBoolStringString5Can be used to make a string valid for use in a URI.  escapeURIChar escapeURIChar :: (Char -> Bool) -> Char -> String))CharBoolCharStringiEscape character if supplied predicate is not satisfied, otherwise return character as singleton string.  escapeString escapeString :: String -> (Char -> Bool) -> String**StringCharBoolString ErrorReset ErrorReset ::  ConnError** ConnErrorerrorPoserrorPos ::  ParseError ->  SourcePosc+I+ ParseError SourcePos2Extracts the source position from the parse error  ErrorParse ErrorParse :: String ->  ConnError++String ConnError ErrorMisc ErrorMisc :: String ->  ConnErrorg,Q,String ConnError ErrorClosed ErrorClosed ::  ConnError,, ConnError7 errorCalls errorCalls ::  Exception ->  Maybe String0-- ExceptionMaybeString7 ErrorCall ErrorCall :: String ->  Exception--String ExceptionThe ErrorCall exception is thrown by error. The String argument of ErrorCall is the string passed to error when it was called. 5 ErrorCall ErrorCall :: String ->  ErrorCall..String ErrorCall5 ErrorCalldata  ErrorCall.&errerr :: String -> BrowserAction t ()J/'/String BrowserActiont() Eqclass Eq au/?The Eq class defines equality (==) and inequality (/=). All the basic datatypes exported by the Prelude are instances of Eq, and Eq may be derived for any datatype whose constituents are also instances of Eq. Minimal complete definition: either == or /=. "EOFEOF :: Lexeme00LexemeendServiceEntryendServiceEntry :: IO ()A161IO()endProtocolEntryendProtocolEntry :: IO ()11IO()KEndoEndo :: (a -> a) -> Endo a11aaEndoaKEndonewtype Endo a$2/The monoid of endomorphisms under composition. endNetworkEntryendNetworkEntry :: IO ()22IO()3Close the connection to the network name database.  endHostEntry endHostEntry :: IO ()&33IO()enctypeenctype :: String -> HtmlAttr3s3StringHtmlAttr EnclosingMark EnclosingMark :: GeneralCategory33GeneralCategoryMe: Mark, Enclosing jEmptyREmptyR :: ViewR aA444ViewRaempty sequence jEmptyLEmptyL :: ViewL a44ViewLaempty sequence  emptyAttr emptyAttr :: String -> HtmlAttr 54StringHtmlAttriemptyempty :: Set aI5>5SetaO(1). The empty set. jemptyempty :: Seq a55Seqa!O(1). The empty sequence. lemptyempty :: Map k a 65MapkaTO(1). The empty map.
empty      == fromList []
size empty == 0
memptyempty :: IntSet66IntSetO(1). The empty set. nemptyempty :: IntMap a66IntMapaTO(1). The empty map.
empty      == fromList []
size empty == 0
eemptyempty ::  ByteString77 ByteString(O(1) The empty ByteString Lemptyempty :: Alternative f => f a88 Alternativeffa emphasize emphasize :: Html -> Htmlv8g8HtmlHtmlielemselems :: Set a -> [a]88Seta[]a$O(n). The elements of a set. lelemselems :: Map k a -> [a]Q989Mapka[]aO(n). Return all elements of the map in the ascending order of their keys.
elems (fromList [(5,"a"), (3,"b")]) == ["b","a"]
elems empty == []
melemselems :: IntSet -> [Int]P:::IntSet[]IntMO(n). The elements of a set. (For sets, this is equivalent to toList) nelemselems :: IntMap a -> [a]::IntMapa[]aO(n). Return all elements of the map in the ascending order of their keys.
elems (fromList [(5,"a"), (3,"b")]) == ["b","a"]
elems empty == []
 elemIndices elemIndices :: Eq a => a -> [a] -> [Int]&<<Eqaa[]a[]IntThe elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order. e elemIndices elemIndices :: Word8 ->  ByteString -> [Int]A= =Word8 ByteString[]IntO(n) The elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order. This implementation uses memchr(3). e elemIndexEnd elemIndexEnd :: Word8 ->  ByteString ->  Maybe Int>q>Word8 ByteStringMaybeInt3O(n) The elemIndexEnd function returns the last index of the element in the given ByteString which is equal to the query element, or Nothing if there is no such element. The following holds:
elemIndexEnd c xs == 
(-) (length xs - 1) `fmap` elemIndex c (reverse xs)
 elemIndex elemIndex :: Eq a => a -> [a] ->  Maybe IntR@,@Eqaa[]aMaybeIntThe elemIndex function returns the index of the first element in the given list which is equal (by ==) to the query element, or Nothing if there is no such element. e elemIndex elemIndex :: Word8 ->  ByteString ->  Maybe IntAsAWord8 ByteStringMaybeIntO(n) The elemIndex function returns the index of the first element in the given ByteString which is equal to the query element, or Nothing if there is no such element. This implementation uses memchr(3). elementselements :: [a] -> Gen aBB[]aGenalelemAtelemAt :: Int -> Map k a -> (k, a)YC7CIntMapka(,)kaO(log n). Retrieve an element by index. Calls error when an invalid index is used.
elemAt 0 (fromList [(5,"a"), (3,"b")]) == (3,"b")
elemAt 1 (fromList [(5,"a"), (3,"b")]) == (5, "a")
elemAt 2 (fromList [(5,"a"), (3,"b")])    Error: index out of range
elemelem :: Eq a => a -> [a] -> BoolDDEqaa[]aBoolielem is the list membership predicate, usually written in infix form, e.g., x `elem` xs. Melemelem :: (Foldable t, Eq a) => a -> t a -> BoolEEFoldabletEqaataBool)Does the element occur in the structure? eelemelem :: Word8 ->  ByteString -> BoolFdFWord8 ByteStringBoolGO(n) elem is the ByteString membership predicate.  either either :: (a -> c) -> (b -> c) ->  Either a b -> c]G7GacbcEitherabcCase analysis for the Either type. If the value is Left a, apply the first function to a; if it is Right b, apply the second function to b.  Eitherdata Either a bVHThe Either type represents values with two possibilities: a value of type Either a b is either Left a or Right b. The Either type is sometimes used to represent a value which is either correct or an error; by convention, the Left constructor is used to hold an error value and the Right constructor is used to hold a correct value (mnemonic: "right" also means "correct"). oedgesedges :: Graph -> [Edge]tJ^JGraph[]EdgeAll edges of a graph. oEdgetype Edge = (Vertex, Vertex)J-An edge from the first vertex to the second. CE6data E6 KCE12data E12JK$ dynTypeRep dynTypeRep :: Dynamic -> TypeRepKKDynamicTypeRep7 dynExceptions dynExceptions ::  Exception ->  Maybe Dynamic3LL ExceptionMaybeDynamic7 DynException DynException :: Dynamic ->  ExceptionLLDynamic ExceptionqDynamically typed exceptions (see section on Dynamic Exceptions: Control.OldException#DynamicExceptions). $dynApplydynApply :: Dynamic -> Dynamic ->  Maybe DynamicM|MDynamicDynamicMaybeDynamic$dynAppdynApp :: Dynamic -> Dynamic -> DynamicNNDynamicDynamicDynamic$Dynamicdata DynamicQNA value of type Dynamic is an object encapsulated together with its type. A Dynamic may only represent a monomorphic value; an attempt to create a value of type Dynamic from a polymorphically-typed expression will result in an ambiguity error (see toDyn). Showing a value of type Dynamic returns a pretty-printed representation of the object's type; useful for debugging. DummySocketOption__DummySocketOption__ ::  SocketOptionWPHP SocketOptionKDualDual :: a -> Dual aPPaDualaKDualnewtype Dual aPLThe dual of a monoid, obtained by swapping the arguments of mappend. dtermdterm :: Html -> HtmlwQhQHtmlHtml dropWhile dropWhile ::  (a -> Bool) -> [a] -> [a]QQaBool[]a[]adropWhile p xs returns the suffix remaining after takeWhile p xs:
dropWhile (< 3) [1,2,3,4,5,1,2,3] == [3,4,5,1,2,3]
dropWhile (< 9) [1,2,3] == []
dropWhile (< 0) [1,2,3] == [1,2,3]
e dropWhile dropWhile :: (Word8 -> Bool) ->  ByteString ->  ByteStringSVSWord8Bool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs. jdropdrop :: Int -> Seq a -> Seq aPT4TIntSeqaSeqaO(log(min(i,n-i))). Elements of a sequence after the first i. If i is negative, take i s yields the whole sequence. If the sequence contains fewer than i elements, the empty sequence is returned. dropdrop :: Int -> [a] -> [a]UUInt[]a[]adrop n xs returns the suffix of xs after the first n elements, or [] if n > length xs:
drop 6 "Hello World!" == "World!"
drop 3 [1,2,3,4,5] == [4,5]
drop 3 [1,2] == []
drop 3 [] == []
drop (-1) [1,2] == [1,2]
drop 0 [1,2] == [1,2]
It is an instance of the more general Data.List.genericDrop, in which n may be of any integral type. edropdrop :: Int ->  ByteString ->  ByteStringWWInt ByteString ByteStringO(1) drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs. kdrawTreedrawTree ::  Tree String -> StringXXTreeStringString&Neat 2-dimensional drawing of a tree. k drawForest drawForest ::  Forest String -> StringuYXYForestStringString(Neat 2-dimensional drawing of a forest.  DontRoute DontRoute ::  SocketOptionYY SocketOptionp doesFileExist doesFileExist :: FilePath -> IO BoolbZIZFilePathIOBoolThe operation doesFileExist returns True if the argument file exists and is not a directory, and False otherwise. pdoesDirectoryExistdoesDirectoryExist :: FilePath -> IO Boolf[M[FilePathIOBoolThe operation doesDirectoryExist returns True if the argument file exists and is a directory, and False otherwise. dlistdlist :: Html -> Html@\1\HtmlHtmlCdivMod'divMod' :: (Real a, Integral b) => a -> a -> (b, a)\\RealaIntegralbaa(,)ba8generalisation of divMod to any instance of Real 7 DivideByZero DivideByZero :: ArithExceptiono]^]ArithException5 DivideByZero DivideByZero :: ArithException]]ArithExceptionCdiv'div' :: (Real a, Integral b) => a -> a -> bQ^+^RealaIntegralbaab5generalisation of div to any instance of Real  digitToInt digitToInt :: Char -> Int^^CharInt Convert a single digit Char to the corresponding Int. This function fails unless its argument satisfies isHexDigit, but recognises both upper and lower-case hexadecimal digits (i.e. '0'..'9', 'a'..'f', 'A'..'F'). ldifferenceWithKey differenceWithKey ::  Ord k => (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a``OrdkkabMaybeaMapkaMapkbMapkaO(n+m). Difference with a combining function. When two equal keys are encountered, the combining function is applied to the key and both values. If it returns Nothing, the element is discarded (proper set difference). If it returns (Just y), the element is updated with a new value y. The implementation uses an efficient hedge algorithm comparable with hedge-union.
let f k al ar = if al == "b" then Just ((show k) ++ ":" ++ al ++ "|" ++ ar) else Nothing
differenceWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (3, "B"), (10, "C")])
    == singleton 3 "3:b|B"
ndifferenceWithKey differenceWithKey :: (Key -> a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap aQddKeyabMaybeaIntMapaIntMapbIntMapa%O(n+m). Difference with a combining function. When two equal keys are encountered, the combining function is applied to the key and both values. If it returns Nothing, the element is discarded (proper set difference). If it returns (Just y), the element is updated with a new value y.
let f k al ar = if al == "b" then Just ((show k) ++ ":" ++ al ++ "|" ++ ar) else Nothing
differenceWithKey f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (3, "B"), (10, "C")])
    == singleton 3 "3:b|B"
ldifferenceWith differenceWith ::  Ord k => (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k aTg gOrdkabMaybeaMapkaMapkbMapkakO(n+m). Difference with a combining function. When two equal keys are encountered, the combining function is applied to the values of these keys. If it returns Nothing, the element is discarded (proper set difference). If it returns (Just y), the element is updated with a new value y. The implementation uses an efficient hedge algorithm comparable with hedge-union.
let f al ar = if al == "b" then Just (al ++ ":" ++ ar) else Nothing
differenceWith f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (3, "B"), (7, "C")])
    == singleton 3 "b:B"
ndifferenceWith differenceWith :: (a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap ajOjabMaybeaIntMapaIntMapbIntMapaO(n+m). Difference with a combining function.
let f al ar = if al == "b" then Just (al ++ ":" ++ ar) else Nothing
differenceWith f (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (3, "B"), (7, "C")])
    == singleton 3 "b:B"
i difference difference ::  Ord a => Set a -> Set a -> Set alkOrdaSetaSetaSetaO(n+m). Difference of two sets. The implementation uses an efficient hedge algorithm comparable with hedge-union. l difference difference ::  Ord k => Map k a -> Map k b -> Map k aFmmOrdkMapkaMapkbMapka4O(n+m). Difference of two maps. Return elements of the first map not existing in the second map. The implementation uses an efficient hedge algorithm comparable with hedge-union.
difference (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 3 "b"
m difference difference :: IntSet -> IntSet -> IntSetnnIntSetIntSetIntSet,O(n+m). Difference between two sets. n difference difference :: IntMap a -> IntMap b -> IntMap aooIntMapaIntMapbIntMapaO(n+m). Difference between two maps (based on keys).
difference (fromList [(5, "a"), (3, "b")]) (fromList [(5, "A"), (7, "C")]) == singleton 3 "b"
xdiffClockTimesdiffClockTimes ::  ClockTime ->  ClockTime -> TimeDiffpp ClockTime ClockTimeTimeDiffdiffClockTimes t1 t2 returns the difference between two clock times t1 and t2 as a TimeDiff. odfsdfs :: Graph -> [Vertex] ->  Forest VertexrqGraph[]VertexForestVertexA spanning forest of the part of the graph reachable from the listed vertices, obtained from a depth-first search of the graph starting at each of the listed vertices in order. odffdff :: Graph ->  Forest VertexsrGraphForestVertexA spanning forest of the graph, obtained from a depth-first search of the graph starting from each vertex in an unspecified order. deRefStablePtrdeRefStablePtr ::  StablePtr a -> IO ats StablePtraIOaObtain the Haskell value referenced by a stable pointer, i.e., the same value that was passed to the corresponding call to makeStablePtr. If the argument to deRefStablePtr has already been freed using freeStablePtr, the behaviour of deRefStablePtr is undefined. 7DenormalDenormal :: ArithExceptionuquArithException5DenormalDenormal :: ArithExceptionuuArithExceptionN denominator denominator :: Integral a => Ratio a -> aTv3vIntegralaRatioaaExtract the denominator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive. i deleteMin deleteMin :: Set a -> Set aCw,wSetaSeta-O(log n). Delete the minimal element. l deleteMin deleteMin :: Map k a -> Map k awwMapkaMapkaO(log n). Delete the minimal key. Returns an empty map if the map is empty.
deleteMin (fromList [(5,"a"), (3,"b"), (7,"c")]) == fromList [(5,"a"), (7,"c")]
deleteMin empty == empty
m deleteMin deleteMin :: IntSet -> IntSet yxIntSetIntSet0O(min(n,W)). Delete the minimal element. n deleteMin deleteMin :: IntMap a -> IntMap ayyIntMapaIntMapa)O(log n). Delete the minimal key. i deleteMax deleteMax :: Set a -> Set a7z zSetaSeta-O(log n). Delete the maximal element. l deleteMax deleteMax :: Map k a -> Map k azzMapkaMapkaO(log n). Delete the maximal key. Returns an empty map if the map is empty.
deleteMax (fromList [(5,"a"), (3,"b"), (7,"c")]) == fromList [(3,"b"), (5,"a")]
deleteMax empty == empty
m deleteMax deleteMax :: IntSet -> IntSet{{IntSetIntSet0O(min(n,W)). Delete the maximal element. n deleteMax deleteMax :: IntMap a -> IntMap a||IntMapaIntMapa)O(log n). Delete the maximal key. deleteFirstsBy deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]q}E}aaBool[]a[]a[]aThe deleteFirstsBy function takes a predicate and two lists and returns the first list with the first occurrence of each element of the second list removed. i deleteFindMin deleteFindMin :: Set a ->  (a, Set a)~o~Seta(,)aSetauO(log n). Delete and find the minimal element.
deleteFindMin set = (findMin set, deleteMin set)
l deleteFindMin deleteFindMin :: Map k a -> ((k, a), Map k a)hMapka(,)(,)kaMapkaO(log n). Delete and find the minimal element.
deleteFindMin (fromList [(5,"a"), (3,"b"), (10,"c")]) == ((3,"b"), fromList[(5,"a"), (10,"c")]) 
deleteFindMin                                            Error: can not return the minimal element of an empty map
m deleteFindMin deleteFindMin :: IntSet ->  (Int, IntSet).IntSet(,)IntIntSetxO(min(n,W)). Delete and find the minimal element.
deleteFindMin set = (findMin set, deleteMin set)
n deleteFindMin deleteFindMin :: IntMap a ->  (a, IntMap a)-IntMapa(,)aIntMapa6O(log n). Delete and find the minimal element. i deleteFindMax deleteFindMax :: Set a ->  (a, Set a)ނSeta(,)aSetauO(log n). Delete and find the maximal element.
deleteFindMax set = (findMax set, deleteMax set)
l deleteFindMax deleteFindMax :: Map k a -> ((k, a), Map k a)Mapka(,)(,)kaMapkaO(log n). Delete and find the maximal element.
deleteFindMax (fromList [(5,"a"), (3,"b"), (10,"c")]) == ((10,"c"), fromList [(3,"b"), (5,"a")])
deleteFindMax empty                                      Error: can not return the maximal element of an empty map
m deleteFindMax deleteFindMax :: IntSet ->  (Int, IntSet)|]IntSet(,)IntIntSetxO(min(n,W)). Delete and find the maximal element.
deleteFindMax set = (findMax set, deleteMax set)
n deleteFindMax deleteFindMax :: IntMap a ->  (a, IntMap a){TIntMapa(,)aIntMapa6O(log n). Delete and find the maximal element.  deleteCookie deleteCookie :: MonadCGI m => Cookie -> m ()5MonadCGImCookiem() Delete a cookie from the client deleteBy deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]ŇaaBoola[]a[]agThe deleteBy function behaves like delete, but takes a user-supplied equality predicate. ldeleteAtdeleteAt :: Int -> Map k a -> Map k a҈IntMapkaMapkaO(log n). Delete the element at index. Defined as (deleteAt i map = updateAt (k x -> Nothing) i map).
deleteAt 0  (fromList [(5,"a"), (3,"b")]) == singleton 5 "a"
deleteAt 1  (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
deleteAt 2 (fromList [(5,"a"), (3,"b")])     Error: index out of range
deleteAt (-1) (fromList [(5,"a"), (3,"b")])  Error: index out of range
ideletedelete ::  Ord a => a -> Set a -> Set aڊOrdaaSetaSeta/O(log n). Delete an element from a set. ldeletedelete ::  Ord k => k -> Map k a -> Map k aOrdkkMapkaMapkaAO(log n). Delete a key and its value from the map. When the key is not a member of the map, the original map is returned.
delete 5 (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
delete 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
delete 5 empty                         == empty
deletedelete :: Eq a => a -> [a] -> [a]rQEqaa[]a[]adelete x removes the first occurrence of x from its list argument. For example,
delete 'a' "banana" == "bnana"
It is a special case of deleteBy, which allows the programmer to supply their own equality test. mdeletedelete :: Int -> IntSet -> IntSetɎIntIntSetIntSethO(min(n,W)). Delete a value in the set. Returns the original set when the value was not present. ndeletedelete :: Key -> IntMap a -> IntMap aǏKeyIntMapaIntMapaDO(min(n,W)). Delete a key and its value from the map. When the key is not a member of the map, the original map is returned.
delete 5 (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"
delete 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
delete 5 empty                         == empty
deletedelete :: HashTable key val -> key -> IO ()m HashTablekeyvalkeyIO()%Remove an entry from the hash table. defListdefList :: (HTML a, HTML b) => [(a, b)] -> HtmlLHTMLaHTMLb[](,)abHtmldefinedefine :: Html -> HtmlHtmlHtmldefaultProtocoldefaultProtocol :: ProtocolNumberProtocolNumber2This is the default protocol for a given service. defaultProtocoldefaultProtocol :: ProtocolNumberProtocolNumber2This is the default protocol for a given service.  defaultHints defaultHints :: AddrInfo AddrInfoDefault hints for address lookup with getAddrInfo. The values of the addrAddress and addrCanonName fields are undefined, and are never inspected by getAddrInfo. &defaultGETRequest_defaultGETRequest_ :: BufferType a => URI ->  Request atM BufferTypeaURIRequesta&defaultGETRequestdefaultGETRequest :: URI -> Request_StringؕURIRequest_String&defaultCookieFilterdefaultCookieFilter :: URI -> Cookie -> IO BoolcURICookieIOBoolwdefaultCookieFilter is the initial cookie acceptance filter. It welcomes them all into the store :-)  defaultConfig defaultConfig :: ConfigD;Config DecimalNumber DecimalNumber :: GeneralCategoryGeneralCategoryNd: Number, Decimal xDecemberDecember :: MonthMonth" debugStream debugStream ::  Stream a => FilePath -> a -> IO (StreamDebugger a)wStreamaFilePathaIOStreamDebuggerajWraps a stream with logging I/O. The first argument is a filename which is opened in AppendMode.  debugHtml debugHtml ::  HTML a => a -> HtmlkHTMLaaHtml"debugByteStreamdebugByteStream :: HStream ty => FilePath -> HandleStream ty -> IO (HandleStream ty)`HStreamtyFilePath HandleStreamtyIO HandleStreamtyDebugDebug ::  SocketOption SocketOption7DeadlockDeadlock ::  Exception ExceptionThere are no runnable threads, so the program is deadlocked. The Deadlock exception is raised in the main thread only (see also: Control.Concurrent). 5DeadlockDeadlock :: Deadlock՛Deadlock5Deadlockdata Deadlockddefddef :: Html -> HtmldUHtmlHtmlxDaydata DayA day of the week. 9 dataTypeRep dataTypeRep :: DataType -> DataRep DataTypeDataRep+Gets the public presentation of a datatype 9 dataTypeOf dataTypeOf ::  Data a => a -> DataTypeDataaaDataType9 dataTypeName dataTypeName :: DataType -> StringDataTypeString/Gets the type constructor including the module 9dataTypeConstrsdataTypeConstrs :: DataType -> [Constr]DataType[]Constr/Gets the constructors of an algebraic datatype 9DataTypedata DataType#eRepresentation of datatypes. A package of constructor representations with names of type and module. 9DataRepdata DataRep#Public representation of datatypes DatagramDatagram ::  SocketType) SocketType9 dataCast2 dataCast2 :: (Data a, Typeable2 t) =>  c (t d e) ->  Maybe (c a)ؠDataa Typeable2tctdeMaybeca9 dataCast1 dataCast1 :: (Data a, Typeable1 t) => c (t d) ->  Maybe (c a)FDataa Typeable1tctdMaybeca9Dataclass Typeable a => Data a The Data class comprehends a fundamental primitive gfoldl for folding over constructor applications, say terms. This primitive can be instantiated in several ways to map over the immediate subterms of a term; see the gmap combinators later in this class. Indeed, a generic programmer does not necessarily need to use the ingenious gfoldl primitive but rather the intuitive gmap combinators. The gfoldl primitive is completed by means to query top-level constructors, to turn constructor representations into proper terms, and to list all possible datatype constructors. This completion allows us to serve generic programming scenarios like read, show, equality, term generation. The combinators gmapT, gmapQ, gmapM, etc are all provided with default definitions in terms of gfoldl, leaving open the opportunity to provide datatype-specific definitions. (The inclusion of the gmap combinators as members of class Data allows the programmer or the compiler to derive specialised, and maybe more efficient code per datatype. Note: gfoldl is more higher-order than the gmap combinators. This is subject to ongoing benchmarking experiments. It might turn out that the gmap combinators will be moved out of the class Data.) Conceptually, the definition of the gmap combinators in terms of the primitive gfoldl requires the identification of the gfoldl function arguments. Technically, we also need to identify the type constructor c for the construction of the result type from the folded term type. In the definition of gmapQx combinators, we use phantom type constructors for the c in the type of gfoldl because the result type of a query does not involve the (polymorphic) type of the term argument. In the definition of gmapQl we simply use the plain constant type constructor because gfoldl is left-associative anyway and so it is readily suited to fold a left-associative binary operation over the immediate subterms. In the definition of gmapQr, extra effort is needed. We use a higher-order accumulation trick to mediate between left-associative constructor application vs. right-associative binary operation (e.g., (:)). When the query is meant to compute a value of type r, then the result type withing generic folding is r -> r. So the result of folding is a function to which we finally pass the right unit. With the -XDeriveDataTypeable option, GHC can generate instances of the Data class automatically. For example, given the declaration
data T a b = C1 a b | C2 deriving (Typeable, Data)
GHC will generate an instance that is equivalent to
instance (Data a, Data b) => Data (T a b) where
    gfoldl k z (C1 a b) = z C1 `k` a `k` b
    gfoldl k z C2       = z C2

    gunfold k z c = case constrIndex c of
                        1 -> k (k (z C1))
                        2 -> z C2

    toConstr (C1 _ _) = con_C1
    toConstr C2       = con_C2

    dataTypeOf _ = ty_T

con_C1 = mkConstr ty_T "C1" [] Prefix
con_C2 = mkConstr ty_T "C2" [] Prefix
ty_T   = mkDataType "Module.T" [con_C1, con_C2]
This is suitable for datatypes that are exported transparently. DashPunctuationDashPunctuation :: GeneralCategory@.GeneralCategoryPd: Punctuation, Dash o CyclicSCC CyclicSCC :: [vertex] ->  SCC vertex˯[]vertexSCCvertex.A maximal set of mutually reachable vertices. cyclecycle :: [a] -> [a]O:[]a[]acycle ties a finite list into a circular one, or equivalently, the infinite repetition of the original list. It is the identity on infinite lists.  curry curry ::  ((a, b) -> c) -> a -> b -> cjL(,)abcabcCcurry converts an uncurried function to a curried function. CurrencySymbolCurrencySymbol :: GeneralCategoryGeneralCategorySc: Symbol, Currency xctYearctYear ::  CalendarTime -> Intp CalendarTimeInt*Year (pre-Gregorian dates are inaccurate) xctYDayctYDay ::  CalendarTime -> Int CalendarTimeInt1Day of the year (0 to 364, or 365 in leap years) xctWDayctWDay ::  CalendarTime -> Day CalendarTimeDayDay of the week xctTZNamectTZName ::  CalendarTime -> String! CalendarTimeStringName of the time zone xctTZctTZ ::  CalendarTime -> Int CalendarTimeIntVariation from UTC in seconds  ctTypectType ::  ContentType -> String ContentTypeStringThe top-level media type, the general type of the data. Common examples are "text", "image", "audio", "video", "multipart", and "application".  ctSubtype ctSubtype ::  ContentType -> String ContentTypeStringiThe media subtype, the specific data format. Examples include "plain", "html", "jpeg", "form-data", etc. xctSecctSec ::  CalendarTime -> IntݶǶ CalendarTimeInt7Seconds (0 to 61, allowing for up to two leap seconds) x ctPicosec ctPicosec ::  CalendarTime -> Integerj CalendarTimeInteger Picoseconds  ctParameters ctParameters ::  ContentType -> [(String, String)]# ContentType[](,)StringStringMedia type parameters. On common example is the charset parameter for the "text" top-level type, e.g. ("charset","ISO-8859-1"). xctMonthctMonth ::  CalendarTime -> Month CalendarTimeMonthMonth of the year xctMinctMin ::  CalendarTime -> Intp CalendarTimeIntMinutes (0 to 59) xctIsDSTctIsDST ::  CalendarTime -> Bool CalendarTimeBoolTTrue if Daylight Savings Time would be in effect, and False otherwise xctHourctHour ::  CalendarTime -> Int CalendarTimeIntHour of the day (0 to 23) xctDayctDay ::  CalendarTime -> Int. CalendarTimeIntDay of the month (1 to 31) pcreateDirectoryIfMissingcreateDirectoryIfMissing :: Bool -> FilePath -> IO ()ǻBoolFilePathIO()createDirectoryIfMissing parents dir creates a new directory dir if it doesn't exist. If the first argument is True the function will also create all parent directories if they are missing. pcreateDirectorycreateDirectory :: FilePath -> IO ()5FilePathIO(),createDirectory dir creates a new directory dir which is initially empty, or as near to empty as the operating system allows. The operation may fail with: XcpuTimePrecisioncpuTimePrecision :: IntegerIntegerThe cpuTimePrecision constant is the smallest measurable difference in CPU time that the implementation can record, and is given as an integral number of picoseconds. ecountcount :: Word8 ->  ByteString -> IntWord8 ByteStringIntcount returns the number of times its argument appears in the ByteString
count = length . elemIndices
But more efficiently than using length on the intermediate list.  copyright copyright :: HtmlHtmlpcopyFilecopyFile :: FilePath -> FilePath -> IO ()T3FilePathFilePathIO()(copyFile old new copies the existing file from old to new. If the new file already exists, it is atomically replaced by the old file. Neither path may refer to an existing directory. The permissions of old are copied to new, if possible. ecopycopy ::  ByteString ->  ByteString ByteString ByteString*O(n) Make a copy of the ByteString with its own storage. This is mainly useful to allow the rest of the data pointed to by the ByteString to be garbage collected, for example if a large string has been read in, and only a small part of it is needed in the rest of the program. coordscoords :: String -> HtmlAttrnYStringHtmlAttr cookieValue cookieValue :: Cookie -> StringCookieStringValue of the cookie.  cookieSecure cookieSecure :: Cookie -> BoolM<CookieBoolCTrue if this cookie should only be sent using secure means.  cookiePath cookiePath :: Cookie ->  Maybe StringCookieMaybeString,The path to which this cookie will be sent.  cookieName cookieName :: Cookie -> StringCookieStringName of the cookie.  cookieExpires cookieExpires :: Cookie -> Maybe CalendarTime, CookieMaybe CalendarTimeExpiry date of the cookie. If Nothing, the cookie expires when the browser sessions ends. If the date is in the past, the client should delete the cookie immediately.  cookieDomain cookieDomain :: Cookie ->  Maybe StringQ5CookieMaybeString5The domain suffix to which this cookie will be sent.  CookieCookie :: String -> String -> Maybe CalendarTime ->  Maybe String ->  Maybe String -> Bool -> Cookie?StringStringMaybe CalendarTimeMaybeStringMaybeStringBoolCookie Cookiedata Cookie;Contains all information about a cookie set by the server. &Cookiedata Cookie4wCookie is the Haskell representation of HTTP cookie values. See its relevant specs for authoritative details. ConvertedToHandleConvertedToHandle ::  SocketStatus  SocketStatusControlControl :: GeneralCategoryaOGeneralCategoryCc: Other, Control  ContentType  ContentType :: String -> String -> [(String, String)] ->  ContentType9StringString[](,)StringString ContentType ContentTypedata  ContentTypesA MIME media type value. The Show instance is derived automatically. Use showContentType to obtain the standard string representation. See http://www.ietf.org/rfc/rfc2046.txt for more information about MIME media types.  ContentEncodingContentEncoding :: String -> ContentEncodingStringContentEncoding ContentEncodingnewtype ContentEncoding)contentcontent :: String -> HtmlAttrvStringHtmlAttr9 constrType constrType :: Constr -> DataTypeConstrDataType#Gets the datatype of a constructor 9 constrRep constrRep :: Constr ->  ConstrRep~hConstr ConstrRep-Gets the public presentation of constructors 9 ConstrRepdata  ConstrRep&Public representation of constructors 9 constrIndex constrIndex :: Constr -> ConIndexq\ConstrConIndex;Gets the index of a constructor (algebraic datatypes only) 9 constrFixity constrFixity :: Constr -> FixityConstrFixity!Gets the fixity of a constructor 9 constrFields constrFields :: Constr -> [String]Constr[]StringGets the field labels of a constructor. The list of labels is returned in the same order as they were given in the original constructor declaration. 9Constrdata ConstrjRepresentation of constructors Dconstconst :: a -> b -> aabaConstant function. LConstConst :: a ->  Const a bL7aConstabLConstnewtype Const a beconscons :: Word8 ->  ByteString ->  ByteStringWord8 ByteString ByteStringmO(n) cons is analogous to (:) for lists, but of different complexity, as it requires a memcpy.  ConnErrordata  ConnErrorConnectorPunctuationConnectorPunctuation :: GeneralCategoryGeneralCategoryPc: Punctuation, Connector ! Connectiondata  Connectione:The Connection newtype is a wrapper that allows us to make connections an instance of the Stream class, without GHC extensions. While this looks sort of like a generic reference to the transport layer it is actually TCP specific, which can be seen in the implementation of the 'Stream Connection' instance.  Connected Connected ::  SocketStatus SocketStatusconnectconnect :: Socket -> SockAddr -> IO ()nOSocketSockAddrIO()B conjugate conjugate :: RealFloat a =>  Complex a ->  Complex a RealFloataComplexaComplexa#The conjugate of a complex number. 9ConIndextype ConIndex = Int`iUnique index for datatype constructors, counting from 1 in the order they are given in the program text.  configSize configSize :: Config -> Int -> Int;&ConfigIntInt configMaxTest configMaxTest :: Config -> IntConfigInt configMaxFail configMaxFail :: Config -> IntConfigInt configEvery  configEvery :: Config -> Int -> [String] -> StringyConfigInt[]StringStringConfigConfig :: Int -> Int -> Int -> Int -> Int -> [String] -> String -> ConfigGIntIntIntIntInt[]StringStringConfigConfigdata Config concatMap concatMap ::  (a -> [b]) -> [a] -> [b]3a[]b[]a[]b8Map a function over a list and concatenate the results. M concatMap concatMap :: Foldable t =>  (a -> [b]) -> t a -> [b] Foldableta[]bta[]bYMap a function over all the elements of a container and concatenate the resulting lists. e concatMap concatMap :: (Word8 -> ByteString) ->  ByteString ->  ByteString Word8 ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results  concatHtml concatHtml ::  HTML a => [a] -> HtmlHTMLa[]aHtmlconcatconcat :: [[a]] -> [a]![][]a[]aConcatenate a list of lists. Mconcatconcat :: Foldable t => t [a] -> [a]Foldablett[]a[]a?The concatenation of all the elements of a container of lists. econcatconcat ::  [ByteString] ->  ByteStringmL[] ByteString ByteString/O(n) Concatenate a list of ByteStrings. o components components :: Graph ->  Forest VertexGraphForestVertexThe connected components of a graph. Two vertices are connected if there is a path between them, traversing edges in either direction. BComplexdata RealFloat a => Complex a Complex numbers are an algebraic type. For a complex number z, abs z is a number with the magnitude of z, but oriented in the positive real direction, whereas signum z has the phase of z, but unit magnitude.  complementBit complementBit ::  Bits a => a -> Int -> adKBitsaaInta complement complement ::  Bits a => a -> aBitsaaa[compilerVersioncompilerVersion :: VersionVersion`The version of compilerName with which the program was compiled or is being interpreted. [ compilerName compilerName :: StringStringXThe Haskell implementation with which the program was compiled or is being interpreted.  comparing  comparing ::  Ord a => (b -> a) -> b -> b -> OrderingOrdababbOrdering
comparing p x y = compare (p x) (p y)
Useful combinator for use in conjunction with the xxxBy family of functions from Data.List, for example:
... sortBy (comparing fst) ...
comparecompare ::  Ord a => a -> a -> OrderingOrdaaaOrderingcompactcompact :: HtmlAttrWLHtmlAttrColumntype Column = Intcolspancolspan :: Int -> HtmlAttrIntHtmlAttrcolscols :: String -> HtmlAttrG2StringHtmlAttrcolorcolor :: String -> HtmlAttrStringHtmlAttrcollectcollect :: (Show a, Testable b) => a -> b -> Property?ShowaTestablebabPropertycodebasecodebase :: String -> HtmlAttrStringHtmlAttrcodecode :: String -> HtmlAttrStringHtmlAttr coarbitrary coarbitrary :: Arbitrary a => a -> Gen b -> Gen bl ArbitraryaaGenbGenbClosePunctuationClosePunctuation :: GeneralCategoryGeneralCategoryPe: Punctuation, Close ClosedClosed ::  SocketStatus_P SocketStatus!closeclose :: HStream bufType => HandleStream bufType -> IO ()HStreambufType HandleStreambufTypeIO()closeclose ::  Stream x => x -> IO ()jMStreamxxIO()x ClockTimedata  ClockTimeA representation of the internal clock time. Clock times may be compared, converted to strings, or converted to an external calendar time CalendarTime for I/O or other manipulations. clickmapclickmap :: String -> HtmlStringHtmlclearBitclearBit ::  Bits a => a -> Int -> a/BitsaaIntaclearclear :: String -> HtmlAttrxStringHtmlAttrclassify classify :: Testable a => Bool -> String -> a -> Property4TestableaBoolStringaProperty& ckVersion ckVersion :: Cookie ->  Maybe StringCookieMaybeString&ckValueckValue :: Cookie -> StringCookieString&ckPathckPath :: Cookie ->  Maybe StringnRCookieMaybeString&ckNameckName :: Cookie -> StringCookieString&ckDomainckDomain :: Cookie -> String*CookieString& ckComment ckComment :: Cookie ->  Maybe StringCookieMaybeStringcitecite :: Html -> HtmlHtmlHtmlBciscis :: RealFloat a => a ->  Complex a_; RealFloataaComplexawcis t is a complex value with magnitude 1 and phase t (modulo 2*pi). &chStalechStale ::  Challenge -> Bool6" ChallengeBool&chRealmchRealm ::  Challenge -> String ChallengeString&chRealmchRealm ::  Challenge -> String ChallengeStringchrchr :: Int -> CharJ<IntCharAThe Prelude.toEnum method restricted to the type Data.Char.Char. &chQopchQop ::  Challenge -> [Qop] Challenge[]Qop&chOpaquechOpaque ::  Challenge ->  Maybe StringbC ChallengeMaybeStringchoosechoose ::  Random a => (a, a) -> Gen aRandoma(,)aaGena&chNoncechNonce ::  Challenge -> StringA+ ChallengeStringcheckedchecked :: HtmlAttr|HtmlAttrcheckboxcheckbox :: String -> String -> HtmlStringStringHtmlcheckcheck :: Testable a => Config -> a -> IO ()^TestableaConfigaIO()&chDomainchDomain ::  Challenge -> [URI] Challenge[]URI CharsetCharset :: String -> CharsetM9StringCharset Charsetnewtype Charset"CharChar :: Char -> LexemeCharLexemeCharacter literal & Challengedata  Challenge& chAlgorithm chAlgorithm ::  Challenge -> Maybe Algorithm} ChallengeMaybe Algorithm& ChalDigest ChalDigest :: String -> [URI] -> String ->  Maybe String -> Bool -> Maybe Algorithm -> [Qop] ->  ChallengejString[]URIStringMaybeStringBoolMaybe Algorithm[]Qop Challenge& ChalBasic ChalBasic :: String ->  Challenge1String Challenge CGITdata CGIT m aaThe CGIT monad transformer.  CGIResultdata  CGIResultThe result of a CGI program.  CGItype CGI a = CGIT IO a !A simple CGI monad with just IO. centercenter :: Html -> HtmlpHtmlHtml cellspacing cellspacing :: Int -> HtmlAttrIntHtmlAttr cellpadding cellpadding :: Int -> HtmlAttrG5IntHtmlAttrcellcell :: HTMLTABLE ht => ht ->  HtmlTable HTMLTABLEhtht HtmlTable catMaybes catMaybes ::  [Maybe a] -> [a]+ []Maybea[]anThe catMaybes function takes a list of Maybes and returns a list of all the Just values. :Categoryclass Category cat7A class for categories. id and (.) must form a monoid. 7 catchJust  catchJust :: (Exception -> Maybe b) -> IO a ->  (b -> IO a) -> IO a ExceptionMaybebIOabIOaIOahThe function catchJust is like catch, but it takes an extra argument which is an exception predicate, a function which selects which type of exceptions we're interested in. There are some predefined exception predicates for useful subsets of exceptions: ioErrors, arithExceptions, and so on. For example, to catch just calls to the error function, we could use
result <- catchJust errorCalls thing_to_try handler
Any other exceptions which are not matched by the predicate are re-raised, and may be caught by an enclosing catch or catchJust. 5 catchJust  catchJust :: Exception e => (e -> Maybe b) -> IO a ->  (b -> IO a) -> IO a ExceptioneeMaybebIOabIOaIOaThe function catchJust is like catch, but it takes an extra argument which is an exception predicate, a function which selects which type of exceptions we're interested in.
result <- catchJust errorCalls thing_to_try handler
Any other exceptions which are not matched by the predicate are re-raised, and may be caught by an enclosing catch or catchJust. 5catchescatches :: IO a ->  [Handler a] -> IO aIOa[]HandleraIOa7catchDyncatchDyn :: Typeable exception => IO a -> (exception -> IO a) -> IO aTypeable exceptionIOa exceptionIOaIOa6Catch dynamic exceptions of the required type. All other exceptions are re-thrown, including dynamic exceptions of the wrong type. When using dynamic exceptions it is advisable to define a new datatype to use for your exception type, to avoid possible clashes with dynamic exceptions used in other libraries.  catchCGIcatchCGI :: CGI a -> (Exception -> CGI a) -> CGI a  CGIa ExceptionCGIaCGIanCatches any expection thrown by a CGI action, and uses the given exception handler if an exception is thrown. 7catchcatch :: IO a -> (Exception -> IO a) -> IO a } IOa ExceptionIOaIOaThis is the simplest of the exception-catching functions. It takes a single argument, runs it, and if an exception is raised the "handler" is executed, with the value of the exception passed as an argument. Otherwise, the result is returned as normal. For example:
catch (openFile f ReadMode) 
    (\e -> hPutStr stderr ("Couldn't open "++f++": " ++ show e))
For catching exceptions in pure (non-IO) expressions, see the function evaluate. Note that due to Haskell's unspecified evaluation order, an expression may return one of several possible exceptions: consider the expression error "urk" + 1 `div` 0. Does catch execute the handler passing ErrorCall "urk", or ArithError DivideByZero? The answer is "either": catch makes a non-deterministic choice about which exception to catch. If you call it again, you might get a different exception back. This is ok, because catch is an IO computation. Note that catch catches all types of exceptions, and is generally used for "cleaning up" before passing on the exception using throwIO. It is not good practice to discard the exception and continue, without first checking the type of the exception (it might be a ThreadKilled, for example). In this case it is usually better to use catchJust and select the kinds of exceptions to catch. Also note that the Prelude also exports a function called Prelude.catch with a similar type to catch, except that the Prelude version only catches the IO and user families of exceptions (as required by Haskell 98). We recommend either hiding the Prelude version of Prelude.catch when importing Control.OldException:
import Prelude hiding (catch)
or importing Control.OldException qualified, to avoid name-clashes:
import qualified Control.OldException as C
and then using C.catch 5catchcatch :: Exception e => IO a ->  (e -> IO a) -> IO a ExceptioneIOaeIOaIOaThis is the simplest of the exception-catching functions. It takes a single argument, runs it, and if an exception is raised the "handler" is executed, with the value of the exception passed as an argument. Otherwise, the result is returned as normal. For example:
catch (openFile f ReadMode)
    (\e -> hPutStr stderr ("Couldn't open "++f++": " ++ show e))
For catching exceptions in pure (non-IO) expressions, see the function evaluate. Note that due to Haskell's unspecified evaluation order, an expression may return one of several possible exceptions: consider the expression error "urk" + 1 `div` 0. Does catch execute the handler passing ErrorCall "urk", or ArithError DivideByZero? The answer is "either": catch makes a non-deterministic choice about which exception to catch. If you call it again, you might get a different exception back. This is ok, because catch is an IO computation. Note that catch catches all types of exceptions, and is generally used for "cleaning up" before passing on the exception using throwIO. It is not good practice to discard the exception and continue, without first checking the type of the exception (it might be a ThreadKilled, for example). In this case it is usually better to use catchJust and select the kinds of exceptions to catch. Also note that the Prelude also exports a function called Prelude.catch with a similar type to Control.Exception.catch, except that the Prelude version only catches the IO and user families of exceptions (as required by Haskell 98). We recommend either hiding the Prelude version of Prelude.catch when importing Control.Exception:
import Prelude hiding (catch)
or importing Control.Exception qualified, to avoid name-clashes:
import qualified Control.Exception as C
and then using C.catch castStablePtrToPtrcastStablePtrToPtr ::  StablePtr a -> Ptr () StablePtraPtr()rCoerce a stable pointer to an address. No guarantees are made about the resulting value, except that the original stable pointer can be recovered by castPtrToStablePtr. In particular, the address may not refer to an accessible memory location and any attempt to pass it to the member functions of the class Foreign.Storable.Storable leads to undefined behaviour. castPtrToStablePtrcastPtrToStablePtr :: Ptr () ->  StablePtr aPtr() StablePtra[The inverse of castStablePtrToPtr, i.e., we have the identity
sp == castPtrToStablePtr (castStablePtrToPtr sp)
for any stable pointer sp on which freeStablePtr has not been executed yet. Moreover, castPtrToStablePtr may only be applied to pointers that have been produced by castStablePtrToPtr. 'castPtrToFunPtrcastPtrToFunPtr :: Ptr a -> FunPtr bPtraFunPtrbCasts a Ptr to a FunPtr. Note: this is valid only on architectures where data and function pointers range over the same set of addresses, and should only be used for bindings to external libraries whose interface already relies on this assumption. 'castPtrcastPtr :: Ptr a -> Ptr bS!castPtr function casts a pointer from one type to another. 'castFunPtrToPtrcastFunPtrToPtr :: FunPtr a -> Ptr b"!FunPtraPtrbCasts a FunPtr to a Ptr. Note: this is valid only on architectures where data and function pointers range over the same set of addresses, and should only be used for bindings to external libraries whose interface already relies on this assumption. ' castFunPtr castFunPtr :: FunPtr a -> FunPtr b#r#FunPtraFunPtrb>Casts a FunPtr to a FunPtr of a different type. (castForeignPtrcastForeignPtr ::  ForeignPtr a ->  ForeignPtr bW$2$ ForeignPtra ForeignPtrbUThis function casts a ForeignPtr parameterised by one type into another type. castcast :: (Typeable a, Typeable b) => a -> Maybe b9% %TypeableaTypeablebaMaybebThe type-safe cast operation captioncaption :: Html -> Html%%HtmlHtmlpcanonicalizePathcanonicalizePath :: FilePath ->  IO FilePath-&&FilePathIOFilePathtGiven path referring to a file or directory, returns a canonicalized path, with the intent that two paths referring to the same file/directory will map to the same canonicalized path. Note that it is impossible to guarantee that the implication (same file/dir <=> same canonicalizedPath) holds in either direction: this function can make only a best-effort attempt. xcalendarTimeToStringcalendarTimeToString ::  CalendarTime -> String%( ( CalendarTimeString0formats calendar times using local conventions. x CalendarTime CalendarTime :: Int -> Month -> Int -> Int -> Int -> Int -> Integer -> Day -> Int ->  String ->  Int ->  Bool ->  CalendarTime)\) IntMonthIntIntIntIntIntegerDayIntStringIntBool CalendarTimex CalendarTimedata  CalendarTime)mCalendarTime is a user-readable and manipulable representation of the internal ClockTime type. e ByteStringdata  ByteString*A space-efficient representation of a Word8 vector, supporting many efficient operations. A ByteString contains 8-bit characters only. Instances of Eq, Ord, Read, Show, Data, Typeable bulletbullet :: Html++HtmlobuildGbuildG :: Bounds -> [Edge] -> Graph,+Bounds[]EdgeGraph$Build a graph from a list of edges.  BufferTypeclass  BufferType bufTypem, The BufferType class encodes, in a mixed-mode way, the interface that the library requires to operate over data embedded in HTTP requests and responses. That is, we use explicit dictionaries for the operations, but overload the name of the dicts themselves.  bufferOps bufferOps :: BufferType bufType => BufferOp bufType.- BufferTypebufTypeBufferOpbufTypeBufferOp BufferOp :: (Handle -> Int -> IO a) -> (Handle -> IO a) -> (Handle -> a -> IO ()) -> (Handle -> IO a) -> a ->  (a -> a -> a) ->  ([a] -> a) ->  (String -> a) ->  (a -> String) ->  (a -> Word8 -> a) ->  (Int -> a -> (a, a)) ->  ((Char -> Bool) -> a -> (a, a)) ->  (a -> Bool) ->  (a -> Bool) ->  BufferOp a0/HandleIntIOaHandleIOaHandleaIO()HandleIOaaaaa[]aaStringaaStringaWord8aInta(,)aaCharBoola(,)aaaBoolaBoolBufferOpaBufferOpdata BufferOp a0QBufferOp encodes the I/O operations of the underlying buffer over a Handle in an (explicit) dictionary type. May not be needed, but gives us flexibility in explicit overriding and wrapping up of these methods. Along with IO operations is an ad-hoc collection of functions for working with these abstract buffers, as needed by the internals of the code that processes requests and responses. We supply three default BufferOp values, for String along with the strict and lazy versions of ByteString. To add others, provide BufferOp definitions for 6 BufferModedata  BufferModez3,Three kinds of buffering are supported: line-buffering, block-buffering or no-buffering. These modes have the following effects. For output, items are written out, or flushed, from the internal buffer according to the buffer mode:
  • line-buffering: the entire output buffer is flushed whenever a newline is output, the buffer overflows, a System.IO.hFlush is issued, or the handle is closed.
  • block-buffering: the entire buffer is written out whenever it overflows, a System.IO.hFlush is issued, or the handle is closed.
  • no-buffering: output is written immediately, and never stored in the buffer.
An implementation is free to flush the buffer more frequently, but not less frequently, than specified above. The output buffer is emptied as soon as it has been written out. Similarly, input occurs according to the buffer mode for the handle:
  • line-buffering: when the buffer for the handle is not empty, the next item is obtained from the buffer; otherwise, when the buffer is empty, characters up to and including the next newline character are read into the buffer. No characters are available until the newline character is available or the buffer is full.
  • block-buffering: when the buffer for the handle becomes empty, the next block of data is read into the buffer.
  • no-buffering: the next input item is read and returned. The System.IO.hLookAhead operation implies that even a no-buffered handle may require a one-character buffer.
The default buffering mode when a handle is opened is implementation-dependent and may depend on the file system object which is attached to that handle. For most implementations, physical files will normally be block-buffered and terminals will normally be line-buffered.  buf_toStr buf_toStr ::  BufferOp a -> a -> String#;;BufferOpaaString buf_splitAt  buf_splitAt ::  BufferOp a -> Int -> a -> (a, a);;BufferOpaInta(,)aabuf_span buf_span ::  BufferOp a -> (Char -> Bool) -> a -> (a, a)e<5<BufferOpaCharBoola(,)aabuf_snoc buf_snoc ::  BufferOp a -> a -> Word8 -> a<<BufferOpaaWord8abuf_isLineTermbuf_isLineTerm ::  BufferOp a -> a -> Boolq=V=BufferOpaaBool buf_isEmpty buf_isEmpty ::  BufferOp a -> a -> Bool==BufferOpaaBoolbuf_hPut buf_hPut ::  BufferOp a -> Handle -> a -> IO ()>]>BufferOpaHandleaIO() buf_hGetLine buf_hGetLine ::  BufferOp a -> Handle -> IO a?>BufferOpaHandleIOabuf_hGetContentsbuf_hGetContents ::  BufferOp a -> Handle -> IO a??BufferOpaHandleIOabuf_hGet buf_hGet ::  BufferOp a -> Handle -> Int -> IO a<@@BufferOpaHandleIntIOa buf_fromStr buf_fromStr ::  BufferOp a -> String -> a@@BufferOpaStringa buf_empty buf_empty ::  BufferOp a -> a A ABufferOpaa buf_concat buf_concat ::  BufferOp a -> [a] -> aAABufferOpa[]aa buf_append  buf_append ::  BufferOp a -> a -> a -> a"BBBufferOpaaaa&browserTimestampbrowserTimestamp :: BrowserEvent ty ->  ClockTimeBB BrowserEventty ClockTime& BrowserStatedata  BrowserState connectionB_BrowserState is the (large) record type tracking the current settings of the browser. &browserRequestURIbrowserRequestURI :: BrowserEvent ty -> StringCC BrowserEventtyString&browserRequestIDbrowserRequestID :: BrowserEvent ty ->  RequestIDeDCD BrowserEventty RequestID&browserEventTypebrowserEventType :: BrowserEvent ty -> BrowserEventType tyED BrowserEventtyBrowserEventTypety&BrowserEventTypedata BrowserEventType tyNEBrowserEventType is the enumerated list of events that the browser internals will report to a user-defined event handler. & BrowserEvent  BrowserEvent ::  ClockTime ->  RequestID -> String -> BrowserEventType ty -> BrowserEvent tyFvF ClockTime RequestIDStringBrowserEventTypety BrowserEventty& BrowserEventdata  BrowserEvent tyGBrowserEvent is the event record type that a user-defined handler, set via setEventHandler, will be passed. It indicates various state changes encountered in the processing of a given RequestID, along with timestamps at which they occurred. & BrowserActiondata  BrowserAction conn aOHRBrowserAction is the IO monad, but carrying along a BrowserState. &browsebrowse :: BrowserAction conn a -> IO aIH BrowserActionconnaIOabrowse act is the toplevel action to perform a BrowserAction. Example use: browse (request (getRequest yourURL)).  Broadcast Broadcast ::  SocketOptionII SocketOptionebreakSubstringbreakSubstring ::  ByteString ->  ByteString -> (ByteString, ByteString)J~J ByteString ByteString(,) ByteString ByteString$Break a string on a substring, returning a pair of the part of the string prior to the match, and the rest of the string. The following relationships hold:
break (== c) l == breakSubstring (singleton c) l
and:
findSubstring s l ==
   if null s then Just 0
             else case breakSubstring s l of
                      (x,y) | null y    -> Nothing
                            | otherwise -> Just (length x)
For example, to tokenise a string, dropping delimiters:
tokenise x y = h : if null t then [] else tokenise x (drop (length x) t)
    where (h,t) = breakSubstring x y
To skip to the first occurence of a string:
snd (breakSubstring x y) 
To take the parts of a string before a delimiter:
fst (breakSubstring x y) 
ebreakEndbreakEnd :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)NZNWord8Bool ByteString(,) ByteString ByteStringsbreakEnd behaves like break but from the end of the ByteString breakEnd p == spanEnd (not.p) e breakByte breakByte :: Word8 ->  ByteString -> (ByteString, ByteString)OOWord8 ByteString(,) ByteString ByteStringbreakByte breaks its ByteString argument at the first occurence of the specified byte. It is more efficient than break as it is implemented with memchr(3). I.e.
break (=='c') "abcd" == breakByte 'c' "abcd"
breakbreak ::  (a -> Bool) -> [a] ->  ([a], [a])7QQaBool[]a(,)[]a[]abreak, applied to a predicate p and a list xs, returns a tuple where first element is longest prefix (possibly empty) of xs of elements that do not satisfy p and second element is the remainder of the list:
break (> 3) [1,2,3,4,1,2,3,4] == ([1,2,3],[4,1,2,3,4])
break (< 9) [1,2,3] == ([],[1,2,3])
break (> 9) [1,2,3] == ([1,2,3],[])
break p is equivalent to span (not . p). ebreakbreak :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)SSWord8Bool ByteString(,) ByteString ByteStringbreak p is equivalent to span (not . p). Under GHC, a rewrite rule will transform break (==) into a call to the specialised breakByte:
break ((==) x) = breakByte x
break (==x) = breakByte x
7bracketOnError bracketOnError :: IO a ->  (a -> IO b) ->  (a -> IO c) -> IO c|UKUIOaaIObaIOcIOcqLike bracket, but only performs the final action if there was an exception raised by the in-between computation. 5bracketOnError bracketOnError :: IO a ->  (a -> IO b) ->  (a -> IO c) -> IO cVpVIOaaIObaIOcIOcqLike bracket, but only performs the final action if there was an exception raised by the in-between computation. 7bracket_ bracket_ :: IO a -> IO b -> IO c -> IO cW{WIOaIObIOcIOc_A variant of bracket where the return value from the first computation is not required. 5bracket_ bracket_ :: IO a -> IO b -> IO c -> IO cXjXIOaIObIOcIOc_A variant of bracket where the return value from the first computation is not required. 7bracket bracket :: IO a ->  (a -> IO b) ->  (a -> IO c) -> IO cYeYIOaaIObaIOcIOcWhen you want to acquire a resource, do some work with it, and then release the resource, it is a good idea to use bracket, because bracket will install the necessary exception handler to release the resource in the event that an exception is raised during the computation. If an exception is raised, then bracket will re-raise the exception (after performing the release). A common example is opening a file:
bracket
  (openFile "filename" ReadMode)
  (hClose)
  (\handle -> do { ... })
The arguments to bracket are in this order so that we can partially apply it, e.g.:
withFile name mode = bracket (openFile name mode) hClose
5bracket bracket :: IO a ->  (a -> IO b) ->  (a -> IO c) -> IO c\\IOaaIObaIOcIOcWhen you want to acquire a resource, do some work with it, and then release the resource, it is a good idea to use bracket, because bracket will install the necessary exception handler to release the resource in the event that an exception is raised during the computation. If an exception is raised, then bracket will re-raise the exception (after performing the release). A common example is opening a file:
bracket
  (openFile "filename" ReadMode)
  (hClose)
  (\handle -> do { ... })
The arguments to bracket are in this order so that we can partially apply it, e.g.:
withFile name mode = bracket (openFile name mode) hClose
brbr :: Html__HtmloBoundstype Bounds = (Vertex, Vertex)`The bounds of a Table. BoundBound ::  SocketStatus`r` SocketStatus bordercolor bordercolor :: String -> HtmlAttr``StringHtmlAttrborderborder :: Int -> HtmlAttrEa3aIntHtmlAttrboldbold :: Html -> HtmlaaHtmlHtmlbodybody :: Html -> HtmlaaHtmlHtmlblueblue :: String!bbString blockquote blockquote :: Html -> Html}bnbHtmlHtml7BlockedOnDeadMVarBlockedOnDeadMVar ::  Exceptionbb ExceptionThe current thread was executing a call to Control.Concurrent.MVar.takeMVar that could never return, because there are no other references to this MVar. 5BlockedOnDeadMVarBlockedOnDeadMVar :: BlockedOnDeadMVarccBlockedOnDeadMVar5BlockedOnDeadMVardata BlockedOnDeadMVar+d7BlockedIndefinitelyBlockedIndefinitely ::  Exceptiondd ExceptionThe current thread was waiting to retry an atomic memory transaction that could never become possible to complete because there are no other threads referring to any of the TVars involved. 5BlockedIndefinitelyBlockedIndefinitely :: BlockedIndefinitelyeeBlockedIndefinitely5BlockedIndefinitelydata BlockedIndefinitelyf5blockedblocked :: IO BoolMf@fIOBoolKreturns True if asynchronous exceptions are blocked in the current thread. 6BlockBufferingBlockBuffering ::  Maybe Int ->  BufferModegfMaybeInt BufferModeblock-buffering should be enabled if possible. The size of the buffer is n items if the argument is Just n and is otherwise implementation-dependent. 7blockblock :: IO a -> IO ahhIOaIOaApplying block to a computation will execute that computation with asynchronous exceptions blocked. That is, any thread which attempts to raise an exception in the current thread with Control.Exception.throwTo will be blocked until asynchronous exceptions are enabled again. There's no need to worry about re-enabling asynchronous exceptions; that is done automatically on exiting the scope of block. Threads created by Control.Concurrent.forkIO inherit the blocked state from the parent; that is, to start a thread in blocked mode, use block $ forkIO .... This is particularly useful if you need to establish an exception handler in the forked thread before any asynchronous exceptions are received. 5blockblock :: IO a -> IO aPk;kIOaIOaApplying block to a computation will execute that computation with asynchronous exceptions blocked. That is, any thread which attempts to raise an exception in the current thread with Control.Exception.throwTo will be blocked until asynchronous exceptions are enabled again. There's no need to worry about re-enabling asynchronous exceptions; that is done automatically on exiting the scope of block. Threads created by Control.Concurrent.forkIO inherit the blocked state from the parent; that is, to start a thread in blocked mode, use block $ forkIO .... This is particularly useful if you need to establish an exception handler in the forked thread before any asynchronous exceptions are received. blackblack :: StringjnanStringbitSizebitSize ::  Bits a => a -> IntnnBitsaaIntBitsclass  Num a => Bits aoThe Bits class defines bitwise operations over integral types.
  • Bits are numbered from 0 with bit 0 being the least significant bit.
Minimal complete definition: .&., .|., xor, complement, (shift or (shiftL and shiftR)), (rotate or (rotateL and rotateR)), bitSize and isSigned. bitbit ::  Bits a => Int -> appBitsaInta bindSocket bindSocket :: Socket -> SockAddr -> IO ()mqNqSocketSockAddrIO()bindEbindE :: Result a -> (a -> Result b) -> Result brqResultaaResultbResultbbigbig :: Html -> HtmlPrArHtmlHtmlbgcolorbgcolor :: String -> HtmlAttrrrStringHtmlAttrbesidesbesides :: HTMLTABLE ht => [ht] ->  HtmlTable7ss HTMLTABLEht[]ht HtmlTablebesidebeside :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTabless HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTableobccbcc :: Graph -> Forest [Vertex]Zt8tGraphForest[]Vertex}The biconnected components of a graph. An undirected graph is biconnected if the deletion of any vertex leaves it connected. basefontbasefont :: HtmluuHtmlbasebase :: String -> HtmlAttrsu^uStringHtmlAttr background background :: String -> HtmlAttruuStringHtmlAttr& auUsername auUsername ::  Authority -> StringEv/v AuthorityString& auUsername auUsername ::  Authority -> Stringvv AuthorityString authTypeauthType :: MonadCGI m => m (Maybe String)(wwMonadCGImmMaybeStringIf the server supports user authentication, and the script is protected, this is the protocol-specific authentication method used to validate the user.  authority authority :: URI -> Stringx xURIString& Authoritydata  AuthorityRxAuthority specifies the HTTP Authentication method to use for a given domain/realm; Basic or Digest. & AuthDigest AuthDigest :: String -> String -> String -> String -> Maybe Algorithm -> [URI] ->  Maybe String -> [Qop] ->  Authorityzy StringStringStringStringMaybe Algorithm[]URIMaybeString[]Qop Authority& AuthBasic  AuthBasic :: String -> String -> String -> URI ->  AuthorityzzStringStringStringURI Authority&auSiteauSite ::  Authority -> URI&{{ AuthorityURI&auRealmauRealm ::  Authority -> String{t{ AuthorityString&auRealmauRealm ::  Authority -> String{{ AuthorityString&auQopauQop ::  Authority -> [Qop]P|7| Authority[]Qop& auPassword auPassword ::  Authority -> String|| AuthorityString& auPassword auPassword ::  Authority -> String$}} AuthorityString&auOpaqueauOpaque ::  Authority ->  Maybe String}z} AuthorityMaybeString&auNonceauNonce ::  Authority -> String}} AuthorityStringxAugustAugust :: Month;~3~Month&auDomainauDomain ::  Authority -> [URI]~~ Authority[]URI& auAlgorithm auAlgorithm ::  Authority -> Maybe Algorithm$ AuthorityMaybe Algorithm#atomicModifyIORefatomicModifyIORef :: IORef a ->  (a -> (a, b)) -> IO bIORefaa(,)abIObAtomically modifies the contents of an IORef. This function is useful for using IORef in a safe way in a multithreaded program. If you only have one IORef, then using atomicModifyIORef to access and modify it will prevent race conditions. Extending the atomicity to multiple IORefs is problematic, so it is recommended that if you need to do anything more complicated then using Control.Concurrent.MVar.MVar instead is a good idea. 7asyncExceptionsasyncExceptions ::  Exception -> Maybe AsyncException- ExceptionMaybeAsyncException7AsyncExceptiondata AsyncExceptionmAsynchronous exceptions 7AsyncExceptionAsyncException :: AsyncException ->  ExceptionAsyncException ExceptionvAsynchronous exceptions (see section on Asynchronous Exceptions: Control.OldException#AsynchronousExceptions). 5AsyncExceptiondata AsyncExceptionAsynchronous exceptions Masumasum :: (Foldable t, Alternative f) => t (f a) -> f ap7Foldablet Alternativeftfafa@The sum of a collection of actions, generalizing concat. lassocsassocs :: Map k a -> [(k, a)]Mapka[](,)kaO(n). Return all key/value pairs in the map in ascending key order.
assocs (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]
assocs empty == []
nassocsassocs :: IntMap a ->  [(Key, a)]:IntMapa[](,)KeyaO(n). Return all key/value pairs in the map in ascending key order.
assocs (fromList [(5,"a"), (3,"b")]) == [(3,"b"), (5,"a")]
assocs empty == []
7 assertions assertions ::  Exception ->  Maybe StringZ; ExceptionMaybeString7AssertionFailedAssertionFailed :: String ->  Exception·String ExceptionThis exception is thrown by the assert operation when the condition fails. The String argument contains the location of the assertion in the source program. 5AssertionFailedAssertionFailed :: String -> AssertionFailed݈StringAssertionFailed5AssertionFaileddata AssertionFailed;7assertassert :: Bool -> a -> aBoolaa7If the first argument evaluates to True, then the result is the second argument. Otherwise an AssertionFailed exception is raised, containing a String with the source file and line number of the call to assert. Assertions can normally be turned on or off with a compiler flag (for GHC, assertions are normally on unless optimisation is turned on with -O or the -fignore-asserts option is given). When assertions are turned off, the first argument to assert is ignored, and the second argument is returned as the result. 5assertassert :: Bool -> a -> a.Boolaa7If the first argument evaluates to True, then the result is the second argument. Otherwise an AssertionFailed exception is raised, containing a String with the source file and line number of the call to assert. Assertions can normally be turned on or off with a compiler flag (for GHC, assertions are normally on unless optimisation is turned on with -O or the -fignore-asserts option is given). When assertions are turned off, the first argument to assert is ignored, and the second argument is returned as the result. F ArrowZeroclass  Arrow a =>  ArrowZero aF ArrowPlusclass ArrowZero a =>  ArrowPlus aF ArrowMonad ArrowMonad :: a () b -> ArrowMonad a bmJa()b ArrowMonadabF ArrowMonadnewtype ArrowApply a =>  ArrowMonad a bThe ArrowApply class is equivalent to Monad: any monad gives rise to a Kleisli arrow, and any instance of ArrowApply defines a monad. F ArrowLoopclass  Arrow a =>  ArrowLoop aThe loop operator expresses computations in which an output value is fed back as input, even though the computation occurs only once. It underlies the rec value recursion construct in arrow notation. F ArrowChoiceclass  Arrow a =>  ArrowChoice a‘Choice, for arrows that support it. This class underlies the if and case constructs in arrow notation. Any instance must define left. The other combinators have sensible default definitions, which may be overridden for efficiency. F ArrowApplyclass  Arrow a =>  ArrowApply a?Some arrows allow application of arrow inputs to other inputs. FArrowclass Category a => Arrow aThe basic arrow class. Minimal complete definition: arr and first. The other combinators have sensible default definitions, which may be overridden for efficiency. 7ArrayExceptiondata ArrayExceptionz)Exceptions generated by array operations 7ArrayExceptionArrayException :: ArrayException ->  Exception%ArrayException ExceptionlExceptions raised by array-related operations. (NOTE: GHC currently does not throw ArrayExceptions). 5ArrayExceptiondata ArrayExceptionѕ)Exceptions generated by array operations Farrarr ::  Arrow a => (b -> c) -> a b ckIArrowabcabc7arithExceptionsarithExceptions ::  Exception -> Maybe ArithExceptionז ExceptionMaybeArithException7ArithExceptiondata ArithException>"The type of arithmetic exceptions 7ArithExceptionArithException :: ArithException ->  ExceptionėArithException ExceptionExceptions raised by arithmetic operations. (NOTE: GHC currently does not throw ArithExceptions except for DivideByZero). 5ArithExceptiondata ArithException"The type of arithmetic exceptions  arguments arguments :: Result -> [String]/Result[]Stringareaarea :: Htmlg`Htmlarchivearchive :: String -> HtmlAttrəStringHtmlAttr[archarch :: StringString:The machine architecture on which the program is running.  arbitrary arbitrary :: Arbitrary a => Gen a ArbitraryaGena Arbitraryclass  Arbitrary aޚaquaaqua :: StringStringxAprilApril :: MonthVNMonthNapproxRationalapproxRational :: RealFrac a => a -> a -> RationalǛRealFracaaaRational.approxRational, applied to two real fractional numbers x and epsilon, returns the simplest rational number within epsilon of x. A rational number y is said to be simpler than another y' if Any real interval contains a unique simplest rational; in particular, note that 0/1 is the simplest rational of all. L Applicativeclass  Functor f =>  Applicative fa#A functor with application. Instances should satisfy the following laws: The Functor instance should satisfy
fmap f x = pure f <*> x
If f is also a Monad, define pure = return and (<*>) = ap. appletapplet :: Html -> HtmlءɡHtmlHtmlKappEndoappEndo :: Endo a -> a -> a?+Endoaaa6 AppendMode AppendMode :: IOMode~IOMode6 appendFile appendFile :: FilePath -> String -> IO () FilePathStringIO()The computation appendFile file str function appends the string str, to the file file. Note that writeFile and appendFile write a literal string to a file. To write a value of any printable type, as with print, use the show function to convert the value to a string first.
main = appendFile "squares" (show [(x,x*x) | x <- [0,0.1..2]])
e appendFile appendFile :: FilePath ->  ByteString -> IO ()5FilePath ByteStringIO()&Append a ByteString to a file. eappendappend ::  ByteString ->  ByteString ->  ByteString¥ ByteString ByteString ByteString#O(n) Append two ByteStrings Fappapp :: ArrowApply a => a (a b c, b) cU ArrowApplyaa(,)abcbcapap ::  Monad m =>  m (a -> b) -> m a -> m b MonadmmabmambIn many situations, the liftM operations can be replaced by uses of ap, which promotes function application.
return f `ap` x1 `ap` ... `ap` xn
is equivalent to
liftMn f x1 x2 ... xn
aNY_PORTaNY_PORT ::  PortNumber9, PortNumberanyany ::  (a -> Bool) -> [a] -> BoolaBool[]aBoolmApplied to a predicate and a list, any determines if any element of the list satisfies the predicate. Manyany :: Foldable t =>  (a -> Bool) -> t a -> Bool{FoldabletaBooltaBoolIDetermines whether any element of the structure satisfies the predicate. eanyany :: (Word8 -> Bool) ->  ByteString -> BoolsOWord8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, any determines if any element of the ByteString satisfies the predicate. KAnyAny :: Bool -> AnyK=BoolAnyKAnynewtype Anyx"Boolean monoid under disjunction. andand :: [Bool] -> Bool۫[]BoolBooland returns the conjunction of a Boolean list. For the result to be True, the list must be finite; False, however, results from a False value at a finite index of a finite or infinite list. Mandand :: Foldable t => t Bool -> Bool<FoldablettBoolBooland returns the conjunction of a container of Bools. For the result to be True, the container must be finite; False, however, results from a False value finitely far from the left end. anchoranchor :: Html -> HtmleVHtmlHtmlL Alternativeclass Applicative f =>  Alternative f"A monoid on applicative functors. lalter alter ::  Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k aTOrdkMaybeaMaybeakMapkaMapkatO(log n). The expression (alter f k map) alters the value x at k, or absence thereof. alter can be used to insert, delete, or update a value in a Map. In short : lookup k (alter f k m) = f (lookup k m).
let f _ = Nothing
alter f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
alter f 5 (fromList [(5,"a"), (3,"b")]) == singleton 3 "b"

let f _ = Just "c"
alter f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a"), (7, "c")]
alter f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "c")]
nalter alter :: (Maybe a -> Maybe a) -> Int -> IntMap a -> IntMap a²MaybeaMaybeaIntIntMapaIntMapa$O(log n). The expression (alter f k map) alters the value x at k, or absence thereof. alter can be used to insert, delete, or update a value in an IntMap. In short : lookup k (alter f k m) = f (lookup k m). altcodealtcode :: String -> HtmlAttrH3StringHtmlAttraltalt :: String -> HtmlAttrStringHtmlAttrallall ::  (a -> Bool) -> [a] -> BoolaBool[]aBoollApplied to a predicate and a list, all determines if all elements of the list satisfy the predicate. Mallall :: Foldable t =>  (a -> Bool) -> t a -> BoolFoldabletaBooltaBoolHDetermines whether all elements of the structure satisfy the predicate. eallall :: (Word8 -> Bool) ->  ByteString -> BoolڶWord8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. KAllAll :: Bool -> AllBoolAllKAllnewtype All"Boolean monoid under conjunction. alinkalink :: String -> HtmlAttrePStringHtmlAttr'alignPtralignPtr :: Ptr a -> Int -> Ptr a۸PtraIntPtraGiven an arbitrary address and an alignment constraint, alignPtr yields the next higher address that fulfills the alignment constraint. An alignment constraint x is fulfilled by any address divisible by x. This operation is idempotent. % alignment alignment :: Storable a => a -> IntO5StorableaaIntalignalign :: String -> HtmlAttrStringHtmlAttr9AlgRepAlgRep :: [Constr] -> DataRep[]ConstrDataRep& Algorithmdata  AlgorithmIZAlgorithm controls the digest algorithm to, MD5 or MD5Session. & AlgMD5sess AlgMD5sess ::  Algorithm Algorithm&AlgMD5AlgMD5 ::  Algorithm7+ Algorithm9 AlgConstr AlgConstr :: ConIndex ->  ConstrRepConIndex ConstrRep AI_V4MAPPED AI_V4MAPPED ::  AddrInfoFlag AddrInfoFlag AI_PASSIVE AI_PASSIVE ::  AddrInfoFlagM> AddrInfoFlagAI_NUMERICSERVAI_NUMERICSERV ::  AddrInfoFlag AddrInfoFlagAI_NUMERICHOSTAI_NUMERICHOST ::  AddrInfoFlag AddrInfoFlag AI_CANONNAME AI_CANONNAME ::  AddrInfoFlag]N AddrInfoFlagAI_ALLAI_ALL ::  AddrInfoFlag AddrInfoFlag AI_ADDRCONFIG AI_ADDRCONFIG ::  AddrInfoFlag AddrInfoFlagafileafile :: String -> HtmlYHStringHtmlAF_X25AF_X25 :: FamilyFamily AF_WANPIPE AF_WANPIPE :: FamilyؿFamily AF_UNSPEC AF_UNSPEC :: Family'FamilyAF_UNIXAF_UNIX :: Familyi`FamilyAF_SNAAF_SNA :: FamilyFamily AF_SECURITY AF_SECURITY :: FamilyFamilyAF_ROUTEAF_ROUTE :: Family7.FamilyAF_ROSEAF_ROSE :: FamilyypFamilyAF_PPPOXAF_PPPOX :: FamilyFamily AF_PACKET AF_PACKET :: FamilyFamily AF_NETROM AF_NETROM :: FamilyI@Family AF_NETBEUI AF_NETBEUI :: FamilyFamilyAF_ISDNAF_ISDN :: FamilyFamilyAF_IRDAAF_IRDA :: Family FamilyAF_IPXAF_IPX :: FamilyULFamilyAF_INET6AF_INET6 :: FamilyFamilyAF_INETAF_INET :: FamilyFamily AF_ECONET AF_ECONET :: Family!Family AF_DECnet AF_DECnet :: Familyg^Family AF_BRIDGE AF_BRIDGE :: FamilyFamily AF_BLUETOOTH AF_BLUETOOTH :: FamilyFamilyAF_AX25AF_AX25 :: Family;2Family AF_ATMSVC AF_ATMSVC :: FamilyxFamily AF_ATMPVC AF_ATMPVC :: FamilyFamilyAF_ASHAF_ASH :: FamilyFamily AF_APPLETALK AF_APPLETALK :: FamilySJFamilyl adjustWithKey  adjustWithKey ::  Ord k =>  (k -> a -> a) -> k -> Map k a -> Map k aOrdkkaakMapkaMapkaO(log n). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned.
let f key x = (show key) ++ ":new " ++ x
adjustWithKey f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:new a")]
adjustWithKey f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
adjustWithKey f 7 empty                         == empty
n adjustWithKey  adjustWithKey :: (Key -> a -> a) -> Key -> IntMap a -> IntMap aV'KeyaaKeyIntMapaIntMapaO(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned.
let f key x = (show key) ++ ":new " ++ x
adjustWithKey f 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "5:new a")]
adjustWithKey f 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
adjustWithKey f 7 empty                         == empty
jadjust adjust :: (a -> a) -> Int -> Seq a -> Seq ayUaaIntSeqaSeqaO(log(min(i,n-i))). Update the element at the specified position. If the position is out of range, the original sequence is returned. ladjust adjust ::  Ord k => (a -> a) -> k -> Map k a -> Map k a{OrdkaakMapkaMapkaO(log n). Update a value at a specific key with the result of the provided function. When the key is not a member of the map, the original map is returned.
adjust ("new " ++) 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "new a")]
adjust ("new " ++) 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
adjust ("new " ++) 7 empty                         == empty
nadjust adjust :: (a -> a) -> Key -> IntMap a -> IntMap aaaKeyIntMapaIntMapasO(min(n,W)). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned.
adjust ("new " ++) 5 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "new a")]
adjust ("new " ++) 7 (fromList [(5,"a"), (3,"b")]) == fromList [(3, "b"), (5, "a")]
adjust ("new " ++) 7 empty                         == empty
xaddToClockTimeaddToClockTime :: TimeDiff ->  ClockTime ->  ClockTimeTimeDiff ClockTime ClockTimeaddToClockTime d t adds a time difference d and a clock time t to yield a new clock time. The difference d may be either positive or negative. addrSocketTypeaddrSocketType :: AddrInfo ->  SocketTypeAddrInfo SocketType addrProtocol addrProtocol :: AddrInfo -> ProtocolNumberzAddrInfoProtocolNumberaddrInfoFlagImplementedaddrInfoFlagImplemented ::  AddrInfoFlag -> Bool AddrInfoFlagBoolTIndicate whether the given AddrInfoFlag will have any effect on this system.  AddrInfoFlagdata  AddrInfoFlagAFlags that control the querying behaviour of getAddrInfo. AddrInfoAddrInfo :: [AddrInfoFlag] -> Family ->  SocketType -> ProtocolNumber -> SockAddr ->  Maybe String -> AddrInfo[] AddrInfoFlagFamily SocketTypeProtocolNumberSockAddrMaybeStringAddrInfoAddrInfodata AddrInfoG addrFlags addrFlags :: AddrInfo -> [AddrInfoFlag]AddrInfo[] AddrInfoFlag addrFamily addrFamily :: AddrInfo -> Family)AddrInfoFamilyaddressaddress :: Html -> HtmlpHtmlHtml addrCanonName addrCanonName :: AddrInfo ->  Maybe StringAddrInfoMaybeString addrAddress addrAddress :: AddrInfo -> SockAddrjSAddrInfoSockAddr(addForeignPtrFinalizerEnv addForeignPtrFinalizerEnv :: FinalizerEnvPtr env a -> Ptr env ->  ForeignPtr a -> IO ()WFinalizerEnvPtrenvaPtrenv ForeignPtraIO()like addForeignPtrFinalizerEnv but allows the finalizer to be passed an additional environment parameter to be passed to the finalizer. The environment passed to the finalizer is fixed by the second argument to addForeignPtrFinalizerEnv (addForeignPtrFinalizeraddForeignPtrFinalizer :: FinalizerPtr a ->  ForeignPtr a -> IO ()  FinalizerPtra ForeignPtraIO()This function adds a finalizer to the given foreign object. The finalizer will run before all other finalizers for the same object which have already been registered. &addForeignPtrFinalizeraddForeignPtrFinalizer ::  ForeignPtr a -> IO () -> IO ()`8 ForeignPtraIO()IO()This function adds a finalizer to the given ForeignPtr. The finalizer will run after the last reference to the foreign object is dropped, but before all previously registered finalizers for the same object. & addCookie addCookie :: Cookie -> BrowserAction t ()Cookie BrowserActiont()NaddCookie c adds a cookie to the browser state, removing duplicates. & addAuthority addAuthority ::  Authority -> BrowserAction t ()m Authority BrowserActiont()ADDATTRSclass ADDATTRS ao AcyclicSCC AcyclicSCC :: vertex ->  SCC vertex9vertexSCCvertex*A single vertex that is not in any cycle. actionaction :: String -> HtmlAttrStringHtmlAttr Acceptableclass Eq a =>  Acceptable aacceptaccept :: Socket -> IO (Socket, SockAddr)^SocketIO(,)SocketSockAddr Acceptdata Accept a6 AbsoluteSeek AbsoluteSeek :: SeekMode SeekMode3the position of hdl is set to i. abovesaboves :: HTMLTABLE ht => [ht] ->  HtmlTable HTMLTABLEht[]ht HtmlTableaboveabove :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTablet8 HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTableF^>> (^>>) ::  Arrow a => (b -> c) -> a c d -> a b dArrowabcacdabd%Precomposition with a pure function. F^<< (^<<) ::  Arrow a => (c -> d) -> a b c -> a b dArrowacdabcabd>Postcomposition with a pure function (right-to-left variant). i\\ (\\) ::  Ord a => Set a -> Set a -> Set a\OrdaSetaSetaSeta&O(n+m). See difference. l\\ (\\) ::  Ord k => Map k a -> Map k b -> Map k aFOrdkMapkaMapkbMapkaSame as difference. \\ (\\) :: Eq a => [a] -> [a] -> [a]Eqa[]a[]a[]atThe \\ function is list difference ((non-associative). In the result of xs \\ ys, the first occurrence of each element of ys in turn (if any) has been removed from xs. Thus
(xs ++ ys) \\ xs == ys.
It is a special case of deleteFirstsBy, which allows the programmer to supply their own equality test. m\\ (\\) :: IntSet -> IntSet -> IntSetIntSetIntSetIntSet&O(n+m). See difference. n\\ (\\) :: IntMap a -> IntMap b -> IntMap awMIntMapaIntMapbIntMapaSame as difference. F>>^ (>>^) ::  Arrow a => a b c -> (c -> d) -> a b d%Arrowaabccdabd&Postcomposition with a pure function. :>>> (>>>) :: Category cat => cat a b -> cat b c -> cat a cCategorycatcatabcatbccatacLeft-to-right composition F>>> (>>>) :: Category cat => cat a b -> cat b c -> cat a c|CategorycatcatabcatbccatacLeft-to-right composition >>= (>>=) ::  Monad m => m a ->  (a -> m b) -> m ba5Monadmmaambmb>> (>>) ::  Monad m => m a -> m b -> m bMonadmmambmb>=> (>=>) ::  Monad m =>  (a -> m b) ->  (b -> m c) -> a -> m c[Monadmambbmcamc-Left-to-right Kleisli composition of monads. >= (>=) ::  Ord a => a -> a -> Bool+OrdaaaBoolj>< (><) :: Seq a -> Seq a -> Seq aSeqaSeqaSeqa6O(log(min(n1,n2))). Concatenate two sequences. > (>) ::  Ord a => a -> a -> BoolE,OrdaaaBool==> (==>) :: Testable a => Bool -> a -> PropertyTestableaBoolaProperty == (==) :: Eq a => a -> a -> Bool;#EqaaaBool=<< (=<<) ::  Monad m =>  (a -> m b) -> m a -> m bMonadmambmamb?Same as >>=, but with the arguments interchanged. L<|> (<|>) :: Alternative f => f a -> f a -> f am Alternativeffafafaj<| (<|) :: a -> Seq a -> Seq aaSeqaSeqa{O(1). Add an element to the left end of a sequence. Mnemonic: a triangle with the single element at the pointy end. <=< (<=<) ::  Monad m =>  (b -> m c) ->  (a -> m b) -> a -> m c-MonadmbmcambamcWRight-to-left Kleisli composition of monads. '(>=>)', with the arguments flipped <= (<=) ::  Ord a => a -> a -> BoolOrdaaaBoolF<<^ (<<^) ::  Arrow a => a c d -> (b -> c) -> a b dYArrowaacdbcabd=Precomposition with a pure function (right-to-left variant). :<<< (<<<) :: Category cat => cat b c -> cat a b -> cat a cl1CategorycatcatbccatabcatacRight-to-left composition F<<< (<<<) :: Category cat => cat b c -> cat a b -> cat a c/CategorycatcatbccatabcatacRight-to-left composition << (<<) ::  HTML a =>  (Html -> b) -> a -> bHTMLaHtmlbab () :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTable|@ HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTable<-> (<->) :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTable2 HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTableF<+> (<+>) :: ArrowPlus a => a b c -> a b c -> a b c ArrowPlusaabcabcabcL<*> (<*>) :: Applicative f =>  f (a -> b) -> f a -> f bi7 ApplicativeffabfafbL<**> (<**>) :: Applicative f => f a ->  f (a -> b) -> f b Applicativeffafabfb;A variant of <*> with the arguments reversed. L<* (<*) :: Applicative f => f a -> f b -> f a Applicativeffafbfa?Sequence actions, discarding the value of the second argument. L<$> (<$>) ::  Functor f => (a -> b) -> f a -> f bsFunctorfabfafbA synonym for fmap. L<$ (<$) ::  Functor f => a -> f b -> f a6FunctorfafbfaReplace the value. < (<) ::  Ord a => a -> a -> BoolOrdaaaBoolj:> (:>) :: Seq a -> a -> ViewR a& SeqaaViewRaDthe sequence minus the rightmost element, and the rightmost element j:< (:<) :: a -> Seq a -> ViewL aaSeqaViewLa.leftmost element and the rest of the sequence B:+ (:+) :: a -> a ->  Complex aqZaaComplexaKforms a complex number from its real and imaginary rectangular components.  /= (/=) :: Eq a => a -> a -> Bool)EqaaaBool.|. (.|.) ::  Bits a => a -> a -> aBitsaaaa.&. (.&.) ::  Bits a => a -> a -> aBitsaaaaD. (.) :: (b -> c) -> (a -> b) -> a -> cfbcabacFunction composition. :. (.) :: Category cat => cat b c -> cat a b -> cat a c:Categorycatcatbccatabcatac+++ (+++) :: (HTML a, HTML b) => a -> b -> HtmlHTMLaHTMLbabHtmlF+++ (+++) :: ArrowChoice a => a b c -> a b' c' -> a (Either b b') (Either c c')E ArrowChoiceaabcab'c'aEitherbb'Eithercc'++ (++) :: [a] -> [a] -> [a][]a[]a[]aAppend two lists, i.e.,
[x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn]
[x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]
If the first list is not finite, the result is the first list. L*> (*>) :: Applicative f => f a -> f b -> f bm@ Applicativeffafbfb>Sequence actions, discarding the value of the first argument. F*** (***) ::  Arrow a => a b c -> a b' c' -> a (b, b') (c, c')dArrowaabcab'c'a(,)bb'(,)cc'F&&& (&&&) ::  Arrow a => a b c -> a b c' ->  a b (c, c') Arrowaabcabc'ab(,)cc' && (&&) :: Bool -> Bool -> Boolr]BoolBoolBoolBoolean "and" N% (%) :: Integral a => a -> a -> Ratio aIntegralaaaRatioa)Forms the ratio of two integral numbers. D$ ($) :: (a -> b) -> a -> bxababApplication operator. This operator is redundant, since ordinary application (f x) means the same as (f $ x). However, $ has low, right-associative binding precedence, so it sometimes allows parentheses to be omitted; for example:
f $ g $ h x  =  f (g (h x))
It is also useful in higher-order situations, such as map ($ 0) xs, or Data.List.zipWith ($) fs xs. !! (!!) :: [a] -> Int -> a[]aIntaList index (subscript) operator, starting from 0. It is an instance of the more general Data.List.genericIndex, which takes an index of any integral type. ! (!) :: ADDATTRS a => a ->  [HtmlAttr] -> aADDATTRSaa[]HtmlAttral! (!) ::  Ord k => Map k a -> k -> aA ! OrdkMapkakaO(log n). Find the value at a key. Calls error when the element can not be found.
fromList [(5,'a'), (3,'b')] ! 1    Error: element not in the map
fromList [(5,'a'), (3,'b')] ! 5 == 'a'
n! (!) :: IntMap a -> Key -> a h IntMapaKeyaO(min(n,W)). Find the value at a key. Calls error when the element can not be found.
fromList [(5,'a'), (3,'b')] ! 1    Error: element not in the map
fromList [(5,'a'), (3,'b')] ! 5 == 'a'
8|| (||) :: Bool -> Bool -> Bool  BoolBoolBool Boolean "or" 8zipWith3 zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d] Q abcd[]a[]b[]c[]dThe zipWith3 function takes a function which combines three elements, as well as three lists and returns a list of their point-wise combination, analogous to zipWith. 8zipWith zipWith ::  (a -> b -> c) -> [a] -> [b] -> [c]  abc[]a[]b[]czipWith generalises zip by zipping with the function given as the first argument, instead of a tupling function. For example, zipWith (+) is applied to two lists to produce the list of corresponding sums. 8zip3 zip3 :: [a] -> [b] -> [c] ->  [(a, b, c)]V![]a[]b[]c[](,,)abcVzip3 takes three lists and returns a list of triples, analogous to zip. 8zipzip :: [a] -> [b] -> [(a, b)]%[]a[]b[](,)abzip takes two lists and returns a list of corresponding pairs. If one input list is short, excess elements of the longer list are discarded. 8 writeFile writeFile :: FilePath -> String -> IO ():FilePathStringIO()wThe computation writeFile file str function writes the string str, to the file file. 8wordswords :: String -> [String]String[]String[words breaks a string up into a list of words, which were delimited by white space.  withSocketsDo withSocketsDo :: IO a -> IO aIOaIOajOn Windows operating systems, the networking subsystem has to be initialised using withSocketsDo before any networking operations can be used. eg.
main = withSocketsDo $ do {...}
Although this is only strictly necessary on Windows platforms, it is harmless on other platforms, so for portability it is good practice to use it all the time. 8 userError userError :: String -> IOErrorStringIOErrorConstruct an IOError value with a string describing the error. The fail method of the IO instance of the Monad class raises a userError, thus:
instance Monad IO where 
  ...
  fail s = ioError (userError s)
8unzip3unzip3 ::  [(a, b, c)] -> ([a], [b], [c])8[](,,)abc(,,)[]a[]b[]cgThe unzip3 function takes a list of triples and returns three lists, analogous to unzip. 8unzipunzip :: [(a, b)] ->  ([a], [b])[](,)ab(,)[]a[]biunzip transforms a list of pairs into a list of first components and a list of second components. 8unwordsunwords :: [String] -> String[]StringString_unwords is an inverse operation to words. It joins words with separating spaces. 8until until ::  (a -> Bool) -> (a -> a) -> a -> aaBoolaaaa[until p f yields the result of applying f until p holds. 2unsafePerformIOunsafePerformIO :: IO a -> a|IOaaThis is the "back door" into the IO monad, allowing IO computation to be performed at any time. For this to be safe, the IO computation should be free of side effects and independent of its environment. If the I/O computation wrapped in unsafePerformIO performs side effects, then the relative order in which those side effects take place (relative to the main I/O trunk, or other calls to unsafePerformIO) is indeterminate. You have to be careful when writing and compiling modules that use unsafePerformIO:
  • Use {-# NOINLINE foo #-} as a pragma on any function foo that calls unsafePerformIO. If the call is inlined, the I/O may be performed more than once.
  • Use the compiler flag -fno-cse to prevent common sub-expression elimination being performed on the module, which might combine two side effects that were meant to be separate. A good example is using multiple global variables (like test in the example below).
  • Make sure that the either you switch off let-floating, or that the call to unsafePerformIO cannot float outside a lambda. For example, if you say: f x = unsafePerformIO (newIORef []) you may get only one reference cell shared between all calls to f. Better would be f x = unsafePerformIO (newIORef [x]) because now it can't float outside the lambda.
It is less well known that unsafePerformIO is not type safe. For example:
test :: IORef [a]
test = unsafePerformIO $ newIORef []

main = do
        writeIORef test [42]
        bang <- readIORef test
        print (bang :: [Char])
This program will core dump. This problem with polymorphic references is well known in the ML community, and does not arise with normal monadic use of references. There is no easy way to make it impossible once you use unsafePerformIO. Indeed, it is possible to write coerce :: a -> b with the help of unsafePerformIO. So be careful! 8unlinesunlines :: [String] -> String!![]StringStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each.  UnixSocket UnixSocket :: String -> PortID""StringPortID8 undefined undefined :: a ##aA special case of error. It is expected that compilers will recognize this and insert error messages which are more appropriate to the context in which undefined appears. 8uncurryuncurry ::  (a -> b -> c) -> (a, b) -> c?$!$abc(,)abcCuncurry converts a curried function to a function on pairs. 8truncatetruncate :: (RealFrac a, Integral b) => a -> b%$RealFracaIntegralbab8 toRational toRational ::  Real a => a -> Rational{%`%RealaaRational8 toInteger toInteger :: Integral a => a -> Integer%%IntegralaaInteger8toEnumtoEnum ::  Enum a => Int -> aS&=&EnumaInta8tanhtanh :: Floating a => a -> a&&Floatingaaa8tantan :: Floating a => a -> a'&Floatingaaa8 takeWhile takeWhile ::  (a -> Bool) -> [a] -> [a]'s'aBool[]a[]a/takeWhile, applied to a predicate p and a list xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p:
takeWhile (< 3) [1,2,3,4,1,2,3,4] == [1,2]
takeWhile (< 9) [1,2,3] == [1,2,3]
takeWhile (< 0) [1,2,3] == []
8taketake :: Int -> [a] -> [a]*))Int[]a[]atake n, applied to a list xs, returns the prefix of xs of length n, or xs itself if n > length xs:
take 5 "Hello World!" == "Hello"
take 3 [1,2,3,4,5] == [1,2,3]
take 3 [1,2] == [1,2]
take 3 [] == []
take (-1) [1,2] == []
take 0 [1,2] == []
It is an instance of the more general Data.List.genericTake, in which n may be of any integral type. 8tailtail :: [a] -> [a]3++[]a[]aHExtract the elements after the head of a list, which must be non-empty. 8sumsum ::  Num a => [a] -> a++Numa[]aaFThe sum function computes the sum of a finite list of numbers. 8succsucc ::  Enum a => a -> aw,c,Enumaaa8subtractsubtract ::  Num a => a -> a -> a,,Numaaaa'the same as flip (-). Because - is treated specially in the Haskell grammar, (- e) is not a section, but an application of prefix negation. However, (subtract exp) is equivalent to the disallowed section. 8Stringtype String = [Char]H.gA String is a list of characters. String constants in Haskell are values of type String. 8sqrtsqrt :: Floating a => a -> a/.Floatingaaa8splitAtsplitAt :: Int -> [a] ->  ([a], [a])/k/Int[]a(,)[]a[]aqsplitAt n xs returns a tuple where first element is xs prefix of length n 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 (take n xs, drop n xs). splitAt is an instance of the more general Data.List.genericSplitAt, in which n may be of any integral type. 8spanspan ::  (a -> Bool) -> [a] ->  ([a], [a])2c2aBool[]a(,)[]a[]aspan, applied to a predicate p and a list xs, returns a tuple where first element is longest prefix (possibly empty) of xs of elements that satisfy p and second element is the remainder of the list:
span (< 3) [1,2,3,4,1,2,3,4] == ([1,2],[3,4,1,2,3,4])
span (< 9) [1,2,3] == ([1,2,3],[])
span (< 0) [1,2,3] == ([],[1,2,3])
span p xs is equivalent to (takeWhile p xs, dropWhile p xs)  socketPort socketPort :: Socket ->  IO PortID44SocketIOPortID:Returns the PortID associated with a given socket. Socketdata SocketS58sndsnd :: (a, b) -> b55(,)abb(Extract the second component of a pair. 8sinhsinh :: Floating a => a -> a-66Floatingaaa8sinsin :: Floating a => a -> a6t6Floatingaaa8signumsignum ::  Num a => a -> a66Numaaa8 significand significand :: RealFloat a => a -> aX7?7 RealFloataaa8 showString showString :: String -> ShowS77StringShowSjutility function converting a String to a show function that simply prepends the string unchanged. 8 showsPrec showsPrec ::  Show a => Int -> a -> ShowS88ShowaIntaShowS showSigned  showSigned ::  Real a =>  (a -> ShowS) -> Int -> a -> ShowSH99RealaaShowSIntaShowS<Converts a possibly-negative Real value to a string. 8showsshows ::  Show a => a -> ShowS99ShowaaShowS7equivalent to showsPrec with a precedence of 0. 8ShowStype ShowS = String -> Stringa:The shows functions return a function that prepends the output String to an existing String. This allows constant-time concatenation of results using function composition. 8 showParen showParen :: Bool -> ShowS -> ShowS;;BoolShowSShowSxutility function that surrounds the inner show function with parentheses when the Bool parameter is True. showOctshowOct :: Integral a => a -> ShowS<c<IntegralaaShowS<Show non-negative Integral numbers in base 8. 8showListshowList ::  Show a => [a] -> ShowS,==Showa[]aShowS showIntAtBase  showIntAtBase :: Integral a => a ->  (Int -> Char) -> a -> ShowS==IntegralaaIntCharaShowSShows a non-negative Integral number using the base specified by the first argument, and the character representation specified by the second. showIntshowInt :: Integral a => a -> ShowS>>IntegralaaShowS=Show non-negative Integral numbers in base 10. showHexshowHex :: Integral a => a -> ShowS?y?IntegralaaShowS=Show non-negative Integral numbers in base 16.  showGFloat showGFloat :: RealFloat a =>  Maybe Int -> a -> ShowSl@A@ RealFloataMaybeIntaShowSShow a signed RealFloat value using standard decimal notation for arguments whose absolute value lies between 0.1 and 9,999,999, and scientific notation otherwise. In the call showGFloat digs val, if digs is Nothing, the value is shown to full precision; if digs is Just d, then at most d digits after the decimal point are shown.  showFloat showFloat :: RealFloat a => a -> ShowSBkB RealFloataaShowSShow a signed RealFloat value to full precision using standard decimal notation for arguments whose absolute value lies between 0.1 and 9,999,999, and scientific notation otherwise.  showFFloat showFFloat :: RealFloat a =>  Maybe Int -> a -> ShowSCC RealFloataMaybeIntaShowSXShow a signed RealFloat value using standard decimal notation (e.g. 245000, 0.0015). In the call showFFloat digs val, if digs is Nothing, the value is shown to full precision; if digs is Just d, then at most d digits after the decimal point are shown.  showEFloat showEFloat :: RealFloat a =>  Maybe Int -> a -> ShowSEE RealFloataMaybeIntaShowS`Show a signed RealFloat value using scientific (exponential) notation (e.g. 2.45e2, 1.5e-3). In the call showEFloat digs val, if digs is Nothing, the value is shown to full precision; if digs is Just d, then at most d digits after the decimal point are shown. 8showCharshowChar :: Char -> ShowSGGCharShowSkutility function converting a Char to a show function that simply prepends the character unchanged. 8showshow ::  Show a => a -> StringkHRHShowaaString8Showclass Show aH.Conversion of values to readable Strings. Minimal complete definition: showsPrec or show. Derived instances of Show have the following properties, which are compatible with derived instances of Text.Read.Read:
  • The result of show is a syntactically correct Haskell expression containing only constants, given the fixity declarations in force at the point where the type is declared. It contains only the constructor names defined in the data type, parentheses, and spaces. When labelled constructor fields are used, braces, commas, field names, and equal signs are also used.
  • If the constructor is defined to be an infix operator, then showsPrec will produce infix applications of the constructor.
  • the representation will be enclosed in parentheses if the precedence of the top-level constructor in x is less than d (associativity is ignored). Thus, if d is 0 then the result is never surrounded in parentheses; if d is 11 it is always surrounded in parentheses, unless it is an atomic expression.
  • If the constructor is defined using record syntax, then show will produce the record-syntax form, with the fields given in the same order as the original declaration.
For example, given the declarations
infixr 5 :^:
data Tree a =  Leaf a  |  Tree a :^: Tree a
the derived instance of Show is equivalent to
instance (Show a) => Show (Tree a) where

       showsPrec d (Leaf m) = showParen (d > app_prec) $
            showString "Leaf " . showsPrec (app_prec+1) m
         where app_prec = 10

       showsPrec d (u :^: v) = showParen (d > up_prec) $
            showsPrec (up_prec+1) u . 
            showString " :^: "      .
            showsPrec (up_prec+1) v
         where up_prec = 5
Note that right-associativity of :^: is ignored. For example,
  • show (Leaf 1 :^: Leaf 2 :^: Leaf 3) produces the string "Leaf 1 :^: (Leaf 2 :^: Leaf 3)".
ServiceService :: String -> PortID&QQStringPortID8 sequence_ sequence_ ::  Monad m => [m a] -> m ()Q}QMonadm[]mam()QEvaluate each action in the sequence from left to right, and ignore the results. 8sequencesequence ::  Monad m => [m a] -> m [a]uRJRMonadm[]mam[]aREvaluate each action in the sequence from left to right, and collect the results. 8seqseq :: a -> b -> bS SabbThe value of seq a b is bottom if a is bottom, and otherwise equal to b. seq is usually introduced to improve performance by avoiding unneeded laziness. sendTo sendTo :: HostName -> PortID -> String -> IO ()pTITHostNamePortIDStringIO()sClosesClose :: Socket -> IO ()TTSocketIO()Closes a socket 8scanr1scanr1 ::  (a -> a -> a) -> [a] -> [a]YU9Uaaa[]a[]aPscanr1 is a variant of scanr that has no starting value argument. 8scanr scanr ::  (a -> b -> b) -> b -> [a] -> [b]3VVabbb[]a[]buscanr is the right-to-left dual of scanl. Note that
head (scanr f z xs) == foldr f z xs.
8scanl1scanl1 ::  (a -> a -> a) -> [a] -> [a]$WWaaa[]a[]ascanl1 is a variant of scanl that has no starting value argument:
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
8scanl scanl ::  (a -> b -> a) -> a -> [b] -> [a];XXabaa[]b[]ascanl is similar to foldl, but returns a list of successive reduced values from the left:
scanl f z [x1, x2, ...] == [z, z `f` x1, (z `f` x1) `f` x2, ...]
Note that
last (scanl f z xs) == foldl f z xs.
8 scaleFloat scaleFloat :: RealFloat a => Int -> a -> aYY RealFloataIntaa8roundround :: (RealFrac a, Integral b) => a -> b3Z ZRealFracaIntegralbab8RightRight :: b ->  Either a bZyZbEitherab8reversereverse :: [a] -> [a]ZZ[]a[]amreverse xs returns the elements of xs in reverse order. xs must be finite. 8returnreturn ::  Monad m => a -> m a[[Monadmama8 replicate replicate :: Int -> a -> [a]&\\Inta[]areplicate n x is a list of length n with x the value of every element. It is an instance of the more general Data.List.genericReplicate, in which n may be of any integral type. 8repeatrepeat :: a -> [a]R]C]a[]aZrepeat x is an infinite list, with x the value of every element. 8remrem :: Integral a => a -> a -> a^^IntegralaaaarecvFromrecvFrom :: HostName -> PortID ->  IO String^^HostNamePortIDIOString8reciprecip :: Fractional a => a -> a _^ Fractionalaaa8 realToFrac realToFrac :: (Real a, Fractional b) => a -> b_j_Reala Fractionalbab%general coercion to fractional types 8RealFracclass (Real a, Fractional a) => RealFrac a`XExtracting components of fractions. Minimal complete definition: properFraction 8 RealFloatclass (RealFrac a, Floating a) =>  RealFloat a`Efficient, machine-independent access to the components of a floating-point number. Minimal complete definition: all except exponent, significand, scaleFloat and atan2 8Realclass (Num a, Ord a) => Real aa8 readsPrec readsPrec ::  Read a => Int -> ReadS a.bbReadaIntReadSa readSigned readSigned ::  Real a => ReadS a -> ReadS abbRealaReadSaReadSaOReads a signed Real value, given a reader for an unsigned value. 8readsreads ::  Read a => ReadS aXc@cReadaReadSa7equivalent to readsPrec with a precedence of 0. 8ReadStype ReadS a = String -> [(a, String)]c A parser for a type a, represented as a function that takes a String and returns a list of possible parses as (a,String) pairs. Note that this kind of backtracking parser is very inefficient; reading a large structure may be quite slow (cf ReadP). 8 readParen readParen :: Bool -> ReadS a -> ReadS a}e\eBoolReadSaReadSareadParen True p parses what p parses, but surrounded with parentheses. readParen False p parses what p parses, but optionally surrounded with parentheses. readOctreadOct ::  Num a => ReadS affNumaReadSa+Read an unsigned number in octal notation. 8readLnreadLn ::  Read a => IO a3ggReadaIOaFThe readLn function combines getLine and readIO. 8readListreadList ::  Read a =>  ReadS [a]ggReadaReadS[]a8readIOreadIO ::  Read a => String -> IO aOh0hReadaStringIOaThe readIO function is similar to read except that it signals parse failure to the IO monad instead of terminating the program. readInt readInt ::  Num a => a -> (Char -> Bool) ->  (Char -> Int) -> ReadS aigiNumaaCharBoolCharIntReadSaEReads an unsigned Integral value in an arbitrary base. readHexreadHex ::  Num a => ReadS a=j&jNumaReadSa_Read an unsigned number in hexadecimal notation. Both upper or lower case letters are allowed.  readFloat readFloat :: RealFrac a => ReadS akjRealFracaReadSaZReads an unsigned RealFrac value, expressed in decimal scientific notation. 8readFilereadFile :: FilePath ->  IO StringkkFilePathIOStringThe readFile function reads a file and returns the contents of the file as a string. The file is read lazily, on demand, as with getContents. readDecreadDec ::  Num a => ReadS allNumaReadSa-Read an unsigned number in decimal notation. 8readread ::  Read a => String -> aQm8mReadaStringalThe read function reads input from a string, which must be completely consumed by the input process. 8Readclass Read am Parsing of Strings, producing values. Minimal complete definition: readsPrec (or, for GHC only, readPrec) Derived instances of Read make the following assumptions, which derived instances of Text.Show.Show obey:
  • If the constructor is defined to be an infix operator, then the derived Read instance will parse only infix applications of the constructor (not the prefix form).
  • Associativity is not used to reduce the occurrence of parentheses, although precedence may be.
  • If the constructor is defined using record syntax, the derived Read will parse only the record-syntax form, and furthermore, the fields must be given in the same order as the original declaration.
  • The derived Read instance allows arbitrary Haskell whitespace between tokens of the input string. Extra parentheses are also allowed.
For example, given the declarations
infixr 5 :^:
data Tree a =  Leaf a  |  Tree a :^: Tree a
the derived instance of Read in Haskell 98 is equivalent to
instance (Read a) => Read (Tree a) where

        readsPrec d r =  readParen (d > app_prec)
                         (\r -> [(Leaf m,t) |
                                 ("Leaf",s) <- lex r,
                                 (m,t) <- readsPrec (app_prec+1) s]) r

                      ++ readParen (d > up_prec)
                         (\r -> [(u:^:v,w) |
                                 (u,s) <- readsPrec (up_prec+1) r,
                                 (":^:",t) <- lex s,
                                 (v,w) <- readsPrec (up_prec+1) t]) r

          where app_prec = 10
                up_prec = 5
Note that right-associativity of :^: is unused. The derived instance in GHC is equivalent to
instance (Read a) => Read (Tree a) where

        readPrec = parens $ (prec app_prec $ do
                                 Ident "Leaf" <- lexP
                                 m <- step readPrec
                                 return (Leaf m))

                     +++ (prec up_prec $ do
                                 u <- step readPrec
                                 Symbol ":^:" <- lexP
                                 v <- step readPrec
                                 return (u :^: v))

          where app_prec = 10
                up_prec = 5

        readListPrec = readListPrecDefault
8Rationaltype Rational = Ratio IntegerwArbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator. 8quotRemquotRem :: Integral a => a -> a -> (a, a)xxIntegralaaa(,)aa8quotquot :: Integral a => a -> a -> ahyMyIntegralaaaa8putStrLnputStrLn :: String -> IO ()yyStringIO()9The same as putStr, but adds a newline character. 8putStrputStr :: String -> IO ()_zJzStringIO()UWrite a string to the standard output device (same as hPutStr stdout). 8putCharputChar :: Char -> IO (){zCharIO()YWrite a character to the standard output device (same as hPutChar stdout). 8properFractionproperFraction :: (RealFrac a, Integral b) => a -> (b, a) |{RealFracaIntegralba(,)ba8productproduct ::  Num a => [a] -> an|U|Numa[]aaNThe product function computes the product of a finite list of numbers. 8printprint ::  Show a => a -> IO ()"}}ShowaaIO()The print function outputs a value of any printable type to the standard output device. Printable types are those that are instances of class Show; print converts values to strings for output using the show 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]])
8predpred ::  Enum a => a -> a  Enumaaa PortNumberdata  PortNumberX PortNumber PortNumber ::  PortNumber -> PortID PortNumberPortIDPortIDdata PortID8pipi :: Floating a => a?,Floatingaa8 otherwise otherwise :: BoolzBoolotherwise is defined as the value True. It helps to make guards more readable. eg.
f x | x < 0     = ...
    | otherwise = ...
8Ordclass Eq a => Ord aTThe Ord class is used for totally ordered datatypes. Instances of Ord can be derived for any user-defined datatype whose constituent types are in Ord. The declared order of the constructors in the data declaration determines the ordering in derived Ord instances. The Ordering datatype allows a single comparison to determine the precise ordering of two objects. Minimal complete definition: either compare or <=. Using compare can be more efficient for complex types. 8oror :: [Bool] -> Bool[]BoolBoolor returns the disjunction of a Boolean list. For the result to be False, the list must be finite; True, however, results from a True value at a finite index of a finite or infinite list. 8oddodd :: Integral a => a -> Bool܄IntegralaaBool8Numclass (Eq a, Show a) => Num a6\Basic numeric class. Minimal complete definition: all except negate or (-) 8nullnull :: [a] -> Bool҅[]aBoolTest whether a list is empty. 8NothingNothing :: Maybe aI<Maybea8notElemnotElem :: Eq a => a -> [a] -> Bool†Eqaa[]aBool/notElem is the negation of elem. 8notnot :: Bool -> Bool?0BoolBoolBoolean "not" 8negatenegate ::  Num a => a -> aNumaaa8Monadclass Monad mهThe Monad class defines the basic operations over a monad, a concept from a branch of mathematics known as category theory. From the perspective of a Haskell programmer, however, it is best to think of a monad as an abstract datatype of actions. Haskell's do expressions provide a convenient syntax for writing monadic expressions. Minimal complete definition: >>= and return. Instances of Monad should satisfy the following laws:
return a >>= k  ==  k a
m >>= return  ==  m
m >>= (\x -> k x >>= h)  ==  (m >>= k) >>= h
Instances of both Monad and Functor should additionally satisfy the law:
fmap f xs  ==  xs >>= return . f
The instances of Monad for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws. 8modmod :: Integral a => a -> a -> aҋIntegralaaaa8minimumminimum ::  Ord a => [a] -> a7Orda[]aaminimum returns the minimum value from a list, which must be non-empty, finite, and of an ordered type. It is a special case of minimumBy, which allows the programmer to supply their own comparison function. 8minBoundminBound ::  Bounded a => ajXBoundedaa8minmin ::  Ord a => a -> a -> aύOrdaaaa8maybe maybe :: b -> (a -> b) -> Maybe a -> bP3babMaybeab The maybe function takes a default value, a function, and a Maybe value. If the Maybe value is Nothing, the function returns the default value. Otherwise, it applies the function to the value inside the Just and returns the result. 8Maybedata Maybe a-The Maybe type encapsulates an optional value. A value of type Maybe a either contains a value of type a (represented as Just a), or it is empty (represented as Nothing). Using Maybe is a good way to deal with errors or exceptional cases without resorting to drastic measures such as error. The Maybe type is also a monad. It is a simple kind of error monad, where all errors are represented by Nothing. A richer error monad can be built using the Data.Either.Either type. 8maximummaximum ::  Ord a => [a] -> aOrda[]aamaximum returns the maximum value from a list, which must be non-empty, finite, and of an ordered type. It is a special case of maximumBy, which allows the programmer to supply their own comparison function. 8maxBoundmaxBound ::  Bounded a => aP>Boundedaa8maxmax ::  Ord a => a -> a -> aOrdaaaa8mapM_mapM_ ::  Monad m =>  (a -> m b) -> [a] -> m ()FMonadmamb[]am()SmapM_ f is equivalent to sequence_ . map f. 8mapMmapM ::  Monad m =>  (a -> m b) -> [a] -> m [b].Monadmamb[]am[]bQmapM f is equivalent to sequence . map f. 8mapmap :: (a -> b) -> [a] -> [b]Еab[]a[]bmap f xs is the list obtained by applying f to each element of xs, i.e.,
map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn]
map f [x1, x2, ...] == [f x1, f x2, ...]
8lookuplookup :: Eq a => a -> [(a, b)] -> Maybe bQ#Eqaa[](,)abMaybebIlookup key assocs looks up a key in an association list. 8logBaselogBase :: Floating a => a -> a -> aFloatingaaaa8loglog :: Floating a => a -> apXFloatingaaalistenOnlistenOn :: PortID ->  IO Socket٘PortIDIOSocketNCreates the server side socket which has been bound to the specified port. NOTE: To avoid the "Address already in use" problems popped up several times on the GHC-Users mailing list we set the ReuseAddr socket option on the listening socket. If you don't want this behaviour, please use the lower level listen instead. 8lineslines :: String -> [String]pString[]String}lines breaks a string up into a list of strings at newline characters. The resulting strings do not contain newlines.  lexDigits lexDigits ::  ReadS String[IReadSString,Reads a non-empty string of decimal digits. 8lexlex ::  ReadS StringЛReadSStringThe lex function reads a single lexeme from the input, discarding initial white space, and returning the characters that constitute the lexeme. If the input string contains only white space, lex returns a single successful `lexeme' consisting of the empty string. (Thus lex "" = [("","")].) If there is no legal lexeme at the beginning of the input string, lex fails (i.e. returns []). This lexer is not completely faithful to the Haskell lexical syntax in the following respects:
  • Qualified names are not handled properly
  • Octal and hexadecimal numerics are not recognized as a single token
  • Comments are not treated properly
8lengthlength :: [a] -> Intٞ[]aIntlength returns the length of a finite list as an Int. It is an instance of the more general Data.List.genericLength, the result type of which may be any kind of number. 8LeftLeft :: a ->  Either a baEitherab8lcmlcm :: Integral a => a -> a -> ajOIntegralaaaaelcm x y is the smallest positive integer that both x and y divide. 8lastlast :: [a] -> a []aaHExtract the last element of a list, which must be finite and non-empty. 8JustJust :: a -> Maybe aaMaybea8iterateiterate :: (a -> a) -> a -> [a]$ aaa[]aiterate f x returns an infinite list of repeated applications of f to x:
iterate f x == [x, f x, f (f x), ...]
8isNegativeZeroisNegativeZero :: RealFloat a => a -> Bool@$ RealFloataaBool8isNaNisNaN :: RealFloat a => a -> Bool RealFloataaBool8 isInfinite isInfinite :: RealFloat a => a -> Bool  RealFloataaBool8isIEEEisIEEE :: RealFloat a => a -> Boolq RealFloataaBool8isDenormalizedisDenormalized :: RealFloat a => a -> Bool  RealFloataaBool8ioErrorioError :: IOError -> IO aiTIOErrorIOa0Raise an IOError in the IO monad. 8IOErrortype IOError = IOExceptionۥ%The Haskell 98 type for exceptions in the IO monad. Any I/O operation may raise an IOError instead of returning a result. For a more general type of exception, including also those that arise in pure code, see Control.Exception.Exception. In Haskell 98, this is an opaque type. 8IOdata IO a*A value of type IO a is a computation which, when performed, does some I/O before returning a value of type a. There is really only one way to "perform" an I/O action: bind it to Main.main in your program. When your program is run, the I/O will be performed. It isn't possible to perform I/O from an arbitrary function, unless that function is itself in the IO monad and called at some point, directly or indirectly, from Main.main. IO is a monad, so IO actions can be combined using either the do-notation or the >> and >>= operations from the Monad class. 8interactinteract :: (String -> String) -> IO ()2StringStringIO()The interact function takes a function of type String->String as its argument. The entire input from the standard input device is passed to this function as its argument, and the resulting string is output on the standard output device. 8Integralclass (Real a, Enum a) => Integral a}qIntegral numbers, supporting integer division. Minimal complete definition: quotRem and toInteger 8initinit :: [a] -> [a]B-[]a[]a^Return all the elements of a list except the last one. The list must be finite and non-empty. 8idid :: a -> a׬aaIdentity function. HostNametype HostName = String28headhead :: [a] -> a~o[]aa>Extract the first element of a list, which must be non-empty. 8getLinegetLine ::  IO StringIOStringSRead a line from the standard input device (same as hGetLine stdin). 8 getContents getContents ::  IO StringIOStringThe getContents operation returns all user input as a single string, which is read lazily as it is needed (same as hGetContents stdin). 8getChargetChar :: IO CharIOCharXRead a character from the standard input device (same as hGetChar stdin). 8gcdgcd :: Integral a => a -> a -> aX=Integralaaaagcd x y is the greatest (positive) integer that divides both x and y; for example gcd (-3) 6 = 3, gcd (-3) (-6) = 3, gcd 0 4 = 4. gcd 0 0 raises a runtime error. 8Functorclass Functor fCThe Functor class is used for types that can be mapped over. Instances of Functor should satisfy the following laws:
fmap id  ==  id
fmap (f . g)  ==  fmap f . fmap g
The instances of Functor for lists, Data.Maybe.Maybe and System.IO.IO defined in the Prelude satisfy these laws. 8fstfst :: (a, b) -> a@-(,)aba'Extract the first component of a pair. 8 fromRational fromRational :: Fractional a => Rational -> aɳ FractionalaRationalafromRatfromRat :: RealFloat a => Rational -> aaA RealFloataRationalaJConverts a Rational value into any type in class RealFloat. 8 fromIntegral fromIntegral :: (Integral a, Num b) => a -> b/ IntegralaNumbab%general coercion from integral types 8 fromInteger fromInteger ::  Num a => Integer -> aŵNumaIntegera8fromEnumfromEnum ::  Enum a => a -> Int*EnumaaInt8 Fractionalclass  Num a =>  Fractional anFractional numbers, supporting real division. Minimal complete definition: fromRational and (recip or (/)) 8foldr1foldr1 ::  (a -> a -> a) -> [a] -> alRaaa[]aa}foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty lists. 8foldr foldr ::  (a -> b -> b) -> b -> [a] -> bkNabbb[]abfoldr, applied to a binary operator, a starting value (typically the right-identity of the operator), and a list, reduces the list using the binary operator, from right to left:
foldr f z [x1, x2, ..., xn] == x1 `f` (x2 `f` ... (xn `f` z)...)
8foldl1foldl1 ::  (a -> a -> a) -> [a] -> a͹aaa[]aa}foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty lists. 8foldl foldl ::  (a -> b -> a) -> a -> [b] -> aɺabaa[]ba&foldl, applied to a binary operator, a starting value (typically the left-identity of the operator), and a list, reduces the list using the binary operator, from left to right:
foldl f z [x1, x2, ..., xn] == (...((z `f` x1) `f` x2) `f`...) `f` xn
The list must be finite. 8fmapfmap ::  Functor f => (a -> b) -> f a -> f blFunctorfabfafb8floorfloor :: (RealFrac a, Integral b) => a -> bRealFracaIntegralbab floatToDigits floatToDigits :: RealFloat a => Integer -> a ->  ([Int], Int)Ž RealFloataIntegera(,)[]IntIntifloatToDigits takes a base and a non-negative RealFloat number, and returns a list of digits and an exponent. In particular, if x>=0, and
floatToDigits base x = ([d1,d2,...,dn], e)
then
  1. n >= 1
  2. x = 0.d1d2...dn * (base**e)
  3. 0 <= di <= base-1
8 floatRange floatRange :: RealFloat a => a ->  (Int, Int) RealFloataa(,)IntInt8 floatRadix floatRadix :: RealFloat a => a -> Integer/ RealFloataaInteger8Floatingclass Fractional a => Floating avTrigonometric and hyperbolic functions and related functions. Minimal complete definition: pi, exp, log, sin, cos, sinh, cosh, asin, acos, atan, asinh, acosh and atanh 8 floatDigits floatDigits :: RealFloat a => a -> Int RealFloataaInt8flip flip ::  (a -> b -> c) -> b -> a -> cgPabcbac[flip f takes its (first) two arguments in the reverse order of f. 8filterfilter ::  (a -> Bool) -> [a] -> [a]<aBool[]a[]afilter, applied to a predicate and a list, returns the list of those elements that satisfy the predicate; i.e.,
filter p xs = [ x | x <- xs, p x]
8FilePathtype FilePath = String%File and directory names are values of type String, whose precise meaning is operating system dependent. Files can be opened, yielding a handle which can then be used to operate on the contents of that file. 8failfail ::  Monad m => String -> m ahIMonadmStringma8exponentexponent :: RealFloat a => a -> Int RealFloataaInt8expexp :: Floating a => a -> a6Floatingaaa8eveneven :: Integral a => a -> BoolIntegralaaBool8errorerror :: [Char] -> a[]Chara<error stops execution and displays an error message. 8Eqclass Eq aX?The Eq class defines equality (==) and inequality (/=). All the basic datatypes exported by the Prelude are instances of Eq, and Eq may be derived for any datatype whose constituents are also instances of Eq. Minimal complete definition: either == or /=. 8 enumFromTo enumFromTo ::  Enum a => a -> a -> [a]Enumaaa[]a8enumFromThenTo enumFromThenTo ::  Enum a => a -> a -> a -> [a]Enumaaaa[]a8 enumFromThen enumFromThen ::  Enum a => a -> a -> [a]* Enumaaa[]a8enumFromenumFrom ::  Enum a => a -> [a]yEnumaa[]a8Enumclass Enum aClass Enum defines operations on sequentially ordered types. The enumFrom... methods are used in Haskell's translation of arithmetic sequences. Instances of Enum may be derived for any enumeration type (types whose constructors have no fields). The nullary constructors are assumed to be numbered left-to-right by fromEnum from 0 through n-1. See Chapter 10 of the Haskell Report for more details. For any type that is an instance of class Bounded as well as Enum, the following should hold:
enumFrom     x   = enumFromTo     x maxBound
enumFromThen x y = enumFromThenTo x y bound
  where
    bound | fromEnum y >= fromEnum x = maxBound
          | otherwise                = minBound
8 encodeFloat encodeFloat :: RealFloat a => Integer -> Int -> a RealFloataIntegerInta8elemelem :: Eq a => a -> [a] -> BooldEqaa[]aBoolielem is the list membership predicate, usually written in infix form, e.g., x `elem` xs. 8either either :: (a -> c) -> (b -> c) ->  Either a b -> c[acbcEitherabcCase analysis for the Either type. If the value is Left a, apply the first function to a; if it is Right b, apply the second function to b. 8Eitherdata Either a bzThe Either type represents values with two possibilities: a value of type Either a b is either Left a or Right b. The Either type is sometimes used to represent a value which is either correct or an error; by convention, the Left constructor is used to hold an error value and the Right constructor is used to hold a correct value (mnemonic: "right" also means "correct"). 8 dropWhile dropWhile ::  (a -> Bool) -> [a] -> [a]aBool[]a[]adropWhile p xs returns the suffix remaining after takeWhile p xs:
dropWhile (< 3) [1,2,3,4,5,1,2,3] == [3,4,5,1,2,3]
dropWhile (< 9) [1,2,3] == []
dropWhile (< 0) [1,2,3] == [1,2,3]
8dropdrop :: Int -> [a] -> [a]Int[]a[]adrop n xs returns the suffix of xs after the first n elements, or [] if n > length xs:
drop 6 "Hello World!" == "World!"
drop 3 [1,2,3,4,5] == [4,5]
drop 3 [1,2] == []
drop 3 [] == []
drop (-1) [1,2] == [1,2]
drop 0 [1,2] == [1,2]
It is an instance of the more general Data.List.genericDrop, in which n may be of any integral type. 8divModdivMod :: Integral a => a -> a -> (a, a)7Integralaaa(,)aa8divdiv :: Integral a => a -> a -> aIntegralaaaa8 decodeFloat decodeFloat :: RealFloat a => a -> (Integer, Int)6  RealFloataa(,)IntegerInt8cyclecycle :: [a] -> [a]w[]a[]acycle ties a finite list into a circular one, or equivalently, the infinite repetition of the original list. It is the identity on infinite lists. 8curry curry ::  ((a, b) -> c) -> a -> b -> c(,)abcabcCcurry converts an uncurried function to a curried function. 8coshcosh :: Floating a => a -> aK3Floatingaaa8coscos :: Floating a => a -> aFloatingaaa8constconst :: a -> b -> aabaConstant function.  connectTo connectTo :: HostName -> PortID ->  IO HandleyHostNamePortIDIOHandle Calling connectTo creates a client side socket which is connected to the given host and port. The Protocol and socket type is derived from the given port identifier. If a port number is given then the result is always an internet family Stream socket. 8 concatMap concatMap ::  (a -> [b]) -> [a] -> [b](a[]b[]a[]b8Map a function over a list and concatenate the results. 8concatconcat :: [[a]] -> [a][][]a[]aConcatenate a list of lists. 8comparecompare ::  Ord a => a -> a -> OrderingX;OrdaaaOrdering8ceilingceiling :: (RealFrac a, Integral b) => a -> bRealFracaIntegralbab8catchcatch :: IO a -> (IOError -> IO a) -> IO ae<IOaIOErrorIOaIOaThe catch function establishes a handler that receives any IOError raised in the action protected by catch. An IOError is caught by the most recent handler established by catch. These handlers are not selective: all IOErrors are caught. Exception propagation must be explicitly provided in a handler by re-raising any unwanted exceptions. For example, in
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 exception is propagated to the next outer handler. When an exception propagates outside the main program, the Haskell system prints the associated IOError 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. 8breakbreak ::  (a -> Bool) -> [a] ->  ([a], [a])aBool[]a(,)[]a[]abreak, applied to a predicate p and a list xs, returns a tuple where first element is longest prefix (possibly empty) of xs of elements that do not satisfy p and second element is the remainder of the list:
break (> 3) [1,2,3,4,1,2,3,4] == ([1,2,3],[4,1,2,3,4])
break (< 9) [1,2,3] == ([],[1,2,3])
break (> 9) [1,2,3] == ([1,2,3],[])
break p is equivalent to span (not . p). 8Boundedclass Bounded aThe Bounded class is used to name the upper and lower limits of a type. Ord is not a superclass of Bounded since types that are not totally ordered may also have upper and lower bounds. The Bounded class may be derived for any enumeration type; minBound is the first constructor listed in the data declaration and maxBound is the last. Bounded may also be derived for single-constructor datatypes whose constituent types are in Bounded. 8atanhatanh :: Floating a => a -> a'Floatingaaa8atan2atan2 :: RealFloat a => a -> a -> a RealFloataaaa8atanatan :: Floating a => a -> aFloatingaaa8asTypeOfasTypeOf :: a -> a -> aYMaaaasTypeOf is a type-restricted version of const. It is usually used as an infix operator, and its typing forces its first argument (which is usually overloaded) to have the same type as the second. 8asinhasinh :: Floating a => a -> awFloatingaaa8asinasin :: Floating a => a -> aFloatingaaa8 appendFile appendFile :: FilePath -> String -> IO ()sTFilePathStringIO()The computation appendFile file str function appends the string str, to the file file. Note that writeFile and appendFile write a literal string to a file. To write a value of any printable type, as with print, use the show function to convert the value to a string first.
main = appendFile "squares" (show [(x,x*x) | x <- [0,0.1..2]])
8anyany ::  (a -> Bool) -> [a] -> BoolhaBool[]aBoolmApplied to a predicate and a list, any determines if any element of the list satisfies the predicate. 8andand :: [Bool] -> BoolH3[]BoolBooland returns the conjunction of a Boolean list. For the result to be True, the list must be finite; False, however, results from a False value at a finite index of a finite or infinite list. 8allall ::  (a -> Bool) -> [a] -> BoolwaBool[]aBoollApplied to a predicate and a list, all determines if all elements of the list satisfy the predicate. 8acoshacosh :: Floating a => a -> acKFloatingaaa8acosacos :: Floating a => a -> aFloatingaaaacceptaccept :: Socket -> !IO (Handle, HostName, PortNumber)_(SocketIO(,,)HandleHostName PortNumberAccept a connection on a socket created by listenOn. Normal I/O operations (see System.IO) can be used on the Handle returned to communicate with the client. Notice that although you can pass any Socket to Network.accept, only sockets of either AF_UNIX, AF_INET, or AF_INET6 will work (this shouldn't be a problem, though). When using AF_UNIX, HostName will be set to the path of the socket and PortNumber to -1. 8absabs ::  Num a => a -> afSNumaaa8^^ (^^) :: (Fractional a, Integral b) => a -> b -> a FractionalaIntegralbaba$raise a number to an integral power 8^ (^) :: (Num a, Integral b) => a -> b -> a}NumaIntegralbaba0raise a number to a non-negative integral power 8>>= (>>=) ::  Monad m => m a ->  (a -> m b) -> m bb6Monadmmaambmb8>> (>>) ::  Monad m => m a -> m b -> m bMonadmmambmb8>= (>=) ::  Ord a => a -> a -> BoolS:OrdaaaBool8> (>) ::  Ord a => a -> a -> BoolOrdaaaBool8== (==) :: Eq a => a -> a -> Bool-EqaaaBool8=<< (=<<) ::  Monad m =>  (a -> m b) -> m a -> m bMonadmambmamb?Same as >>=, but with the arguments interchanged. 8<= (<=) ::  Ord a => a -> a -> BoolkROrdaaaBool8< (<) ::  Ord a => a -> a -> BoolOrdaaaBool8/= (/=) :: Eq a => a -> a -> BoolE-EqaaaBool8/ (/) :: Fractional a => a -> a -> a Fractionalaaaa8. (.) :: (b -> c) -> (a -> b) -> a -> c6bcabacFunction composition. 8- (-) ::  Num a => a -> a -> aNumaaaa8++ (++) :: [a] -> [a] -> [a]![]a[]a[]aAppend two lists, i.e.,
[x1, ..., xm] ++ [y1, ..., yn] == [x1, ..., xm, y1, ..., yn]
[x1, ..., xm] ++ [y1, ...] == [x1, ..., xm, y1, ...]
If the first list is not finite, the result is the first list. 8+ (+) ::  Num a => a -> a -> a`JNumaaaa8** (**) :: Floating a => a -> a -> aFloatingaaaa8* (*) ::  Num a => a -> a -> a:$Numaaaa8&& (&&) :: Bool -> Bool -> BoolBoolBoolBoolBoolean "and" 8$! ($!) :: (a -> b) -> a -> bababDStrict (call-by-value) application, defined in terms of seq. 8$ ($) :: (a -> b) -> a -> bababApplication operator. This operator is redundant, since ordinary application (f x) means the same as (f $ x). However, $ has low, right-associative binding precedence, so it sometimes allows parentheses to be omitted; for example:
f $ g $ h x  =  f (g (h x))
It is also useful in higher-order situations, such as map ($ 0) xs, or Data.List.zipWith ($) fs xs. 8!! (!!) :: [a] -> Int -> a[]aIntaList index (subscript) operator, starting from 0. It is an instance of the more general Data.List.genericIndex, which takes an index of any integral type. zlibpackage zlibCompression and decompression in the gzip and zlib formats This package provides a pure interface for compressing and decompressing streams of data represented as lazy ByteStrings. It uses the zlib C library so it has high performance. It supports the "zlib", "gzip" and "raw" compression formats. It provides a convenient high level api suitable for most tasks and for the few cases where more control is needed it provides access to the full zlib feature set. Zlibmodule Codec.Compression.ZlibCompression and decompression of data streams in the zlib format. The format is described in detail in RFC #1950: http://www.ietf.org/rfc/rfc1950.txt See also the zlib home page: http://zlib.net/ xhtmlpackage xhtmlAn XHTML combinator library This package provides combinators for producing XHTML 1.0, including the Strict, Transitional and Frameset variants. XHtmlmodule Text.XHtmljAn XHTML combinator library. Based on the original Text.Html library by Andy Gill. See http://www.cse.ogi.edu/~andy/html/intro.htm for an introduction to that library. This module re-exports Text.XHtml.Transitional, which produces XHTML 1.0 Transitional. Use Text.XHtml.Strict if you want XHTML 1.0 Strict, and Text.XHtml.Frameset if you want to produce XHTML 1.0 Frameset. See http://www.w3.org/TR/xhtml1/ for more information about XHTML 1.0. Writermodule Control.Monad.WriterThe MonadWriter class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Wrapmodule Text.Regex.Posix.Wrap WrapPosix.hsc exports a wrapped version of the ffi imports. To increase type safety, the flags are newtype'd. The other important export is a Regex type that is specific to the Posix library backend. The flags are documented in Text.Regex.Posix. The defaultCompOpt is (compExtended .|. compNewline). The Regex, CompOption, and ExecOption types and their RegexOptions instance is declared. The =~ and =~~ convenience functions are defined. The exported symbols are the same whether HAVE_REGEX_H is defined, but when it is not defined then getVersion == Nothing and all other exported values will call error or fail. This module will fail or error only if allocation fails or a nullPtr is passed in. 2009-January : wrapMatchAll and wrapCount now adjust the execution option execNotBOL after the first result to take into account '\n' in the text immediately before the next matches. (version 0.93.3) 2009-January : wrapMatchAll and wrapCount have been changed to return all non-overlapping matches, including empty matches even if they coincide with the end of the previous non-empty match. The change is that the first non-empty match no longer terminates the search. One can filter the results to obtain the old behavior or to obtain the behavior of sed, where sed eliminates the empty matches which coincide with the end of non-empty matches. (version 0.94.0) Wordmodule Data.WordUnsigned integer types. qWindowsmodule System.FilePath.WindowsA library for FilePath manipulations, using Windows style paths on all platforms. Importing System.FilePath is usually better.  WeekDatemodule Data.Time.Calendar.WeekDateISO 8601 Week Date format ^Weakmodule System.Mem.Weak KIn general terms, a weak pointer is a reference to an object that is not followed by the garbage collector - that is, the existence of a weak pointer to an object has no effect on the lifetime of that object. A weak pointer can be de-referenced to find out whether the object it refers to is still alive or not, and if so to return the object itself. Weak pointers are particularly useful for caches and memo tables. To build a memo table, you build a data structure mapping from the function argument (the key) to its result (the value). When you apply the function to a new argument you first check whether the key/value pair is already in the memo table. The key point is that the memo table itself should not keep the key and value alive. So the table should contain a weak pointer to the key, not an ordinary pointer. The pointer to the value must not be weak, because the only reference to the value might indeed be from the memo table. So it looks as if the memo table will keep all its values alive for ever. One way to solve this is to purge the table occasionally, by deleting entries whose keys have died. The weak pointers in this library support another approach, called finalization. When the key referred to by a weak pointer dies, the storage manager arranges to run a programmer-specified finalizer. In the case of memo tables, for example, the finalizer could remove the key/value pair from the memo table. Another difficulty with the memo table is that the value of a key/value pair might itself contain a pointer to the key. So the memo table keeps the value alive, which keeps the key alive, even though there may be no other references to the key so both should die. The weak pointers in this library provide a slight generalisation of the basic weak-pointer idea, in which each weak pointer actually contains both a key and a value. UVersionmodule Data.VersionA general library for representation and manipulation of versions. Versioning schemes are many and varied, so the version representation provided by this library is intended to be a compromise between complete generality, where almost no common functionality could reasonably be provided, and fixing a particular versioning scheme, which would probably be too restrictive. So the approach taken here is to provide a representation which subsumes many of the versioning schemes commonly in use, and we provide implementations of Eq, Ord and conversion to/from String which will be appropriate for some applications, but not all. Utilsmodule Test.QuickCheck.UtilsSBThese are some general purpose utilities for use with QuickCheck. +Utilsmodule Foreign.Marshal.Utils#Utilities for primitive marshaling Utilsmodule Debug.QuickCheck.Utils1BThese are some general purpose utilities for use with QuickCheck. tUtilmodule Trace.Hpc.Util#Minor utilities for the HPC tools. URImodule Network.URI?This module defines functions for handling URIs. It presents substantially the same interface as the older GHC Network.URI module, but is implemented using Parsec rather than a Regex library that is not available with Hugs. The internal representation of URI has been changed so that URI strings are more completely preserved when round-tripping to a URI value and back. In addition, four methods are provided for parsing different kinds of URI string (as noted in RFC3986): parseURI, parseURIReference, parseRelativeReference and parseAbsoluteURI. Further, four methods are provided for classifying different kinds of URI string (as noted in RFC3986): isURI, isURIReference, isRelativeReference and isAbsoluteURI. The long-standing official reference for URI handling was RFC2396 [1], as updated by RFC 2732 [2], but this was replaced by a new specification, RFC3986 [3] in January 2005. This latter specification has been used as the primary reference for constructing the URI parser implemented here, and it is intended that there is a direct relationship between the syntax definition in that document and this parser implementation. RFC 1808 [4] contains a number of test cases for relative URI handling. Dan Connolly's Python module uripath.py [5] also contains useful details and test cases. Some of the code has been copied from the previous GHC implementation, but the parser is replaced with one that performs more complete syntax checking of the URI itself, according to RFC3986 [3]. References
  1. http://www.ietf.org/rfc/rfc2396.txt
  2. http://www.ietf.org/rfc/rfc2732.txt
  3. http://www.ietf.org/rfc/rfc3986.txt
  4. http://www.ietf.org/rfc/rfc1808.txt
  5. http://www.w3.org/2000/10/swap/uripath.py
Unsafemodule System.IO.Unsafeq$"Unsafe" IO operations. dUnsafemodule Data.ByteString.Unsafe$4A module containing unsafe ByteString operations. This exposes the ByteString representation and low level construction functions. Modules which extend the ByteString system will need to use this module while ideally most users will be able to make do with the public interface modules. SUniquemodule Data.Unique.&4An abstract interface to a unique symbol generator. Unboxedmodule Data.Array.Unboxed&Unboxed immutable arrays. 3Typesmodule System.Posix.Types&{POSIX data types: Haskell equivalents of the types defined by the <sys/types.h> C header on a POSIX system. Typesmodule Foreign.C.Types'3Mapping of C types to corresponding Haskell types. Typeablemodule Data.Typeable ( The Typeable class reifies types to some extent by associating type representations to types. These type representations can be compared, and one can in turn define a type-safe cast operation. To this end, an unsafe cast is guarded by a test for type (representation) equivalence. The module Data.Dynamic uses Typeable for an implementation of dynamics. The module Data.Generics uses Typeable and type-safe cast (but not dynamics) to support the "Scrap your boilerplate" style of generic programming.  Twinsmodule Data.Generics.TwinsO*"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides support for multi-parameter traversal, which is also demonstrated with generic operations like equality. TVarmodule Control.Concurrent.STM.TVar~+TVar: Transactional variables  Tuplemodule Data.Tuple+0The tuple data types, and associated functions. kTreemodule Data.Tree,,5Multi-way trees (aka rose trees) and forests.  Treemodule Data.Graph.Inductive.Tree,>Tree-based implementation of Graph and DynGraph R Traversablemodule Data. Traversable-MClass of data structures that can be traversed from left to right, performing an action on each element. See also Note that the functions mapM and sequence generalize Prelude functions of the same names from lists to any Traversable functor. To avoid ambiguity, either import the Prelude hiding these names or qualify uses of these function names with an alias for this module.  Transitionalmodule Text.XHtml. Transitional0!Produces XHTML 1.0 Transitional.  TransClosmodule Data.Graph.Inductive.Query. TransClos1Transmodule Control.Monad.TransW1The MonadTrans class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. VTracemodule Debug.Traced2The trace function. Tokenmodule Text.ParserCombinators.Parsec.Token2Parsec compatibility module Tokenmodule Text.Parsec.Token3sA helper module to parse lexical elements (tokens). See makeTokenParser for a description of how to use it. TMVarmodule Control.Concurrent.STM.TMVar3@TMVar: Transactional MVars, for use in the STM monad (GHC only) uTixmodule Trace.Hpc.TixE4NDatatypes and file-access routines for the tick data file used by HPC. (.tix) TTimeoutmodule System.Timeout4<Attach a timeout event to arbitrary IO computations. timepackage time-5A time library A time library xTimemodule System.Time}5The standard time library from Haskell 98. This library is deprecated, please look at Data.Time in the time package instead. System.Time provides functionality for clock times, including timezone information (i.e, the functionality of "time.h", adapted to the Haskell environment). It follows RFC 1129 in its use of Coordinated Universal Time (UTC). Timemodule Data.Time+7 Threadmodule Data.Graph.Inductive.Internal.Threadw7Threading Combinators.  THmodule Language.Haskell.TH7Textmodule Test.HUnit.Text7 Textmodule Data.Generics.Text28"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides generic operations for text serialisation of terms. Terminalmodule Test.HUnit.Terminal(9 template-haskellpackage template-haskellg9HFacilities for manipulating Haskell source code using Template Haskell. !TCPmodule Network.TCP9Some utility functions for working with the Haskell network package. Mostly for internal use by the Network.HTTP code, but TChanmodule Control.Concurrent.STM.TChan:)TChan: Transactional channels (GHC only) TArraymodule Control.Concurrent.STM.TArray;8TArrays: transactional arrays, for use in the STM monad TAImodule Data.Time.Clock.TAI;VTAI and leap-second tables for converting to UTC: most people won't need this module. Tablemodule Text.XHtml.Table<Table combinators for XHTML.  Syntaxmodule Language.Haskell.TH.Syntaxy<2Abstract syntax definitions for Template Haskell. Syntaxmodule Language.Haskell.Syntax<iA suite of datatypes describing the abstract syntax of Haskell 98 http://www.haskell.org/onlinereport/ plus a few extensions:
  • multi-parameter type classes
  • parameters of type class assertions are unrestricted
This module has been changed so that show is a real show. For GHC, we also derive Typeable and Data for all types. sybpackage sybx>[Scrap Your Boilerplate This package contains the generics system described in the Scrap Your Boilerplate papers (see http://www.cs.vu.nl/boilerplate/). It defines the Data class of types permitting folding and unfolding of constructor applications, instances of this class for primitive types, and a variety of traversals. Stringmodule Text.Regex.Posix.String@This provides String instances for RegexMaker and RegexLike based on Text.Regex.Posix.Wrap, and a (RegexContext Regex String String) instance. To use these instance, you would normally import Text.Regex.Posix. You only need to import this module to use the medium level API of the compile, regexec, and execute functions. All of these report error by returning Left values instead of undefined or error or fail. Stringmodule Text.Parsec.String(BGMake Strings an instance of Stream with Char token type. -Stringmodule Foreign.C.StringBUtilities for primitive marshalling of C strings. The marshalling converts each Haskell character, representing a Unicode code point, to one or more bytes in a manner that, by default, is determined by the current locale. As a consequence, no guarantees can be made about the relative length of a Haskell string and its corresponding C string, and therefore all the marshalling routines include memory allocation. The translation between Unicode and the encoding of the current locale may be lossy.  Stringmodule Data.StringD#Things related to the String type. Strictmodule Text.XHtml.Strict*EProduces XHTML 1.0 Strict. QStrictmodule Data.STRef.Strict~EMMutable references in the (strict) ST monad (re-export of Data.STRef) Strictmodule Control.Monad.Writer.StrictFStrict writer monads. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Strictmodule Control.Monad.State.StrictAGStrict state monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. See below for examples. HStrictmodule Control.Monad.ST.StrictH;The strict ST monad (re-export of Control.Monad.ST) Strictmodule Control.Monad.RWS.StrictHStrict RWS Monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. OSTRefmodule Data.STRefJ-Mutable references in the (strict) ST monad.   StreamSocketmodule Network. StreamSockettJSocket Stream instance. Originally part of Gray's\/Bringert's HTTP module.
  • Changes by Robin Bate Boerop robin@bateboerop.name: - Made dependencies explicit in import statements. - Removed false dependencies in import statements. - Created separate module for instance Stream Socket.
  • Changes by Simon Foster: - Split module up into to sepearate Network.[Stream,TCP,HTTP] modules
"StreamDebuggermodule Network.StreamDebuggerYLImplements debugging of Streams. Originally part of Gray's\/Bringert's HTTP module. Streammodule Network.StreamfMAn library for creating abstract streams. Originally part of Gray's\/Bringert's HTTP module.
  • Changes by Robin Bate Boerop robin@bateboerop.name: - Removed unnecessary import statements. - Moved Debug code to StreamDebugger.hs - Moved Socket-related code to StreamSocket.hs.
  • Changes by Simon Foster: - Split Network.HTTPmodule up into to separate Network.[Stream,TCP,HTTP] modules
#Streammodule Network.HTTP.StreamBOTransmitting HTTP requests and responses holding String in their payload bodies. This is one of the implementation modules for the Network.HTTP interface, representing request and response content as Strings and transmitting them in non-packed form (cf. Network.HTTP.HandleStream and its use of ByteStrings.) over Stream handles. It is mostly here for backwards compatibility, representing how requests and responses were transmitted up until the 4.x releases of the HTTP package. For more detailed information about what the individual exports do, please consult the documentation for Network.HTTP. Notice however that the functions here do not perform any kind of normalization prior to transmission (or receipt); you are responsible for doing any such yourself, or, if you prefer, just switch to using Network.HTTP function instead.  Strategiesmodule Control.Parallel. StrategiesSParallel strategy combinators. See http://www.macs.hw.ac.uk/~dsg/gph/papers/html/Strategies/strategies.html for more information. Original authors: Phil Trinder, Hans-Wolfgang Loidl, Kevin Hammond et al. %Storablemodule Foreign.Storable!TThe module Foreign.Storable provides most elementary support for marshalling and is part of the language-independent portion of the Foreign Function Interface (FFI), and will normally be imported via the Foreign module. Storablemodule Data.Array.StorableHUsA storable array is an IO-mutable array which stores its contents in a contiguous memory block living in the C heap. Elements are stored according to the class Storable. You can obtain the pointer to the array contents to manipulate elements from languages like C. It is similar to Data.Array.IO.IOUArray but slower. Its advantage is that it's compatible with C. stmpackage stmVMSoftware Transactional Memory A modular composable concurrency abstraction. STMmodule Control.Monad.STMcWSoftware Transactional Memory: a modular composable concurrency abstraction. See This module only defines the STM monad; you probably want to import Control.Concurrent.STM (which exports Control.Monad.STM). STMmodule Control.Concurrent.STMYhSoftware Transactional Memory: a modular composable concurrency abstraction. See Statemodule Control.Monad.State<[State monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995.  StablePtrmodule Foreign. StablePtrZ\xThis module is part of the Foreign Function Interface (FFI) and will usually be imported via the module Foreign. ] StableNamemodule System.Mem. StableName]9Stable names are a way of performing fast (O(1)), not-quite-exact comparison between objects. Stable names solve the following problem: suppose you want to build a hash table with Haskell objects as keys, but you want to use pointer equality for comparison; maybe because the keys are large and hashing would be slow, or perhaps because the keys are infinite in size. We can't build a hash table using the address of the object as the key, because objects get moved around by the garbage collector, meaning a re-hash would be necessary after every garbage collection. STmodule Data.Array.ST}_9Mutable boxed and unboxed arrays in the ST monad. GSTmodule Control.Monad.ST_This library provides support for strict state threads, as described in the PLDI '94 paper by John Launchbury and Simon Peyton Jones Lazy Functional State Threads.  SPmodule Data.Graph.Inductive.Query.SP`Socketmodule Network.SocketayThe Network.Socket module is for when you want full control over sockets. Essentially the entire C socket API is exposed through this module; in general the operations follow the behaviour of the C functions of the same name (consult your favourite Unix networking book). A higher level interface to networking operations is provided through the module Network. Showmodule Text.ShowbWConverting values to readable strings: the Show class and associated functions. iSetmodule Data.Set?cAn efficient implementation of sets. Since many function names (but not the type name) clash with Prelude names, this module is usually imported qualified, e.g.
import Data.Set (Set)
import qualified Data.Set as Set
The implementation of Set is based on size balanced binary trees (or trees of bounded balance) as described by:
  • Stephen Adams, "Efficient sets: a balancing act", Journal of Functional Programming 3(4):553-562, October 1993, http://www.swiss.ai.mit.edu/~adams/BB/.
  • J. Nievergelt and E.M. Reingold, "Binary search trees of bounded balance", SIAM journal of computing 2(1), March 1973.
Note that the implementation is left-biased -- the elements of a first argument are always preferred to the second, for example in union or insert. Of course, left-biasing can only be observed when equality is an equivalence relation instead of structural equality. Sequencemodule Text.Regex.Posix.SequenceagThis provides String instances for RegexMaker and RegexLike based on Text.Regex.Posix.Wrap, and a (RegexContext Regex String String) instance. To use these instance, you would normally import Text.Regex.Posix. You only need to import this module to use the medium level API of the compile, regexec, and execute functions. All of these report error by returning Left values instead of undefined or error or fail. jSequencemodule Data.SequencetiGeneral purpose finite sequences. Apart from being finite and having strict operations, sequences also differ from lists in supporting a wider variety of operations efficiently. An amortized running time is given for each operation, with n referring to the length of the sequence and i being the integral index used by some operations. These bounds hold even in a persistent (shared) setting. The implementation uses 2-3 finger trees annotated with sizes, as described in section 4.2 of Note: Many of these operations have the same names as similar operations on lists in the Prelude. The ambiguity may be resolved using either qualification or the hiding clause.  Schemesmodule Data.Generics.Schemes]m"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides frequently used generic traversal schemes. ? SampleVarmodule Control.Concurrent. SampleVarTnSample variables RWSmodule Control.Monad.RWSnDeclaration of the MonadRWS class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995.  RootPathmodule Data.Graph.Inductive.Internal.RootPatho)Inward directed trees as lists of paths.  RegexLikemodule Text.Regex.Base. RegexLike@pClasses and instances for Regex matching. All the classes are declared here, and some common type aliases, and the MatchResult data type. The only instances here are for Extract String and Extract ByteString. There are no data values. The RegexContext instances are in Text.Regex.Base.Context, except for ones which run afoul of a repeated variable (RegexContext regex a a), which are defined in each modules' String and ByteString modules.  regex-posixpackage  regex-posix>rEReplaces/Enhances Text.Regex The posix regex backend for regex-base  regex-compatpackage  regex-compatrVReplaces/Enhances Text.Regex One module layer over regex-posix to replace Text.Regex  regex-basepackage  regex-baseCsQReplaces/Enhances Text.Regex Interface API for regex-posix,pcre,parsec,tdfa,dfa Regexmodule Text.RegexseRegular expression matching. Uses the POSIX regular expression interface in Text.Regex.Posix. wReflectmodule Trace.Hpc.ReflectdtReadPrecmodule Text.ParserCombinators.ReadPrect@This library defines parser combinators for precedence parsing. ReadPmodule Text.ParserCombinators.ReadP0uPThis is a library of parser combinators, originally written by Koen Claessen. It parses all alternatives in parallel, so it never keeps hold of the beginning of the input string, a common source of space leaks with other parsers. The '(+++)' choice combinator is genuinely commutative; it makes no difference which branch is "shorter". Readlinemodule System.Console.Editline.ReadlinevThis module provides a subset of the functions from System.Console.Readline, which is distributed in the readline package. However, because this package links against editline (http://www.thrysoee.dk/editline/) instead of readline, programs using this module are not required to be distributed under the GPL. An example of a typical use of the readline API with history functionality is illustrated in the following read, eval, print loop:
readEvalPrintLoop :: IO ()
readEvalPrintLoop = do
  maybeLine <- readline "% "
  case maybeLine of 
   Nothing     -> return () -- EOF / control-d
   Just "exit" -> return ()
   Just line -> do addHistory line
                   putStrLn $ "The user input: " ++ (show line)
                   readEvalPrintLoop
Readermodule Control.Monad.Readerz
  • Computation type: Computations which read values from a shared environment.
  • Binding strategy: Monad values are functions from the environment to a value. The bound function is applied to the bound value, and both have access to the shared environment.
  • Useful for: Maintaining variable bindings, or other shared environment.
  • Zero and plus: None.
  • Example type: Reader [(String,Value)] a
The Reader monad (also called the Environment monad). Represents a computation, which can read values from a shared environment, pass values from function to function, and execute sub-computations in a modified environment. Using Reader monad for such computations is often clearer and easier than using the Control.Monad.State.State monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. "Readmodule Text.Readb~eConverting strings to values. The Text.Read library is the canonical library to import for Read-class facilities. For GHC only, it offers an extended and much improved Read class, which constitutes a proposed alternative to the Haskell 98 Read. In particular, writing parsers is easier, and the parsers are much more efficient. Rawmodule Codec.Compression.Zlib.RawCompression and decompression of data streams in the raw deflate format. The format is described in detail in RFC #1951: http://www.ietf.org/rfc/rfc1951.txt See also the zlib home page: http://zlib.net/ NRatiomodule Data.Ratio'Standard functions on rational numbers randompackage randomdFrandom number library This package provides a random number library. { Randommodule System.Random߁lThis library deals with the common task of pseudo-random number generation. The library makes it possible to generate repeatable results, by starting with a specified initial random number generator, or to get different results on each run by using the system-initialised generator or by supplying a seed from some other source. The library is split into two layers:
  • A core random number generator provides a supply of bits. The class RandomGen provides a common interface to such generators. The library provides one instance of RandomGen, the abstract data type StdGen. Programmers may, of course, supply their own instances of RandomGen.
  • The class Random provides a way to extract values of a particular type from a random number generator. For example, the Float instance of Random allows one to generate random values of type Float.
This implementation uses the Portable Combined Generator of L'Ecuyer [System.Random#LEcuyer] for 32-bit computers, transliterated by Lennart Augustsson. It has a period of roughly 2.30584e18.  Quotemodule Language.Haskell.TH.Quote QuickCheckmodule Test. QuickCheckƆQuickCheck v.0.2 DRAFT implementation; last update 000104. Koen Claessen, John Hughes. This file represents work in progress, and might change at a later date.  QuickCheckmodule Debug. QuickCheck(implementation moved to Test.QuickCheck  QuickCheckpackage  QuickCheck Automatic testing of Haskell programs A library for testing Haskell programs automatically. The programmer provides a specification of the program, in the form of properties which functions should satisfy, and QuickCheck then tests that the properties hold in a large number of randomly generated cases. Specifications are expressed in Haskell, using combinators defined in the QuickCheck library. QuickCheck provides combinators to define properties, observe the distribution of test data, and define test data generators.  Queuemodule Data.Graph.Inductive.Internal.QueueT Querymodule Data.Graph.Inductive.Query>QSemNmodule Control.Concurrent.QSemNԊMQuantity semaphores in which each thread may wait for an arbitrary "amount". =QSemmodule Control.Concurrent.QSem^Simple quantity semaphores. 'Ptrmodule Foreign.PtrThis module provides typed pointers to foreign data. It is part of the Foreign Function Interface (FFI) and will normally be imported via the Foreign module.  Protocolmodule Network.CGI.Protocol;An implementation of the program side of the CGI protocol. _Printfmodule Text.PrintfA C printf like formatter. Primmodule Text.ParserCombinators.Parsec.Prim^Parsec compatibility module Primmodule Text.Parsec.Prim"The primitive parser combinators. z PrettyPrintmodule Text. PrettyPrintRe-export of Text.PrettyPrint.HughesPJ to provide a default pretty-printing library. Marked experimental at the moment; the default library might change at a later date. prettypackage pretty~Pretty-printing library This package contains John Hughes's pretty-printing library, heavily modified by Simon Peyton Jones. Prettymodule Language.Haskell.PrettyPretty printer for Haskell. 8Preludemodule PreludeThe Prelude: a standard module imported by default into all Haskell modules. For more documentation, see the Haskell 98 Report http://www.haskell.org/onlinereport/.  PprLibmodule Language.Haskell.TH.PprLib Pprmodule Language.Haskell.TH.PprPosixmodule Text.Regex.PosixUKModule that provides the Regex backend that wraps the c posix regex api. This is the backend being used by the regex-compat package to replace Text.Regex The Text.Regex.Posix module provides a backend for regular expressions. If you import this along with other backends, then you should do so with qualified imports, perhaps renamed for convenience. If the =~ and =~~ functions are too high level, you can use the compile, regexec, and execute functions from importing either Text.Regex.Posix.String or Text.Regex.Posix.ByteString. If you want to use a low-level Foreign.C.CString interface to the library, then import Text.Regex.Posix.Wrap and use the wrap* functions. This module is only efficient with Data.ByteString.ByteString only if it is null terminated, i.e. (Bytestring.last bs)==0. Otherwise the library must make a temporary copy of the Data.ByteString.ByteString and append the NUL byte. A String will be converted into a Foreign.C.CString for processing. Doing this repeatedly will be very inefficient. Note that the posix library works with single byte characters, and does not understand Unicode. If you need Unicode support you will have to use a different backend. When offsets are reported for subexpression captures, a subexpression that did not match anything (as opposed to matching an empty string) will have its offset set to the unusedRegOffset value, which is (-1). Benchmarking shows the default regex library on many platforms is very inefficient. You might increase performace by an order of magnitude by obtaining libpcre and regex-pcre or libtre and regex-tre. If you do not need the captured substrings then you can also get great performance from regex-dfa. If you do need the capture substrings then you may be able to use regex-parsec to improve performance. rPosixmodule System.FilePath.PosixܘA library for FilePath manipulations, using Posix style paths on all platforms. Importing System.FilePath is usually better. POSIXmodule Data.Time.Clock.POSIXbPOSIX time, if you need to deal with timestamps and the like. Most people won't need this module. Posmodule Text.ParserCombinators.Parsec.PosDParsec compatibility module Posmodule Text.Parsec.PosTextual source positions. 0Poolmodule Foreign.Marshal.PoolThis module contains support for pooled memory management. Under this scheme, (re-)allocations belong to a given pool, and everything in a pool is deallocated when the pool itself is deallocated. This is useful when Foreign.Marshal.Alloc.alloca with its implicit allocation and deallocation is not flexible enough, but explicit uses of Foreign.Marshal.Alloc.malloc and free are too awkward. Polymodule Test.QuickCheck.PolyThis is an attempt to emulate polymorphic types for the purposes of testing by using abstract monomorphic types. It is likely that future versions of QuickCheck will include some polymorphic emulation testing facility, but this module can be used for now. Polymodule Debug.QuickCheck.PolyPermmodule Text.ParserCombinators.Parsec.Perm4Parsec compatibility module Permmodule Text.Parsec.Perm6This module implements permutation parsers. The algorithm used is fairly complex since we push the type system to its limits :-) The algorithm is described in: Parsing Permutation Phrases, by Arthur Baars, Andres Loh and Doaitse Swierstra. Published as a functional pearl at the Haskell Workshop 2001.  PatriciaTreemodule Data.Graph.Inductive. PatriciaTree OAn efficient implementation of Graph using big-endian patricia tree (i.e. Data.IntMap). This module provides the following specialised functions to gain more performance, using GHC's RULES pragma:  ParseUtilsmodule Language.Haskell. ParseUtils"Utilities for the Haskell parser. Parsermodule Language.Haskell.ParserHaskell parser.  ParseMonadmodule Language.Haskell. ParseMonadY)Monads for the Haskell parser and lexer. parsecpackage parsecjMonadic parser combinators Parsec is designed from scratch as an industrial-strength parser library. It is simple, safe, well documented (on the package homepage), has extensive libraries and good error messages, and is also fast. It is defined as a monad transformer that can be stacked on arbitrary monads, and it is also parametric in the input stream type. Parsecmodule Text.ParserCombinators.Parsec\Parsec compatibility module Parsecmodule Text.Parsecparallelpackage parallelڤXparallel programming library This package provides a library for parallel programming. Parallelmodule Control.ParallellParallel Constructs  OrdinalDatemodule Data.Time.Calendar. OrdinalDate˥ISO 8601 Ordinal Date format Ordmodule Data.Ord Orderings 7 OldExceptionmodule Control. OldExceptiona~This module provides support for raising and catching both built-in and user-defined exceptions. In addition to exceptions thrown by IO operations, exceptions may be thrown by pure code (imprecise exceptions) or by external events (asynchronous exceptions), but may only be caught in the IO monad. For more details, see:
  • A semantics for imprecise exceptions, by Simon Peyton Jones, Alastair Reid, Tony Hoare, Simon Marlow, Fergus Henderson, in PLDI'99.
  • Asynchronous exceptions in Haskell, by Simon Marlow, Simon Peyton Jones, Andy Moran and John Reppy, in PLDI'01.
old-timepackage old-timemTime library This package provides the old time library. For new code, the new time library is recommended. Numericmodule Numeric^Odds and ends, mostly functions for reading and showing RealFloat-like kind of values.  NodeMapmodule Data.Graph.Inductive.NodeMapNlUtility methods to automatically generate and keep track of a mapping between node labels and Nodes. networkpackage network=Networking-related facilities Networking-related facilities Networkmodule NetworkTThe Network interface is a "higher-level" interface to networking facilities, and it is recommended unless you need the lower-level interface in Network.Socket. ;MVarmodule Control.Concurrent.MVar@Synchronising variables mtlpackage mtl}Monad transformer library A monad transformer library, inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, by Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html), Advanced School of Functional Programming, 1995.  MSTmodule Data.Graph.Inductive.Query.MST֭!Minimum-Spanning-Tree Algorithms  MonthDaymodule Data.Time.Calendar.MonthDay<KMonoidmodule Data.MonoidoThe Monoid class with various general-purpose instances. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://citeseer.ist.psu.edu/jones95functional.html) Advanced School of Functional Programming, 1995.  Monadmodule Network.CGI.MonadInternal stuff that most people shouldn't have to use. This module mostly deals with the internals of the CGIT monad transformer.  Monadmodule Data.Graph.Inductive.Query.MonadMonadic Graph Algorithms  Monadmodule Data.Graph.Inductive.MonadݰMonadic Graphs Monadmodule Control.Monad fThe Functor, Monad and MonadPlus classes, with some useful operations on monads. vMixmodule Trace.Hpc.MixRDatatypes and file-access routines for the per-module (.mix) indexes used by Hpc. \Memmodule System.Mem9Memory-related system things. Maybemodule Data.Maybe+The Maybe type, and associated operations.  MaxFlow2module Data.Graph.Inductive.Query.MaxFlow2Alternative Maximum Flow  MaxFlowmodule Data.Graph.Inductive.Query.MaxFlowdMaximum Flow algorithm We are given a flow network G=(V,E) with source s and sink t where each edge (u,v) in E has a nonnegative capacity c(u,v)>=0, and we wish to find a flow of maximum value from s to t. A flow in G=(V,E) is a real-valued function f:VxV->R that satisfies:
For all u,v in V, f(u,v)<=c(u,v)
For all u,v in V, f(u,v)=-f(v,u)
For all u in V-{s,t}, Sum{f(u,v):v in V } = 0
The value of a flow f is defined as |f|=Sum {f(s,v)|v in V}, i.e., the total net flow out of the source. In this module we implement the Edmonds-Karp algorithm, which is the Ford-Fulkerson method but using the shortest path from s to t as the augmenting path along which the flow is incremented. 1Marshalmodule Foreign.MarshalaMarshalling support MArraymodule Data.Array.MArrayAn overloaded interface to mutable arrays. For array types which can be used with this interface, see Data.Array.IO, Data.Array.ST, and Data.Array.Storable. lMapmodule Data.MapAn efficient implementation of maps from keys to values (dictionaries). Since many function names (but not the type name) clash with Prelude names, this module is usually imported qualified, e.g.
import Data.Map (Map)
import qualified Data.Map as Map
The implementation of Map is based on size balanced binary trees (or trees of bounded balance) as described by:
  • Stephen Adams, "Efficient sets: a balancing act", Journal of Functional Programming 3(4):553-562, October 1993, http://www.swiss.ai.mit.edu/~adams/BB/.
  • J. Nievergelt and E.M. Reingold, "Binary search trees of bounded balance", SIAM journal of computing 2(1), March 1973.
Note that the implementation is left-biased -- the elements of a first argument are always preferred to the second, for example in union or insert. Operation comments contain the operation time complexity in the Big-O notation http://en.wikipedia.org/wiki/Big_O_notation.  LocalTimemodule Data.Time. LocalTimeۻListmodule Data.List Operations on lists. Listmodule Control.Monad.ListWThe List monad.  Libmodule Language.Haskell.TH.LibLexermodule Language.Haskell.LexerLexer for Haskell. Lexmodule Text.Read.Lex%.The cut-down Haskell lexer, used by Text.Read Lazymodule Text.Regex.Posix.ByteString.LazyThis provides ByteString.Lazy instances for RegexMaker and RegexLike based on Text.Regex.Posix.Wrap, and a (RegexContext Regex ByteString ByteString) instance. To use these instance, you would normally import Text.Regex.Posix. You only need to import this module to use the medium level API of the compile, regexec, and execute functions. All of these report error by returning Left values instead of undefined or error or fail. A Lazy ByteString with more than one chunk cannot be be passed to the library efficiently (as a pointer). It will have to converted via a full copy to a temporary normal bytestring (with a null byte appended if necessary). Lazymodule Text.Parsec.ByteString.LazyvPMake lazy ByteStrings an instance of Stream with Char token type. PLazymodule Data.STRef.Lazy)Mutable references in the lazy ST monad. gLazymodule Data.ByteString.Lazy^A time and space-efficient implementation of lazy byte vectors using lists of packed Word8 arrays, suitable for high performance use, both in terms of large data quantities, or high speed requirements. Byte vectors are encoded as lazy lists of strict Word8 arrays of bytes. They provide a means to manipulate large byte vectors without requiring the entire vector be resident in memory. Some operations, such as concat, append, reverse and cons, have better complexity than their Data.ByteString equivalents, due to optimisations resulting from the list spine structure. And for other operations lazy ByteStrings are usually within a few percent of strict ones, but with better heap usage. For data larger than the available memory, or if you have tight memory constraints, this module will be the only option. The default chunk size is 64k, which should be good in most circumstances. For people with large L2 caches, you may want to increase this to fit your cache. This module is intended to be imported qualified, to avoid name clashes with Prelude functions. eg.
import qualified Data.ByteString.Lazy as B
Original GHC implementation by Bryan O'Sullivan. Rewritten to use Data.Array.Unboxed.UArray by Simon Marlow. Rewritten to support slices and use Foreign.ForeignPtr.ForeignPtr by David Roundy. Polished and extended by Don Stewart. Lazy variant by Duncan Coutts and Don Stewart. Lazymodule Control.Monad.Writer.Lazy?Lazy writer monads. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Lazymodule Control.Monad.State.LazylLazy state monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. See below for examples. ILazymodule Control.Monad.ST.LazyThis module presents an identical interface to Control.Monad.ST, except that the monad delays evaluation of state operations until a value depending on them is required. Lazymodule Control.Monad.RWS.LazyLazy RWS monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Languagemodule Text.ParserCombinators.Parsec.LanguageParsec compatibility module Languagemodule Text.Parsec.LanguageA helper module that defines some language definitions that can be used to instantiate a token parser (see Text.Parsec.Token). Langmodule Test.HUnit.Lang Julianmodule Data.Time.Calendar.JulianJIxmodule Data.Ix:The Ix class is used to map a contiguous subrange of values in type onto integers. It is used primarily for array indexing (see the array package). #IORefmodule Data.IORef$Mutable references in the IO monad.  IOArraymodule Data.Graph.Inductive.Monad.IOArrayuStatic IOArray-based Graphs 6IOmodule System.IOThe standard IO library. IOmodule Data.Array.IO2Mutable boxed and unboxed arrays in the IO monad. mIntSetmodule Data.IntSetmAn efficient implementation of integer sets. Since many function names (but not the type name) clash with Prelude names, this module is usually imported qualified, e.g.
import Data.IntSet (IntSet)
import qualified Data.IntSet as IntSet
The implementation is based on big-endian patricia trees. This data structure performs especially well on binary operations like union and intersection. However, my benchmarks show that it is also (much) faster on insertions and deletions when compared to a generic size-balanced set implementation (see Data.Set).
  • Chris Okasaki and Andy Gill, "Fast Mergeable Integer Maps", Workshop on ML, September 1998, pages 77-86, http://citeseer.ist.psu.edu/okasaki98fast.html
  • D.R. Morrison, "/PATRICIA -- Practical Algorithm To Retrieve Information Coded In Alphanumeric/", Journal of the ACM, 15(4), October 1968, pages 514-534.
Many operations have a worst-case complexity of O(min(n,W)). This means that the operation can become linear in the number of elements with a maximum of W -- the number of bits in an Int (32 or 64). nIntMapmodule Data.IntMap>5An efficient implementation of maps from integer keys to values. Since many function names (but not the type name) clash with Prelude names, this module is usually imported qualified, e.g.
import Data.IntMap (IntMap)
import qualified Data.IntMap as IntMap
The implementation is based on big-endian patricia trees. This data structure performs especially well on binary operations like union and intersection. However, my benchmarks show that it is also (much) faster on insertions and deletions when compared to a generic size-balanced map implementation (see Data.Map).
  • Chris Okasaki and Andy Gill, "Fast Mergeable Integer Maps", Workshop on ML, September 1998, pages 77-86, http://citeseer.ist.psu.edu/okasaki98fast.html
  • D.R. Morrison, "/PATRICIA -- Practical Algorithm To Retrieve Information Coded In Alphanumeric/", Journal of the ACM, 15(4), October 1968, pages 514-534.
Operation comments contain the operation time complexity in the Big-O notation http://en.wikipedia.org/wiki/Big_O_notation. Many operations have a worst-case complexity of O(min(n,W)). This means that the operation can become linear in the number of elements with a maximum of W -- the number of bits in an Int (32 or 64).  Internalsmodule Data.Array.IO. Internals2Mutable boxed and unboxed arrays in the IO monad. Internalmodule Network.Socket.Internal(A module containing semi-public Network.Socket internals. Modules which extend the Network.Socket module will need to use this module while ideally most users will be able to make do with the public interface. cInternalmodule Data.ByteString.Lazy.InternalA8A module containing semi-public ByteString internals. This exposes the ByteString representation and low level construction functions. Modules which extend the ByteString system will need to use this module while ideally most users will be able to make do with the public interface modules. bInternalmodule Data.ByteString.Internal8A module containing semi-public ByteString internals. This exposes the ByteString representation and low level construction functions. Modules which extend the ByteString system will need to use this module while ideally most users will be able to make do with the public interface modules. Internalmodule Codec.Compression.Zlib.Internal<8Pure stream based interface to lower level zlib wrapper Intmodule Data.IntSigned integer types | Instancesmodule Data.Generics. Instances%"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module contains thirteen Data instances which are considered dubious (either because the types are abstract or just not meant to be traversed). Instances in this module might change or disappear in future releases of this package. For more information, please visit the new SYB wiki: http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB. (This module does not export anything. It really just defines instances.) A Instancesmodule Control.Monad. Instances_Functor and Monad instances for (->) r and Functor instances for (,) a and Either a. [Infomodule System.Info[Information about the characteristics of the host system lucky enough to run your program.  Inductivemodule Data.Graph. Inductive Indepmodule Data.Graph.Inductive.Query.IndepMaximum Independent Node Sets Implmodule Text.Regex.Base.ImplX%Helper functions for defining certain instances of RegexContext. These help when defining instances of RegexContext with repeated types:
instance (RegexLike regex source) => RegexContext regex source source where
runs into overlapping restrictions. To avoid this I have each backend define, for its own Regex type:
instance RegexContext Regex String String where
  match = polymatch
  matchM = polymatchM
instance RegexContext Regex ByteString ByteString where
  match = polymatch
  matchM = polymatchM
Identitymodule Control.Monad.Identity
  • Computation type: Simple function application.
  • Binding strategy: The bound function is applied to the input value. Identity x >>= f == Identity (f x)
  • Useful for: Monads can be derived from monad transformers applied to the Identity monad.
  • Zero and plus: None.
  • Example type: Identity a
The Identity monad is a monad that does not embody any computational strategy. It simply applies the bound function to its input without any modification. Computationally, there is no reason to use the Identity monad instead of the much simpler act of simply applying functions to their arguments. The purpose of the Identity monad is its fundamental role in the theory of monad transformers. Any monad transformer applied to the Identity monad yields a non-transformer version of that monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. IArraymodule Data.Array.IArrayyImmutable arrays, with an overloaded interface. For array types which can be used with this interface, see the Array type exported by this module, and the Data.Array.Unboxed and Data.Array.Diff modules. HUnitmodule Test.HUnitHUnitpackage HUnitA unit testing framework for Haskell HUnit is a unit testing framework for Haskell, inspired by the JUnit tool for Java, see: http://www.junit.org. yHughesPJmodule Text.PrettyPrint.HughesPJ5John Hughes's and Simon Peyton Jones's Pretty Printer Combinators Based on The Design of a Pretty-printing Library in Advanced Functional Programming, Johan Jeuring and Erik Meijer (eds), LNCS 925 http://www.cs.chalmers.se/~rjmh/Papers/pretty.ps Heavily modified by Simon Peyton Jones, Dec 96 %HTTPmodule Network.HTTPThe Network.HTTP module provides a simple interface for sending and receiving content over HTTP in Haskell. Here's how to fetch a document from a URL and return it as a String:
simpleHTTP (getRequest "http://www.haskell.org/") >>= fmap (take 100) . getResponseBody
    -- fetch document and return it (as a 'String'.)
Other functions let you control the submission and transfer of HTTP Requests and Responses more carefully, letting you integrate the use of Network.HTTP functionality into your application. The module also exports the main types of the package, Request and Response, along with Header and functions for working with these. The actual functionality is implemented by modules in the Network.HTTP.* namespace, letting you either use the default implementation here by importing Network.HTTP or, for more specific uses, selectively import the modules in Network.HTTP.*. To wit, more than one kind of representation of the bulk data that flows across a HTTP connection is supported. (see Network.HTTP.HandleStream.) NOTE: The Request send actions will normalize the Request prior to transmission. Normalization such as having the request path be in the expected form and, possibly, introduce a default Host: header if one isn't already present. If you do not want the requests tampered with, but sent as-is, please import and use the the Network.HTTP.HandleStream or Network.HTTP.Stream modules instead. They export the same functions, but leaves construction and any normalization of Requests to the user. HTTPpackage HTTPA library for client-side HTTP A package for sending and receiving HTTP requests and responses, all implemented in Haskell (assuming you've already got a network stack to spare, via the network package!) The representation of content of in requests and responses is user-controllable, letting you pick a representation that fits your code better (e.g., use ByteStrings rather than the default Haskell Strings.) Example uses:
do
  rsp <- Network.HTTP.simpleHTTP (getRequest "http://www.haskell.org/")
          -- fetch document and return it (as a 'String'.)
  fmap (take 100) (getResponseBody rsp)

do
  rsp <- Network.Browser.browse $ do
           setAllowRedirects True -- handle HTTP redirects
           request $ getRequest "http://google.com/"
  fmap (take 100) (getResponseBody rsp)
Git repository available at git://code.galois.com/HTTPbis.git htmlpackage htmlWeHTML combinator library This package contains a combinator library for constructing HTML documents. Htmlmodule Text.HtmlAn Html combinator library hpcpackage hpc+ECode Coverage Library for Haskell Code Coverage Library for Haskell  Heapmodule Data.Graph.Inductive.Internal.Heap*Pairing heap implementation of dictionary Headersmodule Network.HTTP.HeadersgThis module provides the data types for representing HTTP headers, and operations for looking up header values and working with sequences of header values in Requests and Responses. To avoid having to provide separate set of operations for doing so, we introduce a type class HasHeaders to facilitate writing such processing using overloading instead.  haskell-srcpackage  haskell-srcManipulating Haskell source code Facilities for manipulating Haskell source code: an abstract syntax, lexer, parser and pretty-printer.  HashTablemodule Data. HashTable}An implementation of extensible hash tables, as described in Per-Ake Larson, Dynamic Hash Tables, CACM 31(4), April 1988, pp. 446--457. The implementation is also derived from the one in GHC's runtime system (ghc/rts/Hash.{c,h}). $ HandleStreammodule Network.HTTP. HandleStreamA HandleStream-based version of Network.HTTP interface. For more detailed information about what the individual exports do, please consult the documentation for Network.HTTP. Notice however that the functions here do not perform any kind of normalization prior to transmission (or receipt); you are responsible for doing any such yourself, or, if you prefer, just switch to using Network.HTTP function instead. GZipmodule Codec.Compression.GZipCompression and decompression of data streams in the gzip format. The format is described in detail in RFC #1952: http://www.ietf.org/rfc/rfc1952.txt See also the zlib home page: http://zlib.net/  GVDmodule Data.Graph.Inductive.Query.GVD Graph Voronoi Diagram  Graphvizmodule Data.Graph.Inductive.Graphviz) Simple graphviz output.  Graphmodule Data.Graph.Inductive.Graph $Static and Dynamic Inductive Graphs oGraphmodule Data.Graph A version of the graph algorithms described in: Lazy Depth-First Search and Linear Graph Algorithms in Haskell, by David King and John Launchbury. WGetOptmodule System.Console.GetOpt This library provides facilities for parsing the command-line options in a standalone program. It is essentially a Haskell port of the GNU getopt library.  Genericsmodule Data.Generics j"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. To scrap your boilerplate it is sufficient to import the present module, which simply re-exports all themes of the Data.Generics library. For more information, please visit the new SYB wiki: http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB. aFusionmodule Data.ByteString.Fusion2 Stream fusion for ByteStrings. See the paper Stream Fusion: From Lists to Streams to Nothing at All, Coutts, Leshchinskiy and Stewart, 2007. ` Functionsmodule Text.Show. Functions Optional instance of Text.Show.Show for functions:
instance Show (a -> b) where
	showsPrec _ _ = showString \"\<function\>\"
DFunctionmodule Data.Function 9Simple combinators working solely on and with functions. Framesetmodule Text.XHtml.FramesetF Produces XHTML 1.0 Frameset. Formatmodule Data.Time.Format ( ForeignPtrmodule Foreign. ForeignPtr The ForeignPtr type and operations. This module is part of the Foreign Function Interface (FFI) and will usually be imported via the Foreign module. 2Foreignmodule Foreign fA collection of data types, classes, and functions for interfacing with another programming language. MFoldablemodule Data.FoldableI oClass of data structures that can be folded to a summary value. Many of these functions generalize Prelude, Control.Monad and Data.List functions of the same names from lists to any Foldable functor. To avoid ambiguity, either import those modules hiding these names or qualify uses of these function names with an alias for this module. CFixedmodule Data.Fixed This module defines a "Fixed" type for fixed-precision arithmetic. The parameter to Fixed is any type that's an instance of HasResolution. HasResolution has a single method that gives the resolution of the Fixed type. Parameter types E6 and E12 (for 10^6 and 10^12) are defined, as well as type synonyms for Fixed E6 and Fixed E12. This module also contains generalisations of div, mod, and divmod to work with any Real instance. EFixmodule Control.Monad.Fix Monadic fixpoints. For a detailed discussion, see Levent Erkok's thesis, Value Recursion in Monadic Computations, Oregon Graduate Institute, 2002.  FiniteMapmodule Data.Graph.Inductive.Internal. FiniteMap fSimple Finite Maps. This implementation provides several useful methods that Data.FiniteMap does not. filepathpackage filepathP {Library for manipulating FilePath's in a cross platform way. Library for manipulating FilePath's in a cross platform way. sFilePathmodule System.FilePath A library for FilePath manipulations, using Posix or Windows filepaths depending on the platform. Both System.FilePath.Posix and System.FilePath.Windows provide the same interface. See either for examples and a list of the available functions. fglpackage fgl3 QMartin Erwig's Functional Graph Library Martin Erwig's Functional Graph Library Exprmodule Text.ParserCombinators.Parsec.Expr Parsec compatibility module Exprmodule Text.Parsec.Expr hA helper module to parse "expressions". Builds a parser given a table of operators and associativities. ZExitmodule System.Exit Exiting the program. 5 Exceptionmodule Control. Exception ~This module provides support for raising and catching both built-in and user-defined exceptions. In addition to exceptions thrown by IO operations, exceptions may be thrown by pure code (imprecise exceptions) or by external events (asynchronous exceptions), but may only be caught in the IO monad. For more details, see:
  • A semantics for imprecise exceptions, by Simon Peyton Jones, Alastair Reid, Tony Hoare, Simon Marlow, Fergus Henderson, in PLDI'99.
  • Asynchronous exceptions in Haskell, by Simon Marlow, Simon Peyton Jones, Andy Moran and John Reppy, in PLDI'01.
 Examplemodule Data.Graph.Inductive.Example Example Graphs Errormodule Text.ParserCombinators.Parsec.Error$ Parsec compatibility module Errormodule Text.Parsec.Errorx Parse errors !Errormodule System.IO.Error Standard IO Errors. *Errormodule Foreign.Marshal.Error  yRoutines for testing return values and raising a userError exception in case of values indicating an error state. .Errormodule Foreign.C.Error CC-specific Marshalling support: Handling of C "errno" error codes. Errormodule Control.Monad.Error7 
  • Computation type: Computations which may fail or throw exceptions.
  • Binding strategy: Failure records information about the cause/location of the failure. Failure values bypass the bound function, other values are used as inputs to the bound function.
  • Useful for: Building computations from sequences of functions that may fail or using exception handling to structure error handling.
  • Zero and plus: Zero is represented by an empty error and the plus operation executes its second argument if the first fails.
  • Example type: Data.Either String a
The Error monad (also called the Exception monad).  Eqmodule Data.Eq Equality Y Environmentmodule System. Environmentb 8Miscellaneous information about the system environment.  Eithermodule Data.Either ,The Either type, and associated operations. editlinepackage editline( nBindings to the editline library (libedit). This package contains bindings to the BSD editline library (http://www.thrysoee.dk/editline/). It provides a basic interface to the editline API for reading lines of input from the user. Additionally, a readline compatibility module is included which provides a subset of the functions from the readline package. Editlinemodule System.Console.Editline A Haskell binding to the editline library. For more information about that library, see http://www.thrysoee.dk/editline/. The following example illustrates using this library to write a loop that will process input until it reaches EOF or a Ctrl-D is typed.
editlineLoop :: IO ()
 editlineLoop = do
    prog <- System.Environment.getProgName
    el <- elInit prog
    setPrompt el (return "input: ")
    setEditor el Vi
    let loop = do
         maybeLine <- elGets el
         case maybeLine of
             Nothing -> return () -- ctrl-D
             Just line -> do
                 let line' = init line -- remove trailing '\n'
                 putStrLn $ "User input: " ++ show line'
                 loop
    loop
 Eastermodule Data.Time.Calendar.Easter $Dynamicmodule Data.DynamicC The Dynamic interface provides basic support for dynamic types. Operations for injecting values of arbitrary type into a dynamically typed value, Dynamic, are provided, together with operations for converting dynamic values into a concrete (monomorphic) type.  Dominatorsmodule Data.Graph.Inductive.Query. Dominators!  directorypackage  directory! Zlibrary for directory handling This package provides a library for handling directories. p Directorymodule System. Directory_" 8System-independent interface to directory manipulation. Diffmodule Data.Array.Diff" -Functional arrays with constant-time update.  DFSmodule Data.Graph.Inductive.Query.DFS<# Depth-First Search Debugmodule Text.XHtml.Debug# EThis module contains functions for displaying HTML as a pretty tree. 9Datamodule Data.Data# h"Scrap your boilerplate" --- Generic programming in Haskell. See http://www.cs.vu.nl/boilerplate/. This module provides the Data class with its primitives for generic programming, along with instances for many datatypes. It corresponds to a merge between the previous Data.Generics.Basics and almost all of Data.Generics.Instances. The instances that are not present in this module were moved to the Data.Generics.Instances module in the syb package. For more information, please visit the new SYB wiki: http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB. XCPUTimemodule System.CPUTime& The standard CPUTime library.  Cookiemodule Network.CGI.Cookie& TODO Contextmodule Text.Regex.Base.Context' This is a module of instances of RegexContext (defined in Text.Regex.Base.RegexLike). Nothing else is exported. This is usually imported via the Text.Regex.Base convenience package which itself is re-exported from newer Text.Regex.XXX modules provided by the different regex-xxx backends. These instances work for all the supported types and backends interchangably. These instances provide the different results that can be gotten from a match or matchM operation (often via the =~ and =~~ operators with combine makeRegex with match and matchM respectively). This module name is Context because they operators are context dependent: use them in a context that expects an Int and you get a count of matches, use them in a Bool context and get True if there is a match, etc. RegexContext a b c takes a regular expression suppied in a type a generated by RegexMaker and a target text supplied in type b to a result type c using the match class function. The matchM class function works like match unless there is no match found, in which case it calls fail in the (arbitrary) monad context. There are a few type synonyms from RegexLike that are used here:
 
-- | 0 based index from start of source, or (-1) for unused
type MatchOffset = Int
-- | non-negative length of a match
type MatchLength = Int
type MatchArray = Array Int (MatchOffset, MatchLength)
type MatchText source = Array Int (source, (MatchOffset, MatchLength))
There are also a few newtypes that used to prevent any possible overlap of types, which were not needed for GHC's late overlap detection but are needed for use in Hugs.
newtype AllSubmatches f b = AllSubmatches {getAllSubmatches :: (f b)}
newtype AllTextSubmatches f b = AllTextSubmatches {getAllTextSubmatches :: (f b)}
newtype AllMatches f b = AllMatches {getAllMatches :: (f b)}
newtype AllTextMatches f b = AllTextMatches {getAllTextMatches :: (f b) }
The newtypes' f parameters are the containers, usually [] or Array Int, (where the arrays all have lower bound 0). The two *Submatches newtypes return only information on the first match. The other two newtypes return information on all the non-overlapping matches. The two *Text* newtypes are used to mark result types that contain the same type as the target text. Where provided, noncaptured submatches will have a MatchOffset of (-1) and non-negative otherwise. The semantics of submatches depend on the backend and its compile and execution options. Where provided, MatchLength will always be non-negative. Arrays with no elements are returned with bounds of (1,0). Arrays with elements will have a lower bound of 0. XXX THIS HADDOCK DOCUMENTATION IS OUT OF DATE XXX These are for finding the first match in the target text: RegexContext a b Bool : Whether there is any match or not. RegexContext a b () : Useful as a guard with matchM or =~~ in a monad, since failure to match calls fail. RegexContext a b b : This returns the text of the whole match. It will return empty from the Extract type class if there is no match. These are defined in each backend module, but documented here for convenience. RegexContext a b (MatchOffset,MatchLength) : This returns the initial index and length of the whole match. MatchLength will always be non-negative, and 0 for a failed match. RegexContext a b (MatchResult b) : The MatchResult structure with details for the match. This is the structure copied from the old JRegex pacakge. RegexContext a b (b, b, b) : The text before the match, the text of the match, the text after the match RegexContext a b (b, MatchText b, b) : The text before the match, the details of the match, and the text after the match RegexContext a b (b, b, b, [b]) : The text before the match, the text of the match, the text after the match, and a list of the text of the 1st and higher sub-parts of the match. This is the same return value as used in the old Text.Regex API. Two containers of the submatch offset information: RegexContext a b MatchArray : Array of (MatchOffset,MatchLength) for all the sub matches. The whole match is at the intial 0th index. Noncaptured submatches will have a MatchOffset of (-1) The array will have no elements and bounds (1,0) if there is no match. RegexContext a b (AllSubmatches [] (MatchOffset,MatchLength) : List of (MatchOffset,MatchLength) The whole match is the first element, the rest are the submatches (if any) in order. The list is empty if there is no match. Two containers of the submatch text and offset information:
RegexContext a b (AllTextSubmatches (Array Int) (b, (MatchOffset, MatchLength)))
RegexContext a b (AllTextSubmatches [] (b, (MatchOffset, MatchLength)))
Two containers of the submatch text information:
RegexContext a b (AllTextSubmatches [] b)
RegexContext a b (AllTextSubmatches (Array Int) b)
These instances are for all the matches (non-overlapping). Note that backends are supposed to supply RegexLike instances for which the default matchAll and matchAllText stop searching after returning any successful but empty match. RegexContext a b Int : The number of matches, non-negative. Two containers for locations of all matches:
RegexContext a b (AllMatches [] (MatchOffset, MatchLength))
RegexContext a b (AllMatches (Array Int) (MatchOffset,MatchLength))
Two containers for the locations of all matches and their submatches: RegexContext a b [MatchArray] :
RegexContext a b (AllMatches (Array Int) MatchArray)
Two containers for the text and locations of all matches and their submatches:
RegexContext a b [MatchText b]
RegexContext a b (AllTextMatches (Array Int) (MatchText b))
Two containers for text of all matches: RegexContext a b (AllTextMatches [] b)
RegexContext a b (AllTextMatches (Array Int) b)
Four containers for text of all matches and their submatches:
RegexContext a b [[b]]
RegexContext a b (AllTextMatches (Array Int) [b])
RegexContext a b (AllTextMatches [] (Array Int b))
RegexContext a b (AllTextMatches (Array Int) (Array Int b))
Unused matches are empty (defined via Extract)  containerspackage  containersA Assorted concrete container types This package contains efficient general-purpose implementations of various basic immutable container types. The declared cost of each operation is either worst-case or amortized, but remains valid even if structures are shared. Contmodule Control.Monad.Cont+C 
  • Computation type: Computations which can be interrupted and resumed.
  • Binding strategy: Binding a function to a monadic value creates a new continuation which uses the function as the continuation of the monadic computation.
  • Useful for: Complex control structures, error handling, and creating co-routines.
  • Zero and plus: None.
  • Example type: Cont r a
The Continuation monad represents computations in continuation-passing style (CPS). In continuation-passing style function result is not returned, but instead is passed to another function, received as a parameter (continuation). Computations are built up from sequences of nested continuations, terminated by a final continuation (often id) which produces the final result. Since continuations are functions which represent the future of a computation, manipulation of the continuation functions can achieve complex manipulations of the future of the computation, such as interrupting a computation in the middle, aborting a portion of a computation, restarting a computation, and interleaving execution of computations. The Continuation monad adapts CPS to the structure of a monad. Before using the Continuation monad, be sure that you have a firm understanding of continuation-passing style and that continuations represent the best solution to your particular design problem. Many algorithms which require continuations in other languages do not require them in Haskell, due to Haskell's lazy semantics. Abuse of the Continuation monad can produce code that is impossible to understand and maintain. & Concurrentmodule Foreign. ConcurrentI IFFI datatypes and operations that use or require concurrency (GHC only). @ Concurrentmodule Control. ConcurrentyJ GA common interface to a collection of useful concurrency abstractions. BComplexmodule Data.ComplexJ Complex numbers.  Compatmodule Network.CGI.Compat@K 5Compatibility functions for the old Network.CGI API.  Combinatormodule Text.ParserCombinators.Parsec. CombinatorK Parsec compatibility module  Combinatormodule Text.Parsec. Combinator'L "Commonly used generic combinators  Coercemodule Unsafe.Coerce~L The highly unsafe primitive unsafeCoerce converts a value from any type to any other type. Needless to say, if you use this function, it is your responsibility to ensure that the old and new types have identical internal representations, in order to prevent runtime corruption. The types for which unsafeCoerce is representation-safe may differ from compiler to compiler (and version to version).
  • Documentation for correct usage in GHC will be found under 'unsafeCoerce#' in GHC.Base (around which unsafeCoerce is just a trivial wrapper).
  • In nhc98, the only representation-safe coercions are between Enum types with the same range (e.g. Int, Int32, Char, Word32), or between a newtype and the type that it wraps.
Clockmodule Data.Time.ClockO $Types and functions for UTC and UT1 Classmodule Control.Monad.Writer.ClassP The MonadWriter class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/pubs/springschool.html) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.State.ClassHQ MonadState class. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.Reader.ClassoR 
  • Computation type: Computations which read values from a shared environment.
  • Binding strategy: Monad values are functions from the environment to a value. The bound function is applied to the bound value, and both have access to the shared environment.
  • Useful for: Maintaining variable bindings, or other shared environment.
  • Zero and plus: None.
  • Example type: Reader [(String,Value)] a
The Reader monad (also called the Environment monad). Represents a computation, which can read values from a shared environment, pass values from function to function, and execute sub-computations in a modified environment. Using Reader monad for such computations is often clearer and easier than using the Control.Monad.State.State monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.RWS.ClassV Declaration of the MonadRWS class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://web.cecs.pdx.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.Error.ClassW 
  • Computation type: Computations which may fail or throw exceptions.
  • Binding strategy: Failure records information about the cause/location of the failure. Failure values bypass the bound function, other values are used as inputs to the bound function.
  • Useful for: Building computations from sequences of functions that may fail or using exception handling to structure error handling.
  • Zero and plus: Zero is represented by an empty error and the plus operation executes its second argument if the first fails.
  • Example type: Data.Either String a
The Error monad (also called the Exception monad). Classmodule Control.Monad.Cont.ClassZ 
  • Computation type: Computations which can be interrupted and resumed.
  • Binding strategy: Binding a function to a monadic value creates a new continuation which uses the function as the continuation of the monadic computation.
  • Useful for: Complex control structures, error handling, and creating co-routines.
  • Zero and plus: None.
  • Example type: Cont r a
The Continuation monad represents computations in continuation-passing style (CPS). In continuation-passing style function result is not returned, but instead is passed to another function, received as a parameter (continuation). Computations are built up from sequences of nested continuations, terminated by a final continuation (often id) which produces the final result. Since continuations are functions which represent the future of a computation, manipulation of the continuation functions can achieve complex manipulations of the future of the computation, such as interrupting a computation in the middle, aborting a portion of a computation, restarting a computation, and interleaving execution of computations. The Continuation monad adapts CPS to the structure of a monad. Before using the Continuation monad, be sure that you have a firm understanding of continuation-passing style and that continuations represent the best solution to your particular design problem. Many algorithms which require continuations in other languages do not require them in Haskell, due to Haskell's lazy semantics. Abuse of the Continuation monad can produce code that is impossible to understand and maintain. hChar8module Data.ByteString.Lazy.Char8a Manipulate lazy ByteStrings using Char operations. All Chars will be truncated to 8 bits. It can be expected that these functions will run at identical speeds to their Data.Word.Word8 equivalents in Data.ByteString.Lazy. This module is intended to be imported qualified, to avoid name clashes with Prelude functions. eg.
import qualified Data.ByteString.Lazy.Char8 as C
fChar8module Data.ByteString.Char8xc Manipulate ByteStrings using Char operations. All Chars will be truncated to 8 bits. It can be expected that these functions will run at identical speeds to their Word8 equivalents in Data.ByteString. More specifically these byte strings are taken to be in the subset of Unicode covered by code points 0-255. This covers Unicode Basic Latin, Latin-1 Supplement and C0+C1 Controls. See: This module is intended to be imported qualified, to avoid name clashes with Prelude functions. eg.
import qualified Data.ByteString.Char8 as B
The Char8 interface to bytestrings provides an instance of IsString for the ByteString type, enabling you to use string literals, and have them implicitly packed to ByteStrings. Use -XOverloadedStrings to enable this. Charmodule Text.ParserCombinators.Parsec.Charg Parsec compatibility module Charmodule Text.Parsec.Charg !Commonly used character parsers. Charmodule Data.Char?h )The Char type and associated operations. <Chanmodule Control.Concurrent.Chanh Unbounded channels. cgipackage cgih XA library for writing CGI programs This is a Haskell library for writing CGI programs.  CGImodule Network.CGIfi Simple Library for writing CGI programs. See http://hoohoo.ncsa.uiuc.edu/cgi/interface.html for the CGI specification. This version of the library is for systems with version 2.0 or greater of the network package. This includes GHC 6.6 and later. For older systems, see http://www.cs.chalmers.se/~bringert/darcs/cgi-compat/doc/ Based on the original Haskell binding for CGI: Original Version by Erik Meijer mailto:erik@cs.ruu.nl. Further hacked on by Sven Panne mailto:sven.panne@aedion.de. Further hacking by Andy Gill mailto:andy@galconn.com. A new, hopefully more flexible, interface and support for file uploads by Bjorn Bringert mailto:bjorn@bringert.net. Here is a simple example, including error handling (not that there is much that can go wrong with Hello World):
import Network.CGI

cgiMain :: CGI CGIResult
cgiMain = output "Hello World!"

main :: IO ()
main = runCGI (handleErrors cgiMain)
:Categorymodule Control.Categorybm  Calendarmodule Data.Time.Calendarm /Cmodule Foreign.Cm 1Bundles the C specific FFI library functionality  bytestringpackage  bytestring.n 3Fast, packed, strict and lazy byte arrays with a list interface A time and space-efficient implementation of byte vectors using packed Word8 arrays, suitable for high performance use, both in terms of large data quantities, or high speed requirements. Byte vectors are encoded as strict Word8 arrays of bytes, and lazy lists of strict chunks, held in a ForeignPtr, and can be passed between C and Haskell with little effort. Test coverage data for this library is available at: http://code.haskell.org/~dons/tests/bytestring/hpc_index.html  ByteStringmodule Text.Regex.Posix. ByteStringp hThis provides ByteString instances for RegexMaker and RegexLike based on Text.Regex.Posix.Wrap, and a (RegexContext Regex ByteString ByteString) instance. To use these instance, you would normally import Text.Regex.Posix. You only need to import this module to use the medium level API of the compile, regexec, and execute functions. All of these report error by returning Left values instead of undefined or error or fail. The ByteString will only be passed to the library efficiently (as a pointer) if it ends in a NUL byte. Otherwise a temporary copy must be made with the 0 byte appended.  ByteStringmodule Text.Parsec. ByteStringRs RMake strict ByteStrings an instance of Stream with Char token type. e ByteStringmodule Data. ByteStrings A time and space-efficient implementation of byte vectors using packed Word8 arrays, suitable for high performance use, both in terms of large data quantities, or high speed requirements. Byte vectors are encoded as strict Word8 arrays of bytes, held in a ForeignPtr, and can be passed between C and Haskell with little effort. This module is intended to be imported qualified, to avoid name clashes with Prelude functions. eg.
import qualified Data.ByteString as B
Original GHC implementation by Bryan O'Sullivan. Rewritten to use Data.Array.Unboxed.UArray by Simon Marlow. Rewritten to support slices and use ForeignPtr by David Roundy. Polished and extended by Don Stewart.  BufferTypemodule Network. BufferTypev In order to give the user freedom in how request and response content is represented, a sufficiently abstract representation is needed of these internally. The Network.BufferType module provides this, defining the BufferType class and its ad-hoc representation of buffer operations via the BufferOp record. This module provides definitions for the standard buffer types that the package supports, i.e., for String and ByteString (strict and lazy.) BSDmodule Network.BSDy ~The Network.BSD module defines Haskell bindings to network programming functionality provided by BSD Unix derivatives. &Browsermodule Network.Browsery Session-level interactions over HTTP. The Network.Browser goes beyond the basic Network.HTTP functionality in providing support for more involved, and real, request/response interactions over HTTP. Additional features supported are:
  • HTTP Authentication handling
  • Transparent handling of redirects
  • Cookie stores + transmission.
  • Transaction logging
  • Proxy-mediated connections.
Example use:
do 
  rsp <- Network.Browser.browse $ do
           setAllowRedirects True -- handle HTTP redirects
           request $ getRequest "http://google.com/"
  fmap (take 100) (getResponseBody rsp)
 Boolmodule Data.Bool| ,The Bool type and related functions.  BlockTablemodule Text.Html. BlockTable| An Html combinator library Bitsmodule Data.BitsH} /This module defines bitwise operations for signed and unsigned integers. Instances of the class Bits for the Int and Integer types are available from this module, and instances for explicitly sized integral types are available from the Data.Int and Data.Word modules.  BFSmodule Data.Graph.Inductive.Query.BFS~ Breadth-First Search Algorithms  BCCmodule Data.Graph.Inductive.Query.BCC Batchmodule Test.QuickCheck.BatchY A batch driver for running QuickCheck. Note: in GHC only, it is possible to place a time limit on each test, to ensure that testing terminates. Batchmodule Debug.QuickCheck.Batch. :This is a batch driver for running QuickCheck (GHC only). } Basicsmodule Data.Generics.Basics "Scrap your boilerplate" --- Generic programming in Haskell. See http://www.cs.vu.nl/boilerplate/. This module provides the Data class with its primitives for generic programming, which is now defined in Data.Data. Therefore this module simply re-exports Data.Data. For more information, please visit the new SYB wiki: http://www.cs.uu.nl/wiki/bin/view/GenericProgramming/SYB.  Basicmodule Data.Graph.Inductive.Basic Basic Graph Algorithms basepackage baseĂ Basic libraries This package contains the Prelude and its support libraries, and a large collection of useful libraries ranging from data structures to parsing combinators and debugging utilities. Basemodule Text.Regex.Base Classes and instances for Regex matching. This module merely imports and re-exports the common part of the new api: Text.Regex.Base.RegexLike and Text.Regex.Base.Context. To see what result types the instances of RegexContext can produce, please read the Text.Regex.Base.Context haddock documentation. This does not provide any of the backends, just the common interface they all use. The modules which provide the backends and their cabal packages are:
  • Text.Regex.Posix from regex-posix
  • Text.Regex from regex-compat (uses regex-posix)
  • Text.Regex.Parsec from regex-parsec
  • Text.Regex.DFA from regex-dfa
  • Text.Regex.PCRE from regex-pcre
  • Test.Regex.TRE from regex-tre
In fact, just importing one of the backends is adequate, you do not also need to import this module. TODO: Copy Example*hs files into this haddock comment Basemodule Test.HUnit.Base Basemodule Network.HTTP.Base Definitions of Request and Response types along with functions for normalizing them. It is assumed to be an internal module; user code should, if possible, import Network.HTTP to access the functionality that this module provides. Additionally, the module exports internal functions for working with URLs, and for handling the processing of requests and responses coming back. 4Basemodule Control.Exception.Base 5Extensible exceptions, except for multiple handlers.  ArtPointmodule Data.Graph.Inductive.Query.ArtPointC FArrowmodule Control.Arroww Basic arrow definitions, based on Generalising Monads to Arrows, by John Hughes, Science of Computer Programming 37, pp67-111, May 2000. plus a couple of definitions (returnA and loop) from A New Notation for Arrows, by Ross Paterson, in ICFP 2001, Firenze, Italy, pp229-240. See these papers for the equations these combinators are expected to satisfy. These papers and more information on arrows can be found at http://www.haskell.org/arrows/. arraypackage array Mutable and immutable arrays This package defines the classes IArray of immutable arrays and MArray of arrays mutable within appropriate monads, as well as some instances of these classes. ,Arraymodule Foreign.Marshal.Array Marshalling support: routines allocating, storing, and retrieving Haskell lists that are represented as arrays in the foreign language Arraymodule Data.ArrayS Basic non-strict arrays. Note: The Data.Array.IArray module provides a more general interface to immutable arrays: it defines operations with the same names as those defined below, but with more general types, and also defines Array instances of the relevant classes. To use that more general interface, import Data.Array.IArray but not Data.Array. L Applicativemodule Control. Applicative This module describes a structure intermediate between a functor and a monad: it provides pure expressions and sequencing, but no binding. (Technically, a strong lax monoidal functor.) For more details, see Applicative Programming with Effects, by Conor McBride and Ross Paterson, online at http://www.soi.city.ac.uk/~ross/papers/Applicative.html. This interface was introduced for parsers by Niklas Rjemo, because it admits more sharing than the monadic interface. The names here are mostly based on recent parsing work by Doaitse Swierstra. This class is also useful with instances of the Data.Traversable.Traversable class. )Allocmodule Foreign.Marshal.AllocԒ :Marshalling support: basic routines for memory allocation ~ Aliasesmodule Data.Generics.AliasesL "Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides a number of declarations for typical generic function types, corresponding type case, and others. &ı v e V A -    ڰ ϰ w h ^ S B 0 %   ߯ ү v i U > '  ֮ ˮ o \ Q ; 2 '  ʭ ~ e W K < )   ج Ϭ ¬ u b P C 3 %   ݫ Ы ë m U ;   ܪ ƪ | o b V D +   թ © y ` J 3   Ȩ x _ J 6 Ч r N )  c <  ɥ a A "  ٤ { _ I + ף l S = 2  ޢ ¢ v ] E *  ϡ r ] A &  ߠ Ҡ d S @  ǟ k H +  ۞ t g Q )  ۝ ɝ t \ E *  ޜ ǜ v T B /  ֛ w W :   Ӛ z h O < '  ޙ ƙ t a K > &  ט NetworkBrowserNetworkHTTPNetworkHTTP HandleStreamNetworkHTTPStreamNetworkStreamDebuggerNetworkTCPNetwork StreamSocketNetworkHTTPBaseNetwork BufferTypeNetworkHTTPHeadersNetworkStreamCodec CompressionGZipCodec CompressionZlibCodec CompressionZlibRawCodec CompressionZlibInternalTextXHtmlTextXHtmlFramesetTextXHtmlStrictTextXHtml TransitionalTextXHtmlDebugTextXHtmlTableDataTimeDataTimeFormatDataTimeClockTAIDataTime LocalTimeDataTimeCalendarEasterDataTimeCalendarDataTimeCalendarJulianDataTimeCalendarMonthDayDataTimeCalendarWeekDateDataTimeCalendar OrdinalDateDataTimeClockDataTimeClockPOSIXControl ConcurrentSTMControl ConcurrentSTMTArrayControl ConcurrentSTMTVarControl ConcurrentSTMTChanControl ConcurrentSTMTMVarControlMonadSTMTextRegexPosixTextRegexPosix ByteStringLazyTextRegexPosix ByteStringTextRegexPosixSequenceTextRegexPosixStringTextRegexPosixWrapTextRegexTextRegexBaseImplTextRegexBaseTextRegexBaseContextTextRegexBase RegexLikeTest QuickCheckUtilsDebug QuickCheckUtilsTest QuickCheckPolyDebug QuickCheckPolyTest QuickCheckBatchTest QuickCheckDebug QuickCheckDebug QuickCheckBatchTextParserCombinatorsParsecPermTextParsecPermTextParserCombinatorsParsecLanguageTextParsecLanguageTextParsecTextParserCombinatorsParsecExprTextParserCombinatorsParsecTextParserCombinatorsParsecPrimTextParserCombinatorsParsecCharTextParsecStringTextParsec ByteStringTextParsec ByteStringLazyTextParserCombinatorsParsecPosTextParserCombinatorsParsecTokenTextParsecTokenTextParsecCharTextParsecExprTextParserCombinatorsParsec CombinatorTextParsec CombinatorTextParsecPrimTextParserCombinatorsParsecErrorTextParsecErrorTextParsecPosControlParallel StrategiesControlParallelNetworkNetworkBSDNetworkSocketNetworkSocketInternalNetworkURIControlMonadContControlMonadWriterStrictControlMonadWriterControlMonadWriterLazyControlMonadStateStrictControlMonadStateControlMonadStateLazyControlMonadReaderControlMonadRWSStrictControlMonadRWSControlMonadRWSLazyControlMonadListControlMonadErrorControlMonadContClassControlMonadErrorClassControlMonadIdentityControlMonadRWSClassControlMonadReaderClassControlMonadStateClassControlMonadTransControlMonadWriterClassTestHUnitTestHUnitTextTestHUnitBaseTestHUnitLangTestHUnitTerminalTextHtmlTextHtml BlockTableLanguageHaskellParserLanguageHaskellLexerLanguageHaskell ParseUtilsLanguageHaskell ParseMonadLanguageHaskellPrettyLanguageHaskellSyntaxSystemConsoleEditlineSystemConsoleEditlineReadlineDataGraph InductiveExampleDataGraph InductiveDataGraph InductiveQueryDataGraph InductiveQueryMaxFlow2DataGraph InductiveTreeDataGraph InductiveNodeMapDataGraph InductiveInternal FiniteMapDataGraph InductiveQueryGVDDataGraph InductiveQuerySPDataGraph InductiveQueryMSTDataGraph InductiveInternalHeapDataGraph InductiveQueryMaxFlowDataGraph InductiveQueryBFSDataGraph InductiveInternalQueueDataGraph InductiveInternalRootPathDataGraph InductiveQuery TransClosDataGraph InductiveQuery DominatorsDataGraph InductiveQueryBCCDataGraph InductiveQueryDFSDataGraph InductiveBasicDataGraph InductiveInternalThreadDataGraph InductiveQueryMonadDataGraph InductiveQueryIndepDataGraph InductiveQueryArtPointDataGraph InductiveMonadIOArrayDataGraph Inductive PatriciaTreeDataGraph InductiveMonadDataGraph InductiveGraphvizDataGraph InductiveGraphNetworkCGINetworkCGIMonadNetworkCGICompatNetworkCGIProtocolNetworkCGICookieLanguageHaskellTHLanguageHaskellTHPprLanguageHaskellTHPprLibLanguageHaskellTHQuoteLanguageHaskellTHLibLanguageHaskellTHSyntaxDataGenericsDataGenericsTwinsDataGenericsTextDataGenericsSchemesDataGenericsAliasesDataGenericsBasicsDataGenerics InstancesSystemRandomText PrettyPrintText PrettyPrintHughesPJSystemTimeTraceHpcReflectTraceHpcMixTraceHpcTixTraceHpcUtilSystemFilePathSystemFilePathPosixSystemFilePathWindowsSystem DirectoryDataGraphDataIntMapDataIntSetDataMapDataTreeDataSequenceDataSetData ByteStringLazyChar8Data ByteStringLazyData ByteStringChar8Data ByteStringData ByteStringUnsafeData ByteStringLazyInternalData ByteStringInternalData ByteStringFusionTextShow FunctionsTextPrintfSystemMemWeakSystemMem StableNameSystemMemSystemInfoSystemExitSystem EnvironmentSystemCPUTimeSystemConsoleGetOptDebugTraceDataVersionSystemTimeoutDataUniqueData TraversableDataSTRefStrictDataSTRefLazyDataSTRefDataRatioDataFoldableControl ApplicativeDataMonoidDataIxControlMonadSTLazyControlMonadSTStrictControlMonadSTControlArrowControlMonadFixDataFunctionDataFixedDataComplexControlMonad InstancesControl ConcurrentControl Concurrent SampleVarControl ConcurrentQSemNControl ConcurrentQSemControl ConcurrentChanControl ConcurrentMVarControlCategoryDataDataPreludeControl OldExceptionSystemIOControl ExceptionControl ExceptionBaseSystemPosixTypesForeignForeignMarshalForeignMarshalPoolForeignCForeignCErrorForeignCStringForeignMarshalArrayForeignMarshalUtilsForeignMarshalErrorForeignMarshalAllocForeign ForeignPtrForeignPtrForeign ConcurrentForeignStorableDataDynamicDataIORefTextReadSystemIOErrorDataEitherDataTypeableForeign StablePtrNumericData HashTableDataListDataCharSystemIOUnsafeForeignCTypesDataWordDataIntTextReadLexTextParserCombinatorsReadPrecTextParserCombinatorsReadPDataOrdControlMonadTextShowDataBitsDataMaybeDataEqDataBoolDataStringDataTupleUnsafeCoerceDataArrayUnboxedDataArrayStorableDataArraySTDataArrayDiffDataArrayIODataArrayMArrayDataArrayIO InternalsDataArrayIArrayDataArray T  Z ľ 7 c ǻ " r ٸ = i ǵ $ r P HTTP4000.0.7Chttp://hackage.haskell.org/packages/archive/HTTP/4000.0.7/doc/html/?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTPzlib0.5.0.0Bhttp://hackage.haskell.org/packages/archive/zlib/0.5.0.0/doc/html/?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/zlibxhtml 3000.2.0.1Fhttp://hackage.haskell.org/packages/archive/xhtml/3000.2.0.1/doc/html/@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xhtmltime1.1.3@http://hackage.haskell.org/packages/archive/time/1.1.3/doc/html/?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/timestm2.1.1.2Ahttp://hackage.haskell.org/packages/archive/stm/2.1.1.2/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/stm regex-posix0.94.1Hhttp://hackage.haskell.org/packages/archive/regex-posix/0.94.1/doc/html/Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-posix regex-compat0.92Ghttp://hackage.haskell.org/packages/archive/regex-compat/0.92/doc/html/Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-compat regex-base0.93.1Ghttp://hackage.haskell.org/packages/archive/regex-base/0.93.1/doc/html/Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-base QuickCheck1.1.0.0Hhttp://hackage.haskell.org/packages/archive/QuickCheck/1.1.0.0/doc/html/Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/QuickCheckparsec3.0.0Bhttp://hackage.haskell.org/packages/archive/parsec/3.0.0/doc/html/Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parsecparallel1.1.0.1Fhttp://hackage.haskell.org/packages/archive/parallel/1.1.0.1/doc/html/Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parallelnetwork2.2.1.3Ehttp://hackage.haskell.org/packages/archive/network/2.2.1.3/doc/html/Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/networkmtl1.1.0.2Ahttp://hackage.haskell.org/packages/archive/mtl/1.1.0.2/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mtlHUnit1.2.0.3Chttp://hackage.haskell.org/packages/archive/HUnit/1.2.0.3/doc/html/@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HUnithtml1.0.1.2Bhttp://hackage.haskell.org/packages/archive/html/1.0.1.2/doc/html/?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/html haskell-src1.0.1.3Ihttp://hackage.haskell.org/packages/archive/haskell-src/1.0.1.3/doc/html/Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskell-srceditline0.2.1.0Fhttp://hackage.haskell.org/packages/archive/editline/0.2.1.0/doc/html/Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/editlinefgl5.4.2.2Ahttp://hackage.haskell.org/packages/archive/fgl/5.4.2.2/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fglcgi 3001.1.7.1Dhttp://hackage.haskell.org/packages/archive/cgi/3001.1.7.1/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cgitemplate-haskell2.3.0.1Nhttp://hackage.haskell.org/packages/archive/template-haskell/2.3.0.1/doc/html/Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/template-haskellsyb0.1.0.1Ahttp://hackage.haskell.org/packages/archive/syb/0.1.0.1/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/sybrandom1.0.0.1Dhttp://hackage.haskell.org/packages/archive/random/1.0.0.1/doc/html/Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/randompretty1.0.1.0Dhttp://hackage.haskell.org/packages/archive/pretty/1.0.1.0/doc/html/Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/prettyold-time1.0.0.2Fhttp://hackage.haskell.org/packages/archive/old-time/1.0.0.2/doc/html/Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/old-timehpc0.5.0.3Ahttp://hackage.haskell.org/packages/archive/hpc/0.5.0.3/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hpcfilepath1.1.0.2Fhttp://hackage.haskell.org/packages/archive/filepath/1.1.0.2/doc/html/Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/filepath directory1.0.0.3Ghttp://hackage.haskell.org/packages/archive/directory/1.0.0.3/doc/html/Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/directory containers0.2.0.1Hhttp://hackage.haskell.org/packages/archive/containers/0.2.0.1/doc/html/Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/containers bytestring0.9.1.4Hhttp://hackage.haskell.org/packages/archive/bytestring/0.9.1.4/doc/html/Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestringbase4.0.0.07http://haskell.org/ghc/docs/latest/html/libraries/base/2http://haskell.org/ghc/docs/latest/html/libraries/array0.2.0.0Chttp://hackage.haskell.org/packages/archive/array/0.2.0.0/doc/html/@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/array