HOOG1!q!V*9!$'*%& '==XX--// y y | | @ @ * +-+ !./-00yy}~  orDF>ADFUU6688U\lloqtzz    n o   1 2 B B   C D \ ] f f h h   # # d d       % % . . 77PTLLUUZZggz{).11/220yy: :   K K U U Y Y \ \ ! ! ((1!jjGG44z}22DD  8 8 <<>>ggjjll}}==2wyHH3399 EEP P d d i i s s   y y 1 1 ~~xx3RR44yy  EEe e j j ((  4  SS55kkFFk k 2 2 z z   5 66l l 6  77DDFF 2 2 z z 78hhrrGG } } EEIJ9rr((:%&&<##&>BBQQ= $$67>@CDFFLLNN''))> %%(*,-//1289;=@JRR""?**99<<LN')@KN\OO^55HHPS_;TT8:HHz==cc22  ''st66 9 9 & ( e e F O j l p q s t ).uuww{|.2    !!RRfiaU  ((*+//::FQVY]^cdjjqqstxxzz $'/116689;;>?AACCEEQQSSUjnquuwx   %%''56=\_afhjbU[ddu&&,-//AACCFFSU{{,,2244>?RSYY]]adgglluu##34OOYYab~~1177;;CCFFYYc\bllnnpprrxy||    **,1::??FKQQWYmmoov<>BDEGIMMPPUU[[__eimrvx   %&-1>>GH[diiklnnqqdYYc|  "./4688:;>?CDNNRitt{|~~  !!&(68<=BFUUWhkkvv -.23=    %%**.025ffkkuveVWY[cdgoqsuy{  &'))-/1388:;>?CCFJLQTTVVYZ\]eegikkmtzz}  !!#$&06:==BGKLTUWWZ]__abffhnAfikuu  -.22;;KKTTYY\\^^aa    ()++77DDHHWWZZuu24FFNNWW[\^^``hhk!$$&&((*+//227:<=@@himmttgggjottww  --PQ^_ddjjntxx))2255EEJJZZbbhhqq)*78>>@@``bdllnnpruxzz||!$&((*+--00CCJJVVh__lmpqwwyy{{WW``ccrrwx{|**6688;;]]cc%%0066@@BBYY\\ddmmvx~,,89>>@@OOVZoo))6699ABDDWX\\iYY[[adhsuuwx{{    (-.002289;;KKPPUjnu{{~~ "((--//114499>>AADFLLSUWWYY[[^^``cceeggllqqjpsz{SUQQ]]kk8 8 Q S !!12::^^kZZttyy{{)*,1GQ`` **1134MM  >>PP__mmvw~  $%,-II$%3499BBDDXXZZaaii++8Ml++^^mm~~lY[bbddisuuww}}*36=??Ukppuu} :DFIRUUWWZZ]^lls|  ),..2388;<>?EFNN__ddfhkm[]``ddgglmpqtuxx~~//22BBTTXYdejjqqxx||  ''11;?DER~    $'',,..15==AAEEOOVVYY[\ddfgoo{fnYY`ahuwwyy|~  "((-/89CDIIKKNNPQXXZZ]]aajjlt!!%%'-225689>>@@DDFFLLNNQUXhknoVWY[^addghjqstwwyy~~  ##,24DIIQQTTXY]]`bddffhjlmrrxx| ""%'*-2:==@  !!)*,,..03ABDEIIUUWWYYRupccjlnnpprrttww||<=AAQQYZ\]cdggjjqqstxx ""((1189>?DDJJQQ[[]]`accefijo~   ((33>>gqV!!1155$$::ii?Ciiww{{??))00jjx!! 5 5 o o 5 5 o o   D D     m m / / mx!#,,JJ^^ww``z{rUUYY]]``eeggioqwyy|~    ))--//22::>?EQTTWWYY[]ddhjntxx{{~~((,0::>?AADDGGJJOOSSUU[\abddffSUsW[^_bbdhlsvwz{ ""%)++::DDFFJJOSZZ\^bdffhjntwxzz}$()+-006:CDLLPQUUWWZ\^^`acfhjmnttyy}~DtY[aacehhjmpqw|~~  $)..1299<=@BGJMMPP\\ccegit !!((--//449;>>@AFFKLSSUUWWY[^^``bcffkottz{}}1uY]ddpsxxz{  --1133CDKKPPTm#$&&9:>?JJRRZZddgh %5>>BBFFRSYY]]bdggk&&,,6:@CIIOOTTYYab'vVWcckkmmooqqssuu||  //YYhioo  %%+-00EFuuxyLLSSoo));;PZ""<<,,LMYY__bb::\\=>OPYYcdD$wttyy{{::rryycc68jj~IIPQWZ]^cdoo34ABWXZZaaii"#/19988MM[[ss+/WX 1 1 J J M M          ( ( M N z }  0 0 7 7 M M O O f f     "xhh((88]]pptt||''9:tt  [??NNXXcdqq!!;=@@TUcc 88ss~~  ! ! C M P P W W _ _ ~ ~ : y]]``bbffnors{{((..45MMggiimt  -->?AAbbee,,//;<TXZ\rrtt,1134==BBOOVZ,,>?BBIJTTXZaaqqst~~z>ikuu''uuDD??mm=>$$.166# & & & L L # #   0 0 2222\\xxFFHH |:=IJ!$~%)̚qk[o[ ()->ALPHA_ AbsoluteTimeAllĈAnyArchArithExceptionArraywArrayExceptionjAsyncException]BETA_YBodyBBool BufferMode BufferState BuildFlags BuildInfo BuildTypeo ByteString?CCharCClockņCDevCDouble:CFloatCInoCIntQCIntMax CIntPtrCLDoublehCLLong CLong؃CModeCOffHCPidCPtrdiffCSCharpCShort( CSigAtomicCSizeCSsizePCTimeCUCharրCUIntCUIntMaxFCUIntPtrCULLongCULongnCUShort&CWchar~Callconv~Chan~CharK~Clause0~ CleanFlags#~ CommandParse~Compiler~CompilerFlavor} CompilerId}Complex}Con}ConfVar} ConfigFlags}ConfiguredProgram} ConsoleEventz}Constrq} ConstrReph}Consumed_}CopyDestV} CopyFlagsI}Counts;}DataRep2}DataType}Day}Dec| Dependency| DependencyMap|Digit|Doc|Double)|Dynamic|E12 |E6{Elem{Errno{ Exception{ Executable{ExitCode{Exp{ Extension|{FDTypex{Fd0{Field'{ FingerTree {FixityzFixityDirectionzFlagzFlagNamezFloat6zForeignzFunDepzGAMMA_yGenyGeneralCategoryyGenericPackageDescriptiony GlobalFlagsyGuardy HUnitFailurey HaddockFlagsyHandleyy HandlePosnpy HandleTypejyHashDataayHsAltCyHsAssoc%y HsBangTypeyHsCNamex HsConDeclxHsDeclxHsExpx HsExportSpecmx HsFieldUpdateOx HsGuardedAlt1x HsGuardedAltsx HsGuardedRhsw HsImportDeclw HsImportSpecw HsLiteralwHsMatch}wHsModulebwHsName@wHsOpwHsPatw HsPatFieldvHsQNamevHsQOpv HsQualTypevHsRhsbvHsSafety@v HsSpecialCon%vHsStmtvHsTypeu HscolourFlagsuHtmlu HtmlTableuHtmlTreeuIOouIOError]u IOErrorTypeTu IOExceptionKuIOMode1uIduIdentityuInfotInsertst InstallDirst InstallFlagstInt=tInt16sInt32qsInt64 sInt8rIntMaprIntPtrArIntSetrIntegerq LexContextqLexemeqLibraryqLicensesqListTgqLitPqLocalBuildInfoEq LocalTime9q MakefileFlags,qMap!qMatchqMaybepMessagepModulepNameip NameFlavourSp NameSpace=pNodepOSoOptimisationLevelo OrdALPHA_oOrdBETA_o OrdGAMMA_oOrderingoPoPDTagged|oPErrorvoPPLayoutroPWarninglo PackageCheckfo PackageDBXoPackageDescriptionBoPackageIdentifier#o ParseErroro ParseResultoPatn PathComponentn PathTemplatenPathTemplateVariablen PermissionsnPprMnProgramConfigurationnProgramLocationnPropertynQnQSemnQSemNunRangeZnReadEQnReadP8nReadPrecn RegisterFlagsnResultn SDistFlagsmSTMmSTUArraymSafetymSeekModemSeq]mSetIm SourcePosCGroup9CLconv4CPasswd/ CSigaction*CSigset%CStat CString CStringLenCTermiosCTmCTmsCUtimbufCUtsnameݙCWString͙ CWStringLen CharParserClauseQz ClockTickqColumnkConIndexeConQZCxtMCxtQ;DecQ0 Description#DeviceID DiffArray DiffUArrayDocטDoneҘEdge EpochTimeExpQFDFieldExp FieldExpQoFieldPatV FieldPatQ8FileID1FileMode) FileOffset"FilePathFinalizerEnvPtr FinalizerPtrFlagFlagAssignmentForestGAMMAo GenParserCGeneric3GenericB/GenericMGenericQGenericR GenericTGraphGuardQٖHandlePositionϖHookedBuildInfoHsAsstp HsContextKIOError=IPr+Indent%InfoQInstallDirTemplatesInstalledPackageInfoՕKeyϕLFlags LanguageDefLeapSecondTable{LimitsLinemLineNog ListUArray<MatchQ/Micro! MkOptDescrєModName”NameOccName OperatorTablexOptFlagsROrdALPHA>OrdBETA+OrdGAMMAPHANDLE POSIXTimePPSuffixHandlerParsecParserwPatQlPath_ PermParser.PicoPkgNamePrec PrecedenceProcessGroupID ProcessIDProgArgRangeQܒRationalɒ RawBufferReadPReadSj ReportProblemC ReportStart(SFlagsSTRep SampleVaȓShowS SourceNameStmtQStrategy StrictTypev StrictTypeQ[StringNTable: TokenParser TypeQURLUniqUnrecFieldParser VarStrictTypeVarStrictTypeQmVertexgIntQ(,,)[]CharStrictType(,,)[]CharStrictTypea(,)[]Char[]CharaMaybeaInt[]CharQTypestGenTokenParser[]CharstIdentityaArrayInta[]CharQ(,)StrictType(,)StrictTypeaa()QStmt[]Char[]Char[]CharaMVar(,)IntMVarasaState#s(#,#)State#sa[]CharusStateusIOusus[]CharStateusIOusa[]Char[](,)a[]CharraReadPaMutableByteArray# RealWorldRatioIntegerQRange[]CharCPidCPidIntInt PackedStringFixedE12tokstaStreamPermParser[]Charsta[]NodeQPatParsecT[]Char()IdentitysuParsecTsuIdentity(,)[]Char BuildInfoLocalBuildInfo PreProcessorNominalDiffTimeWord32Poly OrdGAMMA_PolyOrdBETA_Poly OrdALPHA_(,)[]Char[][]Chartoksta[][]Operatortoksta PackedString[]Char PackedStringgetseta[]Char[][]Char[]ChargetsetOptDescraFixedE6QMatche(,)ii[]eUArrayieIntIntCLongDayIntegerstGenLanguageDef[]CharstIdentity[][]CharIntInstalledPackageInfo_[]Char InstallDirs PathTemplateQInfoInt(,)IntInt IOException[](,)HsQName[]HsType(,)HsQName[]HsType(,)Maybe BuildInfo[](,)[]Char BuildInfoIntegerQGuardArrayInt[]IntaammararmamaacacatokstParsecT[]tokstIdentityPolyGAMMA_a[]Treea[](,)FlagNameBool[]CharaFunPtrPtraIO()envaFunPtrPtrenvPtraIO()[]CharCOffCModeCInoQ(,)[]CharPat(,)[]CharPatQ(,)[]CharExp(,)[]CharExpCIntQExpCTime(,)IntInt()PprMDoc IOToDiffArrayIOUArray IOToDiffArrayIOArrayCDev[]CharQDecQ[]Type[]TypeQConIntIntCClockQClausestParsecT[]CharstIdentity(,)PtrCWcharIntPtrCWchar()()()()()(,)PtrCCharIntPtrCChar()()()()()()()()()CSize(,)IntIntQBodyPolyBETA_IOBoolIO()[][]Char[]CharPolyALPHA_( :Ձ[apvb;pcZdQe)JfN>g8hi)j klmnopqrYstuѢv4wxUy3zo|d|io{nedtime ZonedTimegp˛lқiٛstZipListzag mod"e)Modeh:cACompilerFlavor8\6c_j6q4xArch #*136ܟ8ʟeiSoraitĜe˜b[h(mrWritertWriterTodeIOModea/n6d=lDeK HandleTypeubfifpewr~ BufferStatepaSm%pedamoȝnϝa֝dݝ WrappedMonadrrow WrappedArrowo,n3a:dA WrappedMonadrZraohwo WrappedArrowrdWord#D1-368ڞptžrɞWordPtrWord84Word64#Word64#2Word3264Word16Word#ln_dfomwts{OSdpPatakWeak#Weak##џWord84#Word642#Word326#Word16Wordae̠irJiQgXh_tfcmutr{lyTokenewlrViewRViewLrӠb_stexVertexi onVersionr-a4n;gBeI VersionRangeofsmitt{y VerbositylrxArch ConditioneinzpqstݡTypetymTokenr ict!t(y/p6e= VarStrictTypeqYVarStrictTypeQPatame NameSpaceInfodTokenExpdȢDecanpr}sitc<fwa rni n'g.PWarningtCiJmQeXUTCTimeeprwePh!pڣspecifiedţProgramLocationackaged b PackageDBo(o/k6s= UserHooksrWr^oerl IOErrorTypelURLpercase¤lɤeФtפtޤerGeneralCategory abDdeǩi\kjlqަris5a¥uApHpOoVr]tdekdroyperation IOErrorTypefVtΥiեsܥfiedcon str"a)i0n7t>sE IOErrorTypee]Safetyepcwf~ieldparserĦUnrecFieldParserualHsQNameifted#f*f1i8t?yFpMeTs[ ExtensionnqoxwnbeΧlicenseLicensexէtܧension Extensionui#l*d1t8y?pFeM BuildTypecyoqۨtͨvwe~rsaltime UniversalTimeUnitUniqueUniquen ver!s(i/o6n=rDaKnRgYe`sg VersionRangeodesyntax ExtensionxΩpթeܩctMessageec̪fkrfBsc"o)r0e7TokenlIoPwWArithExceptionirnyedelementArrayExceptioniӪdڪableins tan c'e.s5 ExtensionoKxReYd`tgunpul|es Extensionmbiguoëuʫsѫ SearchResultrrayUArray a5cӵehi]m9oدrTuvyHcʮps}v^aerlisInfoyndDeceTypeafotqerFsάyլnܬonymins tan"c)e0s7 ExtensioneMpTTypeRepTypeQp{erators Extensiona­mɭiЭl׭iޭes Extensionbl eTypeable1234~5k6X7E Typeable7 Typeable6 Typeable5 Typeable4 Typeable3 Typeable2 Typeable1oѮnخTyConiInfoarTVarpeKl3p*Pate:tATypeExpaevueelBoole}Treeversableï Traversablek߯enTokenparser$ TokenParserv@aGrNTMVarlmװtnlue|caseletter°GeneralCategoryeްelJozone TimeZonef"d)a0y7 TimeOfDayoQcXa_lfem TimeLocalexpired IOErrorTypedñeʱTokenpڱPatireadimk6saf#e*Safetyi=lDlKeRdYAsyncExceptiondtThreadId# ThreadId#sversiȲoϲnֲ VersionRangempsRxtTextdet!a(i/l6s= TextDetailstYTestacefXloresult TestResultkpͳtԳi۳ons TestOptions TestResulta9i!s(t/Testb@eGlNTestaldakgrsy TestFlagsiled TestResultxaƴuʹsԴt۴ed TestResultaseTestblWo+r2t9e@dG TestResulte^Testablepwl~atehaskellĵ ExtensionchߵanTChanls name& NameSpacebfrArHaOyVTArraylsreyrrorPErroreTable#L34ac$de fhiqo־prXtuymstZun#e*x1p8e?cFtMMessageeamheorvr}or IOErrorTypebolLexememrɷrзo׷g޷ateGeneralCategorySumSTadImoruayDlKeRStyleahrorva}ySTUArray TextDetailsazeic\n¸gɸStringc*l!rtokTokene pDataRepLito1n8s?tFrM ConstrReptcStricttxype StrictTypeq StrictTypeQafptѹSTretSTRepSTRefmFDTypeStreamp!e(r/m6p=aDrKsReYr`StreamPermParsertegyStrategyrablĺe˺Storablearray StorableArraySTMt'Stmtq:StmtQcsgUe\ncStdGenazllCallconvbۼcnrteState#tѻStateTState#raySTArrayda%l,o3n:eAdHeOrVi]vdiknrgy ExtensionkoverflowǼAsyncExceptionlen/ptr StablePtr# StablePtr#a6m=eD StableNamec_lfomctSrcLocaeciaficpaƽcͽkԽa۽gedb PackageDBl HsQNamec7r&c-ArcheiCnJgQcXo_mfbmitn{ingmarkGeneralCategoryGeneralCategorylMurcen$po s SourcePosa+m2e9 SourceNameaTr[ibsiOSgÿmzedSizedple BuildTypedeݿpԿPatExpDecArcho8ut down& ConsoleEventw?Showaoks\ShowSrrpyarseargsShowOrParseArgsrgsShowOrParseArgslag sSFlagsac\emZqMt@SetSeqiachlotl{onTokenosedhandle HandleTypekf$mod eSeekModer+o2m9e@nGdNSeekModetcijoqnxFieldrchresult SearchResultistflag s SDistFlagsco0p7e>dEtLySpZeavhaorvi}ables ExtensionSCCfmplevar SampleVare Safetyty$Safety9;0BArchIntegera!eiswts{RWStRWST6000ArchghtEitherarcKp$squa reTokena+r2e9n@TokenuRrYl`ygTokenryrowTokenac gmlpqsturninorder ArgOrderotFu(l/t6ResultrMiTc[tbeidptwy~pesynonyms ExtensionurcebeBvanish#e*d1 IOErrorTypexIhPaWu^setlesdz IOErrorTypeusy IOErrorTypeauireorderArgOrderr gArgDescrlo+r2t9pvsEtLaSrZta ReportStartr}oblem ReportProblemyReplyat.xedpoly rec Extensioni5v<eCsJeQeXk_SeekModeiuylarfileFDTypesterflags RegisterFlagsczopsu'plr3s:iAvHeOdVo] ExtensiondsezExprror Exceptionelerror ExceptionPatrdpVwild$c+a2r9d@sG Extensionu]ndsk ExtensionCononeExprror ExceptiondolRealfworld RealWorldlGr'a.c5RealFracoNaUt\ RealFloatReadbehm_p+swritehmodeIOModeandle  HandleTypeReadSReadPr?eFcMReadPrecofdmetIOModeandle HandleTypeReadErReadertReaderTuffe r BufferStatentw2bmd>eEvLiScZeaFDTypeutf{fer RawBufferLexemeioRationalRationallLitdg~k2Lnt!y(p/e6s= ExtensiontSyZpaehso ExtensioneRangeqRangeQomRandomgen RandomGenQcsuQv ari?s&y-m4TokendFTokenaXlzsdikQuasiHsQNameemQSemnQSemNonisymTokendTokenP aehidkobpr]s0tuwCaJrQnXi_nfgmPWarningbnttextPutTextcLexemelicdomainLicenser#Ptr ByteStringtErL TextDetailseionc=dgptocolerror IOErrorTypeertyPropertyaram!Programcl<oCcJaQtXi_ofnmProgramLocationonfigurationProgramConfigurationrgProgArguc%t,ProducteDsKsRgh}icdj ProcessIDandle ProcessHandle__ProcessHandle__roupidProcessGroupIDmnnv/a6t=eDuKsReYGeneralCategorytuf|atype PrintfTyperg PrintfArgtyconiInfocfp:tt#y*PrettyrAoHcOeVs]sdokrr PreProcessorixFixityvarPathTemplateVariablePrecedence PrecedencecBh ilnhorsCeuOfVf]idxkhrayndlerPPSuffixHandlermicolonPPLayoutPprmPprMff"s)i0d7e>rEuLlSeZPPLayoutoolva}youtPPLayoutayoutPPLayoutnlinePPLayoutsmo"d)e0PPHsModeArch6Q4XArchlossitfixOperatorxtime POSIXTimelPoolyPolymorph#i*c1c8o?mFpMoTn[ebnitpsw Extensiongi.nvervarPathTemplateVariableamePkgNameva rPathTemplateVariabled5v<aCrJPathTemplateVariableckorPicoandlePHANDLErmrorPErroriIputeArgOrderar s'e.r5 PermParsersPsWi^oenldsx Permissionsenied IOErrorTypecXg+rtPatghqtern gmlsi%g,n3a:tAuHrOeVs] Extensionastzchfail Exceptionuards ExtensionPatQPathte mpl"a)t0e7 PathTemplatevRaYr`iganbul|ePathTemplateVariableGuardaSsStmtea)cefmwo_rtime ParseTimeParsere.s5u<lCtJ ParseResultkf ParseResulto~de ParseModeailed ParseResultrror ParseErrorParsectParsecTr0g7s>ShowOrParseArgsgl_lfemltl{istcomp ExtensionraphseparatorGeneralCategorye2m9o@dGeNModek_aekdrsytring PackedStringgePackageb:cdftid!ndex  PackageIndexe(n/t6i=fDiKeRrYPackageIdentifieri{xeddepsPackageFixedDepsbeistiBsuspi cio"u)s0 PackageChecknIePxWc^ueslasbzle PackageCheckscriptionPackageDescription PackageDBheck$ PackageCheckuAiHlOdViwbairpnwi~ng PackageCheckmpossible PackageCheckOpaque bcknIprts[tDv(e/r6flBaoNaUd\ecdjsqtxrings Extensionppinginstances  Extensionl"o)w0ArithExceptionhKeRrYa<cel]n%opsymbolGeneralCategoryunctuationGeneralCategorysOSu,m3b:eArHGeneralCategoryeiicpewn~seLicensetterGeneralCategoryrror IOErrorTypeomp ile!r(CompilerFlavorrCcJhQArchOSxlOSd{OrdaMbegammaOrdGAMMA_ OrdGAMMA_ringOrderingeta%OrdBETA_;OrdBETA_lTp[hbaiOrdALPHA_ OrdALPHA_a$etadfimonOptDescrfield OptionFieldisa&t-i4o;nBlIePvWe^leOptimisationLevellagsOptFlagsescrOptDescrrgArgDescrnjra tor Operatort7a>bElLeS OperatorTablebhp{unctuationGeneralCategoryandleProcessHandle__sdOSq+u2e9OpaqueePlWi^neelmsozdeModeReplycnameOccNamejectObjectaWefho1um$NumabPcdfill9mnoVp.rhstyahstrictStrictingMaybessigned GeneralCategoryu&c-h4t;hBiInPgW IOErrorTypeemta{lbcgoptimisationOptimisationLevelGuardConBodyp!DataRepa5r<sCeJPErrorp]tdikmriysationOptimisationLevele{s terminatio n Exceptionp'a.c5i<nCgJmQaXr_kfGeneralCategory SearchResulteionompatbinds Extensionorp his"m)r0e7s>tErLiScZtaihoonv ExtensionnaldifftimeNominalDiffTimethoderro#r* Exceptiona@yGoNuUt\ LexContextmspzlicitprelude ExtensionlagFlageNodeopy&d-e4s;tBCopyDestiu\fcfjeqrxing BufferModendsStmtrgArgDescrcCompilerFlavordataNFDataiJo)r0d7 NFDataOrdnQtXe_gfrmatl{NFDataIntegralstwtypedDecbsdOSteda tomi%c,a3l:lAyH Exceptionm^eeNamedsf4g#i lqsu NameFlavour NameFlavourpace NameSpace NameFlavour NameFlavoursNameIs NameFlavourl;aBvIoPuWr^ NameFlavourfzieldpuns Extension6naZe&ik^ouvarMVar# MVar#lt'aYv3a:rA#HMutVar#b`lgenabzytearray#MutableByteArray#rray# MutableArray#tip#a*r1a8m?tFyMpTe[cbliapsws~es ExtensiondnaoidMonoiddMonad cebfBi*prs|tLwri"t)e0r7 MonadWriterrSaZnash MonadTranstate MonadStateewsMonadRWSader MonadReaderl us MonadPluso1MonadIOiIxPMonadFixrirpowr~ MonadErroront MonadContePikjnuleModuleameModNameu l'i.a5n<dCaJtQeX UniversalTimefriyedrlsymbolGeneralCategoryetterGeneralCategoryjuli$a+n2d9a@yGDayModefojpqtxdescr MkOptDescrlagFlagc npsArchusTokenroMicros-s4a;gBeIMessageg5kprt#xybeMaybeimumoptimisation OptimisationLevelcnh/s6y=mDbKoRlYGeneralCategoryhuMatchqMatchQrayMArrayMape BuildTypefilefl ags MakefileFlagsi<cChJaQsXh_ Extension8uk|Archaeif=g"iYotOrderingcgs8wercaseletter#GeneralCategorys?oFfMpTr[ebciipswi~onArithExceptionoff ConsoleEventalb time LocalTimeuild%i,n3f:oALocalBuildInfobcfmnst~LitepPatExptaEe<iptuarray ListUArrayListTPatt$e+m2NodeExpsLsSeZrathaobvl}eListAssertableeuxOSLineb8n!separator GeneralCategoryo(LineNou?fFfMeTr[ibnigp BufferModeitLimittLiftenseLicensedemrGsubd irva&r-PathTemplateVariableaNrUy\Libraryrta{ltypesynonyms ExtensionirvarPathTemplateVariablep)l0LicenselDaKgRsYLFlagsaQfctxLexcemeLexemeontext LexContexteZsPte rnum&b-e4r;GeneralCategoryStmtExptjEithera*cmpsquareTokenarenTokenodeModeu rlyTokenr1r8o?wFTokenpXs_efcmotn{dtableLeapSecondTablebmnisTtyout LexContexte rver&s-i4o;nB VersionRanget[Lastgpuwa~gedef LanguageDefeExpelNodee i` l, w_a c d? e f h i l m nU oC q s t ut wM hT e[ rb ei Tokenn{ s a f e Tokenh y p e Tokene n Tokena f e Tokenu a l i f# i* e1 d8 TokenfJ Tokene\ wc tj yq px e Tokeno d u l e Tokene t Tokenf m^ n Tokenf% s t a n c e Tokeni, x3 TokenlS rH TokenTokenpe ol rs tz TokenTokeni d i n g Tokeno r e i g n Tokenl& x p o r t Tokens- e4 Tokena e[ oP Tokenf rg in vu i| n g Tokena u l t Tokent a Tokena l a s s Tokens e Tokens! Tokene3 i: sA lH iO Kleisling dn su i| g n a t u r e s  Extensiony Key#hu s t MaybecCompilerFlavorInteger#1368}a;dfgl+mno4p r sxIxcstricngIsStringtStrictharIsCharixOSr'IPrIOae2m rtu^aerlrsazyIOUArrayodiffarray IOToDiffArrayefIORefode"IOModerx>cEeLpStZiaohno IOExceptionrorIOErrortype IOErrorTyperrayIOArray a#cdf`i lrs^tv:aAlHiOdVa]rdgkurmyent IOErrorTypeInt #P1:3$68cem{p:rstokTokenetIntSete&p-DataRepr]tFrMIntPtridmklrLitapIntMapggrr3sectversionran ges! VersionRangeu:pAtHeOdV IOErrorTypeersazlIntegralrIntegerlLitonstr ConstrRepInt84Int64#Int64#2+Int326AInt16Int#teallnxcedDecldveflags InstallFlagsdpacka gein&f-o4InstalledPackageInfo_WInstalledPackageInfo_i}rstemplatesInstallDirTemplates InstallDirs:+::+:tia!l(q/u6o=tDeKGeneralCategoryiolInfoqInfoQxFixitycelnprFixityDirectionPatFixityDirectionFixityDirectionExpCone nx,o3u:tAoHfObVo]udnkdrsyArrayExceptiontIndentoherentinstance s Extensionp*p1r8o?pFrMiTa[tbeitpywp~e IOErrorTypeplortfForeignConfVaricitparams Extensionl2e9g@aGlNoUp\ecrjaqtxion IOErrorTypenoreHandlerblockFieldent Lexemeit"y)Identity6lrGrNaUy\IArray4sArch#Int84#Int64286Arch#Int326#Int16IntaN6b36eQ5o4p-4stDu"g)s0CompilerFlavormKlRHtmlHTMLagd*lntareeHtmlTreeble HtmlTable HTMLTABLEodeHtmlTreeeafHtmlTreei1r8v?aFrMPathTemplateVariabletntur|HtmlAttra3b2c0d/eo-f+g*i^(l'm&n&o&pX#qH"r8!s tuv0wild card%HsExpa7r>HsExpndoSpZHsOpakmreyHsCNamenbdgisafeHsSafetytcon HsSpecialConuar dedaCr*h1s8HsRhslJtQ HsGuardedAltsaknrgyedty HsBangTypeuyacfoptvarHsTypeupleHsTypeeHsTypedNs4i;gBHsDecleUc\lcHsDecluvn}HsTypeonHsTypeppHsTypepleHsExpcon HsSpecialCona p t@ y m b& o- l4 HsNamem rL iS nZ ga  HsLiteralpu r| i m  HsLiteralt HsStmte c i a l c o n  HsSpecialConf!e !HsSafetyt!y&!HsSafetye!h!iI!gP!hW!t^!se!el!cs!tz!i!o!n!HsExps!HsRhsc!c"d!u!p!d!a!t!e!HsExpe!c"l " HsConDeclo!"n("s/"t6"r="HsExpc1#n #o"u"vc"aj"rq"ox"p"HsQOpa"l"i"t"y"p"e" HsQualTypef"i"e"r"HsStmtp"HsQOpa#m#e #HsQNameo8#n?#oF#pM#HsQOp a:%f$i$la$nH$p!$r$t#v#w#i#l#d#c#a#r#d#HsPata#r#HsPatu#p#l#e#HsPate$c$HsPata($r/$e6$n=$HsPateO$gV$HsPatih$s$tt$HsPatt$HsPatn$r$r$p$a$t$HsPatf$i$x$a$p$p$HsPati%e%l%d%p%a#%t*% HsPatFieldp%r%s%tP%HsPatb%fi%ip%ew%l~%d% HsPatFieldi%n%d%HsDeclp%a%t%HsPate%n%HsExpp%HsPatp &HsOpa&e&&gv&w2&t9&y@&pG&eN&dU&e\&cc&lj&HsDecla}&p&p&HsExpm&e&HsNamea&o&d&u&l&e&HsModulet&c&h'HsMatcha7(e'i%'si't1'HsExpeA'rH'aO'lV' HsLiteraltp'HsExpc'o'm'n' HsSpecialConp'HsExpf't'HsExps't'm't'HsStmtt's(e (c(t(i(o%(n,(HsExpm>(bE(dL(aS(HsExpa*d*f*m *n>)r)t(v(a(r( HsImportSpech(i(n(g(a(w(i(t(h( HsImportSpecl(l) HsImportSpecr)p%)a,)t3)HsExpf)s)tO) HsLiteralpc)rj)iq)mx) HsLiteralt)d)e)c)l)HsDecli)x)a)d)e)c)l)HsDeclp)p)HsExpp*o*r*t&*d]*s2*p9*e@*cG* HsImportSpeced*ck*lr* HsImportDeclHsExpe*n*t*HsNameb*s* HsImportSpece+u*a*r*d*e*d+aC+r+h+s+ HsGuardedRhss8+HsRhslJ+tQ+ HsGuardedAltsl+ HsGuardedAltsn+e+r+a+t+o+r+HsStmti-l,oL,r/,u+n+b,c+o+n+ HsSpecialConi,n,d#,HsDecla6,c=, HsLiteralrS,eZ,ia,gh,no,e,i{,m,p,o,r,t,HsDeclx,p,o,r,t,HsDeclo,a,t,p,r,i-m - HsLiterale -l'-d.-u5-p<-dC-aJ-tQ-eX- HsFieldUpdatea/m4/n.tD.v$.x-p-HsExpo-t-y-p-e-s-i-g-HsExpr-t-s-p.e.c. HsExportSpeca+.r2. HsExportSpechK.iR.nY.g`.a.wl.is.tz.h. HsExportSpecl.l. HsExportSpecu.m.f.r.o.m.HsExpt.h/o.HsExpe /n/HsExpt"/o)/HsExpo;/dB/uI/lP/eW/c^/oe/nl/ts/ez/n/t/s/ HsExportSpecb/s/ HsExportSpeca0e"0o/HsExpu/b/l/e/p/r0i 0m0 HsLiteralcr0f.0a50u<0lC0tJ0dQ0eX0c_0lf0HsDeclly0HsDeclt0a0d0e0c0l0HsDecla2hQ2l2n1o0l1n0HsExpdw1nU1oD1s21t 1e1x1t1 HsContext HsSpecialConpK1HsOpa\1mc1ej1HsCNamee~1c1l1 HsConDeclo1u1r1f1l1a1g1s1 HscolourFlagsa1m1e2HsCNamea2s"2s)2d02e72c>2lE2HsDeclaX2r_2 HsLiteralps2rz2i2m2 HsLiterals2e2HsExpa2n2g2e2t2y2p2e2 HsBangTyped3t3y3 HsBangTypel4p4s03p3s<3oX3tH3HsAsstc_3HsAssocl3n3r3i3g3h3t3HsAssoco3n3e3HsAssoce3f3t3HsAssoca3t3HsExpp 4HsExpt4HsAltp4rM4u>4xE4OSiT4n[4tb4fi4tp4yw4p~4e4 HPrintfTypea4Archo4t4l4i4n4k4HotLinkk4e4d4b5u5i5l5d5i#5n*5f15o85HookedBuildInfoa5l5rb5ei5dp5ow5c~5u5m5e5n5t5s5 Extensioni5u5m5CompilerFlavorp5o5v5e5r6f 6l6o6w6AsyncExceptionc:6CompilerFlavordA8nS7r6sd6h6rp6ew6s~6o6l6u6t6i6o6n6 HasResolutiont6a6b6l6e6 HashTabled7w 7a7r7e7f&7a-7u47l;7tB7 IOErrorTypedZ7la7eh7Handle_(8p7r7t7y7p7e7 HandleTypeHandlero7s7i7n7 HandlePosnt7i8o 8n8HandlePosition_/8Handle__dH8oO8cV8k]8fd8lk8ar8gy8s8 HaddockFlags a=e?:h$:l9mu9pa9qR9r.9t 9u8a8r8d8Guarde9q8GuardQd9b9BodyOrderinga59p<9hC9Graph GenericQ'lh9License GenericM'o9b9a9l9f9p9a9c9k9a9g9e9d9b9 PackageDBl9a:g:s: GlobalFlagsc+:CompilerFlavornF:GeneY;l:p:tg:on:ku:e|:n:p:a:r:s:e:r:GenTokenParsera:r:s:e:r: GenParsera;n ;g;u;a;g%;e,;d3;e:;fA;GenLanguageDefr`;a =il;cs;Generic'<b<m<p!<q;r;s;t;GenericT'; GenericT' ExtensionGenericRGenericQ'< GenericQ'a(<c/<k6<a=<gD<eK<dR<eY<s`<cg<rn<iu<p|<t<i<o<n<GenericPackageDescriptionGenericM'< GenericM'GenericBGeneric'l=c=i=z#=e*=d1=n8=e?=wF=tM=yT=p[=eb=di=ep=rw=i~=v=i=n=g= Extensiona=t=e=g=o=r=y=GeneralCategoryd1>m=m>a >GAMMA_!>GAMMA_t8>s?> ExtensionField #JaIdIfHiEl0Co@r?u>n>c>d>p>t>r>FunPtrDece>p>FunDept>i ?o>r>Functoro?n?a!?l(?d/?e6?p=?eD?nK?dR?eY?n`?cg?in?eu?s|? Extensionan@eJ@o?m?r?@s@t?h?o?r?Rangee?n?r@t?o?r?RangeRanget@r@i%@n,@g3@PErrorRangeeQ@bX@s_@df@OScu@t|@i@o@n@a@l@ FractionallBrAu@n@d@o@n@s@y@s@t@eAm AProgramLocationaBeAm0Aa7At>AGeneralCategorytXAi_AmfAemA FormatTimeiAsAtAForestgAnAForeigndBfFBpAtArA ForeignPtrcAoBnBtBeBnBt#Bs*BForeignPtrContentsuMBnTBc[BtbBiiBopBnwBi~BnBtBeBrBfBaBcBeB ExtensionDeclBlBcBtBTypeCondCa CbClCeCFoldableaDe7DoACaHCtOCFloat#'DcCiCpCrCt|CoCkCTokeneCpCDataReprCiCmClCLitnCgCFloatingoCnDs DtDrD ConstrRepFloat#x>DiEDbLDlSDeZDcDifDnmDstDt{DaDnDcDeDsD ExtensionoDnDtDeDxDtDsD ExtensiongDFlaga3En EaEmEe!EFlagNames:EsAEiHEgOEnVEm]EedEnkEtrEFlagAssignmenteHl$GnXFr;FxEe%FiEtEyEFixitydEiErEeEcEtEiEoFn FFixityDirectiond,FFixedsBFtIFFirsta_FlfFiFqrFuyFoFtFeFGeneralCategoryzFeFrFeFpFtFrF FinalizerPtrnFvFpFtGr GFinalizerEnvPtre+GhGiGmGomGpFGaMGtTGh[GFilePathftGf{GsGeGtG FileOffsetoGdGeGFileModedGFileIDaGnGdGlGeHHandlelHdHFielddHeuHp=HaDHtKHFieldPatqbH FieldPatQx|HpHFieldExpqH FieldExpQeHsHcHrH FieldDescreIf&IgHeHnHeIr IiIcIFFFormati`Io2Ir9Im@IaGItNIFFFormatxgIenIduIFFFormatxIpIoInIeInItIFFFormatFDFdtIyIpIeIFDTypelJs JeJBoolFloat 1nQ6bQaPdPiPm#PnOozOp6OqNrTNxgJcMeMiKpKtJeJnJdKsJiJbJoJnJ ExtensionlJeJrJeJcJoJrJdKsK ExtensioneKd%Kd,Ke3Kf:KaAKuHKlOKtVKr]KudKlkKerKsyK ExtensionExpeKoKqKExpQrKtKfKForeigncKtKMessagesLtKcLeLfILsLuLcLc&Le-Ls4Ls;LExitCodeaPLiWLl^LueLrlLesLExitCodexLcLeLpLtLiLoLnL ExceptionoLdLeLExitCodetLeLnMt MiMaMl Mq'Mu.Ma5Mn_z(_e/_CSizeai_sJ_eQ_tX_CSigsetc_tu_o|_m_i_c_ CSigAtomict_i_o_n_ CSigactiono_r_t_CShorth`a`r`CSChara`iy`pj`t5`r<`dC`iJ`fQ`fX`CPtrdiff Extensiond`CPids`s`w`d`CPasswdfhlhm2fnaparau`n`t`s`Counts ConditionyadafwapFat1ao8aCopyDestrMaeTaf[aibaxiaCopyDestl~aaagasa CopyFlagseasataCopyDestCon deeefdihdncpcqcshbtbContr.btbContTo5blcsEcmLceSctZchacohcdocsvc Extensionlcececvcecnctc ConsoleEventConQPateccctcocrdp dudndc"dt)du0da7dt>diEdoLdnSdGeneralCategoryddntdd{dedxdConIndexTokenidvdadrdConfVargdConfigf`eudrdee BuildTypedeper"eo)eg0er7ea>emEeConfiguredProgramlgeanegues|e ConfigFlagsExpe)fienetereeeeeCondTreeoedeeeCondTreetfifofnf ConditionExpm+gp>fe"ginflOfeVfx]fComplexlufe|frfCompilerffifvfafrfPathTemplateVariabledf CompilerIdlfafvfogr gCompilerFlavorExpa2gTokennBgdIgCommande\hh5hlhpgrguxgig CommandUIegagdgygtgogggog CommandParseagrgsgeg CommandParseihsht#h CommandParseevTokenuPvoWvt^veevToken bc܀divl~m~n}p|rxsvtvTokenpxs*wyvnvcvevxvcvevpvtviwo wnwAsyncExceptionewo6wc=wAssoclwnwr[wibwgiwhpwtwwAssocownwewAssocewfwtwAssocrwtwaxiwownw Assertionfxpxrxexdxi#xc*xa1xb`xt=xeDxAssertionPredicatelgxenxAssertionPredicableaxixlxexdx Exceptionbxlxex AssertablePatb|cr|g{i {m{ryazoyw"yArrowaRzczlymypysytyzYye`yrgyony ArrowZeroType Extensionlyuysy ArrowPlusoynyaydy ArrowMonadoyozpz ArrowLooph!zo(zi/zc6ze=z ArrowChoicepYzp`zlgzynz ArrowApplyyzArray#zezxzczezpztzizoznzArrayExceptionArray#Archt{h{eD{s&{e-{q4{e;{ExpxK{cR{eY{p`{tg{in{ou{n|{ArithExceptiondD|o|p{s{Argsl{a{c{e{h{o{l{d{e{r{ArgPlaceHolderr|d$|e+|r2|ArgOrdereK|sR|cY|r`|ArgDescrhy|Archi|t|r|a|r|y| Arbitraryp|eD}l|t|Typei|c }e|d}NameIsa}t}i!}v(}e/} ApplicativeExpnR}dY}h}me}ol}ds}ez}IOModea}n}d}l}e} HandleTypey}Anyv}e}r}s}i}o}n} VersionRangeb~i~g#~oV~u/~o6~u=~sD~ SearchResultu]~sd~pk~ar~ry~s~e~PErrorglopWrt~e~r~n~a~t~i~v~e~ Alternativeeadye#x*i1s8t?sF IOErrorTypeh^aeALPHA_yALPHA_neNameIsAllrightsreserve dLicensecDr)e0p7DataRepoKnRsYt`rg ConstrRepx}OSdar#Addr#ttrÀsʀADDATTRSyclicsc cSCCs$o+l2u9t@eGs~tSiZmaeh AbsoluteTimeeekSeekMode:][]:]ǁ[::]*+::+:::*:)() V^V!SaCC~U3 F  V GC5>JP*j4s AҸtߴ|Sok(Ջn()b GenericTa Inta  IntegerDay6aa ra itaA MaybeGenericMa acagama   mGenericMa r[]a rma 9 uMaybea r[]GenericQa ()cba(,,) ()abArray ()ba(,) ()a[]  ()b[] Char[]Char[]_      w4Char[]a(,)[]Char[]W Char[]t(,)[]Char[]aOptDescraabbaChar[]Char[][]Char[]m l  50aOptDescraaBoolFlagBoolFlagaChar[]Char[][]Char[]() AbsoluteTime AllAnyArchArithExceptionArrayExceptionAssocAsyncExceptionBodyBoolOt < ;    s ' RJEDxk[6!|e]X/ibU70$  xq0X# BufferMode BuildFlags BuildInfo BuildType ByteString$        { y w v u t SKjcB:81-\2ECCharmCIntVCallconvChar z VnE?<9ClauseQ CleanFlagsCompilerCompilerFlavor CompilerIdCon!ConfVarConfig ConfigFlagsConfiguredProgramcConstr ConstrRepCopyDest CopyFlagsCountsDataRep;DataTypeDay Dec d[ZYX DependencyODiffTime DynamicErrnoQ Exceptionf ExecutableExitCodeExpTR?= ExtensionFDTypeFdRFieldFixityFixityDirectionFlagNameFloatForeign[YFunDepGeneralCategoryoGenericPackageDescription. GenericT' GlobalFlagsGuardU HaddockFlags HandleHotLinkHsAltHsAssoc HsBangTypeQHsCName5 HsConDeclHsDecl FHsExpJDA62*)'&%$#!HCA HsExportSpecF@ HsFieldUpdateE HsGuardedAlt HsGuardedAlts(D HsGuardedRhs HsImportDecl HsImportSpec74 HsLiteralpgHsMatchHsModuleHsNameHsOp8HsPat CB>=:93G HsPatFieldGHsQNameM;HsQOpH HsQualTypeHsRhs+EHsSafety HsSpecialConHsStmt,BHsTypeRI<I HscolourFlagsHtmlYyJ'&HtmlAttr HtmlTable  HtmlTreeZW IOErrorTypeh֟ IOExceptionigdcb\IOModeInfo InstallFlagsInt/( T"qkW;z2Int#Int32Int64Ul>IntPtr;IntSet  MLInteger LexContextLexemerhLibrary$License7LitsiLocalBuildInfo LocalTimeXn MakefileFlagsMatchfeMessageModeModule0 NameFlavourVNameIs NameSpaceNodeNominalDiffTimeOSOptimisationLevelOrderingu PErrorbPPHsMode PPLayout#PWarning PackageCheck PackageDBPackageDescriptionPPackageIdentifier3 E PackedString ParseError\ ParseModePat ihcS   PathTemplate PathTemplateVariable Permissions PreProcessor%% ProcessHandleProcessHandle__IProgram ProgramConfiguration `ProgramLocationProperty { !   'SRange RegisterFlagsResult SDistFlagsSafetySeekModeShowOrParseArgs SourcePos ]SrcLoc1StateOStdGenStmtg>)StrictStyleTestI G V-q TestFlags TestOptions TestResult( TextDetailst TimeOfDay kTimeZoneYTokenulTyConType"TypeRepUTCTime~ ZUnit UniversalTimemj UserHooks# Verbosity >mV{Version4 RXK VersionRangeFCBFWord#Word8 vA@=WordPtr< ZonedTime ay x @ ?              } g  u\~}|{(#"! tqpo~?>;74cb F E C B A / .     [c  ~ z S L G 0 N 8d direflags/imY X q Z r  : ,<res` stuwChar[]t TimeLocaleMaybe^baGen ()IO ExceptionIO5()IOWord8PtrFunPtr()IOaPtrFunPtrChar[]Char[]Maybe+Char[]Char[]PutTextKChar[]Char[]InstalledPackageInfo_MaybeeamswrRWST8 amswr'RWST bnsw'rRWSTa ()musParsecT J < f_BCharmusParsecTi _n`UCDoublemusParsecTaIntegermusParsecTb SourcePosmusParsecTDamusOperatoramusParsecT F yxpodEaswrRWS7 aswr'RWS bmusParsecT& bsw'rRWSQ smusParsecTFtmusParsecTGumusParsecTHDoubleIntegerEithermusParsecT]usStatemusParsecTU AChar[]musParsecTme^aMaybemusParsecTa[]musParsecT ct[]musParsecT] IntIntInteger(,,)IntSetBoolIntSet(,,)acvCondTreeaisSTUArray ameErrorTamrContT e amrReaderT5 amr'ReaderT amsStateT = amwWriterTastsParsecasttok GenParserYasttokOperator\[ausParsecH ausReplyYXbamKleislibmrContT bne'ErrorTb bnsStateT_ bnwReaderTd bnw'WriterT` bstsStreamPermParser% " cba WrappedArrowmusGenLanguageDef musGenTokenParser*Twsa(,,)b:()aLex^8()rLex}()sSTBoolaLex9 ByteString ByteString(,) l L2 ByteStringacc(,)g f IntInt(,) ]IntIntArrayIntInteger(,)^IntSetInt(,)IntSetIntSet(,) OrderingaLex: TimeOfDayInteger(,)aErrorMsgEithersa ParseErrorEitherZaa(,)2ab(,)_ak(,)~akMap!          4          R + * $ <ak2Map   amListTam WrappedMonadamtarCont \ arReader6 ar'Reader asST zasState ; awWriterba:*:ba:+: `ba ArrowMonadbaAssocbaConstcbaEither fbbaxbkMap  $  bnListTc brCont brReader' bsStateO bw'WriterP cba| yckMap I da(,)U dba } eiArrayeiUArray! eia       gInt(,) ga(,) gg(,) ii(,)ra(,)  sa(,)usState@ wa(,)`ws(,)abixsSTUArraysSTeisSTArraysST   eisSTUArraysSTasSTRefsSTckMapa(,)W 2 c'c(,)baeiUArraysST   vaLexaLex Char[]aLexh Char[]rLex;Int[]IntArrayType[]Type(,)TypeRep[]TyCon(,)aMaybe ByteString(,)aSeta(,)cIntMapa(,)1  dca(,) dma(,)T q[]a(,)V y[]acc(,)h ()IO      f Y X E B . qpG;6432/.-,+*)('&#   }zwvmHDCA@?<;:9)&t  \N'()P?() ParseResultj()Ptr()Q()ReadPxS()STM()f ()m : 5   L ? .ArithExceptionMaybeAsyncExceptionMaybeBodyQFBoolIO C ]GNn&$BoolMaybeBoolPprMBoolSTM BufferModeIO BuildFlags CommandUI BuildInfo[]/ BuildTypeMaybe' BuildType[]q ByteStringIO O&% ByteString[]  x p Of,1CDevIO CInoIO CIntIOPOLH!CModeIOTCPidIO&CSizeIOCSsizeIOMCTimeIOCULongIO%CharIO'CharMaybem CharReadPk aTCharReadPrecdChar[]] 1  @~j_WUTSMJB>10%$a}.  N+WA-,tsrClauseQ CleanFlags CommandUI ClockTimeIOPCompilerFlavorMaybe=CompilerFlavorReadPUConQA ConfigFlags CommandUIConfiguredProgramMaybeConstrMaybeConstr[] CopyFlags CommandUICountsIODecQ ZSEDCB DependencyReadPV Dependency[]3"DocPprM'|{z` `W<tsrqfCIDynamicMaybeE12FixedErrnoIO( Executable[]4ExitCodeIO{QExpQD yxw ZURQPJIG ExtensionReadPW Extension[]#uFDTypeIOIRFilePathReadPXFlagName[]5GenericPackageDescriptionIO!GenericPackageDescription ParseResultk GlobalFlags CommandUIGuardQ M HaddockFlags CommandUIHandleIOHandleMaybe` HandlePosnIO HsDeclPHsExpP"HsModule ParseResult`lHsNameP?HsPatP  HscolourFlags CommandUIHtmlAttr[] IOExceptionMaybeIOModeIOJInfoQ{Infom InstallFlags CommandUIIntIO IntMaybe  n Md3IntPIntPutTextInt[]  q PAg6" Intm% Int64IOSInt64Maybe o NeInt64[] r QhIntegerIO K)IntegerRatioLexemeReadPYLexemeReadPreceLibraryMaybe(LicenseReadPZLocalBuildInfoIOS MakefileFlags CommandUI MatchQTMessage[]ZModuleMaybe.Node[]NominalDiffTimeIO* PackageCheck[]5PackageIdentifierIOPackageIdentifier[]2 PatQ ~|YXWM PathTemplate InstallDirs PermissionsIOTPoolIO+ ProcessHandleIOHUProgramMaybeProgram[]vProgramConfigurationIO=QSemIOuQSemNIOvRangeQNLK RegisterFlags CommandUI ResultGeng SDistFlags CommandUI SrcLocP@StdGenGenStdGenIO,StmtQVOStrictQNStringReadP[ TestFlags CommandUI  TestResultIOThreadIdIOp-TimeZoneIO.TypeQ\OTypeRepMaybeTypeRep[]UTCTimeIO/UniqueIO0 VerbosityMaybe VerbosityReadEPVersionMaybeVersionReadP]\ VersionRangeReadP^Word8 ForeignPtr Word8IO$Word8Maybe Word8[]/ ZonedTimeIO1aArgDescra&aArgOrder$aComplexb3aConsumeddaDatahaDualeaEndoa FieldDescr7%aFirstaFunPtraGen o]aIO;        r"|G^DC321/.a][ZYWV>6-}wv'432aIdentitysaIntMap= 3                  z7aLastaMaybe  t_dD>aOptDescr654a OptionField*aP a ParseResult w^ PBaProduct}aPtrW87IJaQ]yaRatioaReadE[ Z 9aReadPV  ~}zyra`_aReadPrec  gfaSTMa SearchResultajaSeq  bkaSet edcla StablePtraSumaTreej aViewLmaViewRnaZipListfa[]-k >          |    polkji,ac^ afzam$     q p 7 6      &  {/^|{|actionCommand1b FieldDescrv :98b ForeignPtrFbFunPtr(LbGenhbIO S JbIntMap#    bMaybevbOptDescrb OptionFieldw bPtr91N.bQ_bSet) ( b[]s D *    \ bf, + bm8  bt- c Condition :9cGeneric' cIO^ xc InstallDirsH c[] J cfK cmr  d[]M dfN dm dir InstallDirs eIOe[]O emf[]P flags CommandParse flags CommandUIflags OptionField g[]Q h[]R i[]kSetk[]m GenericM'mInstalledPackageInfo_Q6m[]pkgMaybepkg PackageIndex0 Ifpkg[]r GenericQ'[ rIOrme d c b a =}sm~stPutTexttMaybeu[]] vertexSCCK vertex[]wmyMaybeM :) \XMLKJ3?=:30/+#"   urmlQOMHG)(#PatExpQChar[](,)Qb gfedcba(,,,,,,)[]wfedcba(,,,,,)[]vedcba(,,,,)[]u ProcessHandleHandleHandleHandle(,,,)IO=aaaa(,,,)mdcba(,,,)[]tCInoCDevFDType(,,)IOFaaa(,,)mcba(,,)[]seia IOToDiffArrayIO wsa(,,)medcbEithera akMapak(,)(,)akMapakMap(,)  " cd(,)bd(,)acdEitherbdEitherackMapbkMap(,)  c'c(,)b'b(,)ac'cEitherb'bEitheradc(,)db(,)adcEitherdbEithera akMapaMaybeakMap(,,)# (BoolFlagName(,)[] ByteStringChar(,)Maybe( ByteStringInt(,)Maybe) ByteStringInteger(,)Maybe* ByteStringWord8(,)Maybe+CharChar(,)[]4ExpGuard(,)Q HIntInt(,)[]IntSetInt(,)m PathTemplatePathTemplateVariable(,)[]LProgramConfigurationCompiler(,)IOProgramConfigurationConfiguredProgram(,)IO<TypeStrict(,)Q[ VersionRangeCompilerFlavor(,)ReadPQ VersionRangeCompilerFlavor(,)[]+Word8Word8(,)[]5a ByteString(,)IOa ExceptionEitherIOsa IOExceptionEitherIOtaInt(,)[]a ParseErrorEitherIOa ParseErrorEithermaa(,)mabEitherIO aeEitherm@ak(,)[]ba(,)[]rba(,)m bixIOUArrayIOei(,)[]ei StorableArrayIOKeiam eibmii(,)msa(,)mstCounts(,)IO@usCounts(,)IO valkey HashTableIO / wa(,)mcws(,)mdakMapa(,)mLibrary Dependency[]ConfVarCondTreeMaybe IntMaybePackageIdentifierPackageIdentifierIntInt[]IntArray(,,)IntMaybekeykey[]keynode(,,)IntInt[]IntArray(,,) key[]keynode(,,)IntInt[]IntArray(,) Char[]Char(,)[]Char[] Extension(,)[]|Char[]String(,)[]Char[]a(,)[]ConfiguredProgramMaybeProgram(,)[] HsImportSpec[]Bool(,)Maybe-HsType[]HsName(,)PNHsType[]HsQName(,)POPackageIdentifier[]pkg(,)[]aSeta(,)maction CommandParsea(,) CommandParse*Char[][]CompilerFlavor(,)[]IdentitystChar[]GenLanguageDefIdentitystChar[]GenTokenParserIntIntWord8 ForeignPtr(,,)&aSetBoolaSet(,,)IntInt[](,)akMapaMaybe(,)   BoolFlagName(,)[]PackageDescription(,) Dependency[]Eitherg[]f[]e[]d[]c[]b[]a[](,,,,,,) f[]e[]d[]c[]b[]a[](,,,,,) e[]d[]c[]b[]a[](,,,,) d[]c[]b[]a[](,,,)aIntMapaMaybeaIntMap(,,)yc[]b[]a[](,,) Char[]Char[](,)87Char[]Char[]EitherChar[]IntMaybe(,)aIntMapaIntMap(,)  xaIntMapaMaybe(,)  aSeqaSeq(,)aSetaSet(,) a[]a[](,) b[]a[](,)b[]b[](,) cIntMapbIntMap(,)  PackageIdentifier[]pkg(,)[]pkg PackageIndexEither Char[][]Char[][]Char[][]a[](,,,) Char[][]Char[][]a[](,,) BuildInfoChar[](,)[] BuildInfoMaybe(,)F()PtrIO.CCharPtrIOB CWcharPtrIOCChar[]IO:9871%IHG "!Char[] InstallDirsN=Char[]Maybe__Char[]QvLChar[]ReadPj RChar[]ReadPrecbChar[][]?-,~! V0pChar[]m{ ConfigFlags OptionField[]DocPprM[]ExitCodeMaybeIOyField[] ParseResultiHsDecl[]P@LocalBuildInfoMaybeIOANode[][] PackageCheck[]IO2PackageDescriptionMaybeIO PathTemplate InstallDirsIOType[]Q VersionMaybeIOVertexTree[]!Word8PtrIO'aChanIO$a ForeignPtrIOqp,)RPaIORefIOiaMVarIOkaMaybeIOwaMaybeSTMaMaybefaOptDescr[]aPtrIO lutsrqponlsr^ED54a StableNameIOma StablePtrIOnaTChanIOaTChanSTMhaTMVarIOoaTMVarSTMiaTree[]i aTreemo a[]Genna[]IO~m*%a[]Maybena[]Q a[]ReadP|{wva[]ReadPrecca[][]  hg+a[]fa[]m -acMaybeatfatmbMaybeIOT bPtrIO*b[]m bcMaybebtf btm c[]m9 e[]mflags OptionField[].kWeakIO) nodeSCC[]pkg[] SearchResultpkg[][]vMaybeIOvWeakIO- valMaybeIOkkey[]keynode(,,)SCC[]cbcba(,)awakMapak(,)(,)maIntMapaInt(,)(,)mbat'cMaybeei(,)[]mst(,)Maybem> vk(,)WeakIO, valkey(,)[]IOjChar[]Bool(,)MaybeIOoHsType[]HsQName(,)[]PPaMVarInt(,)MVarIOj PreProcessorLocalBuildInfo BuildInfoChar[](,)[]oTypeStrictChar[](,,)QuExitCodeChar[](,)IO$ExpChar[](,)QzHandleChar[](,)IOIntCCharPtr(,)IO:IntCWcharPtr(,)IO;PatChar[](,)Q}aChar[](,)ReadPuaChar[]EitherIO> acvCondTreeMaybeacvCondTreev Condition(,,)[]6  Executable Dependency[]ConfVarCondTreeChar[](,)[]Char[]Char[](,)IO<Char[]Char[](,)[]*Char[]a[](,)[]c[]b[](,)m VersionPackageIdentifier(,)[]Char[](,)[]Char[][]Char[](,)[]  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO      BuildInfoChar[](,)[] BuildInfoMaybe(,) ParseResultg Char[]InstalledPackageInfo_ PackageIndexChar[]InstalledPackageInfo_ ParseResulthChar[]MaybeIO@?Char[]Maybe InstallDirsK8Char[][]IOF Char[][][]Vertex[]Tree[]aIORefWeakIOaTree[]mn at'cMaybeausReplymConsumedm HsName[]HsNameHsType[]HsQName(,)[](,,)PK HsType[]HsQNameHsType[]HsQName(,)[](,,)PL Pat[]Char[]Char[](,)[](,)Char[]Char[](,)MaybeIOChar[]Char[](,)[]IOChar[]InstalledPackageInfo_ PackageIndexIO5 PatChar[]Char[](,)[](,)QaChar[]InstalledPackageInfo_ PackageIndexMaybeIO0 PathTemplateChar[] InstallDirsBoolChar[]TyCompilerFlavorChar[]CopyDestChar[]OptimisationLevelChar[] PackageDBChar[]k PathTemplateChar[] VerbosityChar[] lUzaChar[][Char[]Char[]  jSxChar[]MaybeChar[]y^8~N^3|h{7.h? shD^4'g1ߜ{S(ϛyQĚ7řoL!LLKKjK2KJJmJ)JIIGGGFFFGF.FFEE{E>EEDDC|>:>>=x=U=-=_5432-W--+++c+@++*****d*M*rarb rmarmb ambma resresba` tsaA cIOcIObPtra^ Char[]Char[]a_ Char[]a(,)[]Char[]Int hgfedcbaR gfedcbaQ fedcbaP ra5a4a3a2a1a edcbaO ra4a3a2a1b  SourcePosst SourcePos aaaInt aaak abaInt bbaInt bbak cbak dcbaN M ra3a2a1c ca(,)bInta ca(,)bkaW aMaybebaInt aMaybebak &BoolCharCharx BoolWord8Word8 BoolaInt Boolaa Boolak Boolba< ; CharCharChar{ z y Orderingaa    Word8Word8Word8 a ByteStringa aCharChar| aChara aWord8Word8 aWord8a aa ByteStringg aaChar} aaInt aaWord8 aaa!               aabaak aba@ ? > = baInt baa{  bak bbBool:bbInt bba w v F E D C B A 9cba L K J I H G cbbz ee'e propaa! propbb{ ra2a1d rrr rrr' rr'r sstA  Characc(,)Characcf Word8acc(,)Word8accg ca(,)ba2 1 cbEitheraInt cbEitherak da(,)daU qa(,)daV r'a(,)da  sr(,)sr' yacc(,)xacch dma(,)daT gca(,)ga  Char[]ak aMaybeaInt aMaybeak aMaybeba4 3 amba7 6 5 bMaybeaInt bMaybeak bmba8 cmba: 9 usIOusState 4()a /   ()b s 0    ()c BoolChart s r q p o n m l k j i h  BoolInt BoolWord8 Boola Boolb:Boolr  ByteString ByteStringf  ByteStringCharu  ByteStringWord8 CharCharw v CharInt  Exception Exception GenericTa  IOException IOException IntChar IntInt Int#Int#Int32key IntegerDay  ~ Word8Word8 aa         abw v u t 9ar as bBoolm l ba ~ z s 0 / . - , + * ) ( ' & % $ # "  Sbby x bw caS cb ~ } | S 0 dc dd ee' jik2k1  maY X qaZ qbZ qd ra \ [ <ra1e rb: rr rr' r'a  ss ua] uu ww  rca(,)drdca bmusParsecTaStdGena(,)StdGen asSTa ba(,)acbEithera b[]a(,)bj i  SourcePost[] SourcePos] a[]a[]a bIOaPtrInt+()IO Exception BoolMaybebm l Boolma Char[]a  Char[]t DocPprMa987MaybeGenericMa ProcessHandle__IOProcessHandle__}aGenInt aIO Exception aIO ExecutableHaIO IOExceptionaIOLibraryGaIOa aIOb aIO exceptionaMaybea aMaybet aPToken a ParseResultPErroraReadPInt a[]b8aca ama  amebGena bIOPool bIOabMaybe Exception bMaybea bQa_b[]a \ bfa bma r  bmbq p  cmbr dmd mGenericMa rGenericQa rIOHandlercr^ rma  9 =uMaybea aChar(,)Maybea aProcessHandle__(,)IOProcessHandle__|aWord8(,)Maybea ba(,)IOaba(,)Maybebk cb(,)ma b[]a(,)mbo n Char[][]CompilerFlavor(,)[]bactionChar[][]flags1Char[][]b5aPtrIOa Char[]Maybe[]b0BoolChar[]b VerbosityChar[]flags rcrbc^ w'sb(,,)wsa(,,)Q cba(,)N sb(,)sa(,)O usStateusStateU w'b(,)wa(,)P usIOusStateChar[]  bba[]8aIOHandleChar[]()b[]\ ErrorMsgChar[]Z aChar[][ bChar[]5qdt resb[]` ()IO VerbosityChar[]Char[]Y ()IOWord8PtrChar[]Char[]X  Char[]t[]] IntIOWord8PtraIO()PtraIOCCharPtrD1aIOCWcharPtr2aIOChar[]3aIOePtraMaybeaMaybeR bIOaPtrT S Jbnamd cIObPtr^ dtdt rmrme aIntInt(,,)IOWord8PtrChar[]a(,)[]Char[]W V  aOptDescrsetgetChar[]Char[][]Char[]dtmdt  w'sb(,,)nwsa(,,)ma be'EithernaeEithermb sb(,)nsa(,)m_ w'b(,)nwa(,)m` bbChar[][]CompilerFlavor(,)[]aIOIntCCharPtr(,)C.aIOIntCWcharPtr(,)/bChar[]Maybe0()IOChar[][]b[]na[]mc bbBoolChar[]flagsflags VerbosityChar[] () AbsoluteTime~ Addr#AllAnyArchArithExceptionArrayExceptionAssoc\AsyncExceptionBodyed QBoolL  / /Q ; N         4#     BufferMode BuildFlags <### BuildInfo %$#"! %$ ByteArray#!  ByteStringg f                      } | | { z y x v u t s r q p o n m l g UTSRQPONMLlkjihgfedDCBA@?>=<;:98877665544332210/.-,+*CCharECIntSSRQPOONMLKJIHGF.CModeVUTCOffPCSizeM.'! CULong%$#" CalendarTime9XWCallconv[ZYChar%{ w wvutsrqponmlkjihgfedcba`_^]\: CleanFlags {zyx#6#3#.Compiler 0~}|CompilerFlavor CompilerIdNMLKConZ!Config ConfigFlags## # ConfiguredProgram21Constr ^  ConstrRepCopyDestN>= CopyFlags ?#C#@#;CountsODataType Day  Dec DependencyDiffTimeDoubleDynamicErrnoErrorMsg Exception } Executable('ExitCodeExpgfR=FdFieldFixityFixityDirectionFlagNameFloatForeignGenericPackageDescription GenericT' GlobalFlags HaddockFlags 9###Handleg      HandlePosnHotLinkHsAssoc HsConDeclHsExpJE6,+**)('''&&%$#"! A HsGuardedAlts HsImportDecl10/.- HsLiteral32HsName<;:987654HsPatG>>=:HsQName IHGFEDCBA@?>HsQOpJ*) HsQualTypeLKHsRhsHsSafety HsSpecialConMHsType RRQPON HscolourFlags :VUTS###|Html [ZYXWWHtmlTree' IOErrorTypei]\ IOException ihgfedcba`_^IOMode InstallFlags mlkj#P#M#HInt          !   srpofInt#Int32/ Int64S@?IntPtrIntSet    Integer LexContextLibrary,+LicenseQPLitLocalBuildInfoD43  DCBA@?>=<;:98 %%#####y#r#l#e#R#K#E#>#+#$####xnc LocalTime   j MakefileFlags   A@ #)#&#!MessageModeModule NameFlavourWNameIs NameSpaceNominalDiffTimeOSOptimisationLevelPError PPHsMode$#"!PPLayoutPWarning PackageCheck% PackageDB50 PackageDescription]987643-+*(  HGFEDCBA@?>=<;:9876543210/.-,+*)('&####~#x#q#k#d#^#W#Q#J#D#=#7#0#*######PackageIdentifier .,RQPONMLKJI PackedStringWVUTS ParseError ]\\[ZYX ParseMode`_^Pat ihgfedccba  PathTemplatejB Permissionsk Pool utsrqponml PreProcessorxwv ProcessHandle}|{zyProgram <;:~ProgramConfiguration=<;:50`ProgramLocationcQSemQSemNRange RegisterFlags  C#w#t#o#j#g#bResult SDistFlags  )#]#Z#USafety[ZSeekModeShowOrParseArgs. SourcePosH F F @ SrcLocStateStdGenStyleTest @ TestFlags TestOptions TextDetailsThreadId TimeLocale TimeOfDayTimeZone TyConTypei[Y["TypeRep UTCTime Unique UniversalTimen UserHooks7     ###s#f#Y#L#?#2#%# Verbosity>Y >=<;:9876543210/.-,+*)('&%$#"! wvD;Version DCBBA@?X VersionRangeFFED<PWord32IHGWord8  VUTSRQPONMLKJB'%#WordPtrW ZonedTimeZYXa       ~ z z y x r q p ] Z W V U T L @ ? > 7 6 5 2 1 0 / .                         } g N : 6 + *             acch g f b% u u t t o k j L F E D C B A 8   N  [c d     V U T  dir              e        e'  exception flags 0g     get*ht ht1 ht2 html +i ! !     k        R - , + * ) ( ' & % $ # " key/ / / . nmlkpkg4 3 2 1 0 r    \ : 9 8 7 6 5 edcba`sF A @ ? > = < ; 8 7 edcba`set*stZtI H H H G F F F E D C B -uJ @ us v- , valnmvertexK wL xM ؑ~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[utG$[-P))('&%%$6665444~?=:CB?)~}|{zyxwvutsrqpon   =<{%(?>:9876540/&EEB##")('&uust SourcePosMaybe aaaReadP~}aOptDescrsetget[]*aaReadE65bacbafbam TestResultIO TestOptions[]()IOaPtrenvPtrFunPtrRQ()IOaPtrFunPtrPOChar[]Char[]Maybeaaasttok GenParser\aasttok GenParser[bastsStreamPermParseraaamusParsecTaamusParsecTgfedcbatfedcbatamswrRWST a edcedcbat ()musParsecTCharmusParsecTDoublemusParsecT IntegermusParsecT   amus OperatorTableamusParsecT'&  y(&$"dcaswrRWS Q ba`closemusParsecTdcbatendmusParsecTopenmusParsecTsepmusParsecTtmusParsecTDoubleIntegerEithermusParsecT Char[]musParsecT! a[]musParsecT)'%#a()sParsecacConfVarCondTree5acvCondTree876aixsSTUArrayameErrorTb @amrContT e =amrReaderT amsStateT _ amwReaderTd amwWriterT` astsParsec% astsStreamPermParserasttok GenParserZYausParsecausReplyYbamKleislicba WrappedArrowcbateia IOToDiffArrayeisSTUArraymusGenLanguageDefXWVUTmusGenTokenParser fedcba`_^]wsa(,,)7 )IntInt(,)TypeStrict(,) VersionRangeCompilerFlavor(,)Word8IntIOUArray  aErrorMsgEither9a RealWorldSTaa(,)aixIOUArrayakMap@                  I B < 4 $           R + ( ' & % $ # " ~ak1Map   amListTc am WrappedMonadarCont  <arReader ' asSTasSTRefasState O awWriterP b()aba(,)G baConst;baEitherS batbkMap  W I < 4 2 cba c'bac'b'adbadca} eIntUArrayei StorableArrayeiUArray eia   ejae'ia  ii(,)    K     sa(,); usStatevaLexvalkey HashTablenmlkjwa(,)astsParseca(,)" eisSTArraysSTeisSTUArraysSTInt[]IntArray #"! Type[]Type(,)()IO". M#####z#u#m#h#`#[#S#N#F#A#9#4#,#'####,&qpoH()Ptr L     ()mBodyQTSBoolMaybe4Bool[]0Boolt BuildTypeMaybeP ByteString[]-21CCharPtr MCWcharPtrChar[]m m        H G F E 99887744433/.-,,++*****))((''&%$#"! wwc`^Q QQQQQQQPP P P P PPPPPP2))Clause[]CompilerFlavorMaybeConQCCon[]XConstr[];DecMaybeDec[]ed[YQ>=< Dependency[]PDocPprM%tE12Fixed Executable[]PExitCodeIOrExpMaybeExpQz VURQPONMLLKKKJJJIIHHGFExp[]? Extension[]~ Field[]FunDep[]YEHandleMaybeb\HsAlt[]! HsBangType[]HsCName[]@4 HsConDecl[]HsDecl[] BA@HsExp[]C HsFieldUpdate[]A#" HsGuardedAlt[]D HsGuardedRhs[]E HsImportDecl[]HsMatch[]FHsName[]HsOp[]HsPat[]BG HsPatField[]CHsQName[]HsStmt[]$HHsType[]IHtml[]HtmlAttr[]JJHtmlTree[]WIntMaybebaInt[]LK!IntSet[]MIntegerRatio ponmlkjihgfLibraryMaybePLocalBuildInfoIO# LocalBuildInfoMaybe 987)#_#X#8#1Match[]Message[]ModuleMaybeNode[]ONPWarning[]PPackageDescriptionMaybePackageIdentifier[]QPatQ ~}YYXWVUTSPat[]SRQ PathTemplate InstallDirsNKProcessHandle__MVarProgram[]#RangeQZ RealWorldMutableByteArray#.Stmt[]UTStrictQ[Test[]VTypeQ Z\\[XPBType[][ZYXW"!TypeRep[]VersionMaybecWord8 ForeignPtrEWord8Ptr '&%$##""!!  Word8[]\aArgDescraArgOrderaChan)('&%$a CommandUI*aComplex432aDual>aEndo?a FieldDescrv CBAaFirstDaFixeda ForeignPtrQOJIHGFaFunPtrNMLaGen{ ! oSaIO,            "w]\[ZYX~}}|{zyxwvutsaIORefaIdentitya InstallDirsH }SaIntMap5A = ; 3 #                           |{zyx aLastaMVar aMaybe ^  H F  ua OptionFieldw aP^a ParseResult%aProductaPtr$T ~pon =<;:98765432100//.-,+*)(RPaQ_^]]aRatioqaReadEtsraReadPZ 987~}|{zzyxwvuaReadPrecaSeq aSetC ) (    a StableNamea StablePtraSumaTChanaTMVaraTreeaZipLista[] s ` _ R Q P O M J E D : 9 *                        \  uq~}|{zyxwvutsrqqppoonnmmlkjihgfedcba`_^] acaf N K , + am    5 atY X F 8 -          a1me d c b a a2md c b a a3mc b a a4mb a a5ma bGenhbIO ]\Exwb InstallDirsH bIntMap= ; 3 1    bMaybebPtr?>2bReadEbReadPb[] n i R Q P O M J ? > : 9 6 5  wvutsrbcbfN K bmbt@ 7 c Condition::9cGeneric'gcIOxc[] R Q P O M wvutscfN closeReadPd[]R Q P O wvutdmdir InstallDirse ForeignPtrKe[] R Q P wvu endReadP{envPtrRQf[]R Q wvflags CommandUI10/.-,+g[]R wgcht[]m GenericM'hmInstalledPackageInfo_m[]Q Q mtopenReadPpkg PackageIndex0 Ifpkg[]r GenericQ'irm sMutableByteArray# sepReadP|stIOstPutText@t[]] tok[]ZvWeakvertexSCCvertex[]x[]h 3(dcb\[[ZZYYZYX:9876543210/.-,+*)('&&%%$#"!      ?d~}|{zyxwvutsrqponmlkjihgfedcbaa`_^L]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:987665543 tsYEDCAfeZB-wwa(,)m gfedcba(,,,,,,)[]fedcba(,,,,,)[]edcba(,,,,)[]amusParsecT[]dcba(,,,)[]cba(,,)[]wsa(,,)m8 key[]keynode(,,)[]dc(,)db(,)a  BuildInfoChar[](,)[] BuildInfoMaybe(,)PackageDescriptionGenericPackageDescriptionEither(,)# BoolFlagName(,)[]CharChar(,)[]ExpGuard(,)[]IntInt(,)[] PathTemplatePathTemplateVariable(,)[]TypeStrict(,)QuAATypeStrict(,)[] VersionRangeCompilerFlavor(,)[]PWord8Word8(,)[]aInt(,)[]  aeEithermak(,)[]    akMap[] ba(,)[]batceInt(,)[]   ei(,)[] e'Int(,)[]      e'i(,)[]  sa(,)m= valkey(,)[] wa(,)mLibrary Dependency[]ConfVarCondTreeMaybe.Char[]Char(,)[]Char[] Extension(,)[] HsImportSpec[]Bool(,)MaybeHsType[]HsQName(,)[]aGenInt(,)[]aMVarInt(,)MVar Char[]Char[][]Char[](,)b(,,)[]Char[][]CompilerFlavor(,)[]TypeStrictChar[](,,)IntCCharPtr(,)IntCWcharPtr(,)Char[]Char[](,) Y Y 3*('vvChar[][]Char[](,)l l 6544 BuildInfoChar[](,)[] BuildInfoMaybe(,)3/()IOMaybe- , ) ()PtrPtrChar[]InstalledPackageInfo_Char[]Maybeb\`Char[]TreeChar[][];:21&%$      QQQQQQQQQQQQQQ PPP.    ZZYXXK c5('&%$#.ClauseQ[]ConQ[]DDecQ[]TSEBDocPprM[]ExpQMaybeExpQ[] HsExportSpec[]MaybeHtml[][]JMatchQ[]RPackageDescriptionMaybeIO#PatQ[]StmtQ[]   Stmt[][])StringTree[]TypeQ[] Type[]QEDCBVersionMaybeIOa FieldDescr[]aGen[]aIntMap[] aMaybe[]aOptDescr[]aPtrIOEDaQ[] aReadP[]aReadPrec[]aSCC[]aSet[]aTree[]a[][]i,+*a[]ma[]taftam[]/.-ammamtatcactionCommand[]*dtmflags OptionField[]pkg PackageIndexMaybe3###{#v#n#i#a#\#T#O#G#B#:#5#-#(# #####"! EDDCC*asttokOperator[][]ExpGuard(,)Q[]TypeStrict(,)Q[] PreProcessorLocalBuildInfo BuildInfoChar[](,)[] 98A<;:9)#TypeStrictChar[](,,)[]ExpChar[](,)[] HsBangTypeHsName[](,)[]PatChar[](,)[] acvCondTreeMaybeacvCondTreev Condition(,,)[]  Executable Dependency[]ConfVarCondTreeChar[](,)[].Char[]Char[](,)[]#P BoolaaaChar[][]Char[](,)Char[](,,,)[]Char[][]Char[](,)[]  BuildInfoChar[](,)[] BuildInfoMaybe(,)IO ##}#p#c#V#I#<#/#"## Char[]InstalledPackageInfo_ PackageIndexChar[]MaybeIOChar[]Maybe[]6Char[][][]StmtQ[][]ausReplymConsumedmTypeStrictChar[](,,)Q[]ExpChar[](,)Q[]QPatChar[](,)Q[]Char[]Char[](,)[]Maybe PatChar[]Char[](,)[](,)[] PathTemplateChar[] InstallDirsBoolChar[] CompilerFlavorChar[]CopyDestChar[]OptimisationLevelChar[]  PackageDBChar[] PathTemplateChar[]   VerbosityChar[]  aChar[]\Char[]Char[]Char[]MaybeChar[]aIdentity()Char[]ParsecT |qf[PA6+  g\F1&dE6 vbLA6+ mszdYJ9$|dR<1& uYhQ*   y f ? 0 !     j K <                  |qb`9"E6 shQB7(xiZK$}j_L3  fM4$ jI+ uVG3rP. _(fR@.yaI>3(pYB dQF7,eH'ynXMB3j3vgRG<)zcE:/$w8sh]RG3  uj_J5  paP6tcO;)wlaV9.#kT4odA"nI. rgI#xi2sbQA0{hK8!qf[E:/tiSH2'tQ3~[@% x_@,whYJ3 }iUA-whS@/ {j_TI:*|qf[PE:/ uf[PE:+ vk`H0 sh]R8${lUJ:}h]F;,tT4!o,dB( nX>,{]I1ti^O8! i3eJ8nZ>mM9'vdH0~e> g>$aFjH)sSB#ueS:pQ3!o<tE.jJ|5# ucH}kQ=ҿtdH6$׾žcIٽɽ~fN8Ĺ{M7׸ŸtVB.޷ķzfR>*Զ¶fT8$̵{aD'Ŵ{_@#vW;Ȳzo`QB+ֱDZv_O<-ְð{hYN8- үǯrbQF6'ٮήî`QB+ݭǭoYH,ͬ¬y`G0 ޫ˫b@ҪS$c8ɨoIاuTB) ڦYNC0%إť_D$ ʤwdN'ߣ~dN,բiK)١~gE. ֠ ujVK)˟|eZO@1ݞ˞|bWB-՝Ým^SH)՜ƜhQB3}nC$ߚԚŚufH-"ٙ˙xmbWLA"֘{\;(}ncXA&ؖɖiP@0%ەЕŕ~l]K@*ٔɔzjX=# ͓ؓ~lZOD9%ђp^L:/  ב̑yncXMB+ ʐ}rgMB7,ҏǏpaRC4Ҏyj_TB2#̍{lA6،͌uj_4)ϋċ|qf[PE. Պʊ}ncPA6+ ։ˉyncJ5* ڈt؄tY=* ̓ubO<#҂ÂyncXI:+Ɓt^I>.#̀|cJ1" dUJ6+ ~~~~~[~K~@~5~#~~~}}}}}}}}}}_}T}I}:}+} }}||||||||{|p|e|Z|@|.|||{{{{{{{{r{[{P{E{:{+{{{zzzzzzz~zkz`zEzz zyyyyyyvykyZyCy8y&yyyxxxxxxjxXxMx*xxxwwwwwwwww{wpwZwOwDw-wwwwvvvvvvv}vdvMv:vv vuuuuuuuujuNu8u!uutttttt|tqt]tBt't tsssssssus^sSsHs=s2ssrrrrrrfrKr@r&r rqqqqqqqqmq[qEq3q#qqppppppppypcpXpBp7pppoooooooxomoboWoLo:o/ooonnnnnnnvngnXnIn0nnnmmmmmmm~msmhmQm/m mlllllTlEl6l!l lkkkkkkkkukjk_kTkIk>k3k(kkkkjjjjjjjjjjzjojTjIj9j.jjjiiiiiiwiYi:iiihhhhhhhhh|hjh_hThAh2h'hhhhggggggggggpgQgBg7gggfffff^fJf&ffeeee~ejeFe2eeddddddvdgdXdId:d+dddccccc]c?c+cccbbbbbrb^bJb6b$bbaaaaaaeaZaFa"a````````y`n`O`D`9`*```_________r_W_L_A_6_+_ __ _^^^^^^^j^_^P^E^6^ ^ ^]]]]]]]]{]p]e]V]K]*]]]\\\\\|\a\K\@\%\\ \\[[[[[[[[}[r[g[S[D[2[[ZZZZZZmZWZGZ7Z,ZZ ZYYYYYzYhY]Y>Y&Y YXXXXXXxXfXTX=X+XXXWWWWWWfWLW=W+WVVVVVVoV`VNV8VUUUUUtUWULU5U*UUTTTTT_TMT8TTSSSSSxSdSGS*SSSRRRRR_RTRIR(R RQQQQQyQnQ]QGQ#QQPPPPPrPZP;P0P!POOOOOOnOPOEO.OONNNNN!NNMMMMMMMyM`MKM:M/M$MMMLLLLLL{LdLYLNL?L0LLKKKKKoK`KLK*KJJJJYJ1JJJIIIIIIuIdINICI0IIIHHHHHiHWHHH9H*HHH HGGGGGGGiGZGOGDG5G*GGGFFFFFFFlF]FJF/FFEEEEEEEEEEExEiEZEKE@@????v?_?>? ? ??>>>>}>r>g>V>E>4>#> >=======w=l=M=6= ==<<<<<<<s<\<M<><3<$<<<;;;;;;;;l;a;V;E;2;";;;:::::w:b:P:-: :99999999x9_9>9%9988888888l8N8;8(88877777777~7d7U7J797*77766666666s6a6V676655555555v5c5P5=5&55544444~4g4>443333333|3q3Q3:3'3332222w2U23221111g1.11 100000000{0j0Z0I080#000//////v/k/D/0// //.......q.L...-----M MonadContmV MonadWriterm MonadWriterw MonadWriterm MonadWriterwMonadmStreammStreamsStreamtString MonadStatem MonadStates7856 MonadStatem MonadStates3412uDataamDatadtDataalDatadhGenericQ MonadReaderm MonadReaderrG8 MonadReaderm MonadReaderrTypeablerGenericQ1EqkeyOrdk2Ordk :OrdkOrdkOrdk:Ordk)Eqky Ordk0OrdkOrdk Ordk StringOrdk Ordk Ordk  OrdkZFlagEFIxiMArrayaMArrayeMArraye'MArraymj k IArrayaIArrayeIArraye'IxiPIArrayaIArrayeIxiRIxiMArrayeMArraysQIxi. / IArrayaIArrayeIxiOIArrayaIArrayeIxiSIArrayaIArrayeIxiTIxiMArrayeMArrayszDatad Typeable1t|Datad Typeable1tyDatadMonadm Typeable1t%ArrowaStrategy Strategy&Arrowa] Arrowa=ShowaTestablepropK TypeableaTypeablebvDataa Orda\EqaStrategyMonadm MonadPlusmTypeableaTypeablebMonadmTypeableaTypeablebf g Monadm` a MonadmForest  MkOptDescrSFlags  MkOptDescrOptFlagsc e _ ForestBDACMonadmMonadmMonadmMonadmMonadm ShowSfrDataaOxGenericQTypeableaTypeablebMonoidm TraversabletFoldabletMonoidmkDatadnDatadjDatadMonadm.Y     Applicativef ? Applicativef Ordk [ FoldabletJh FoldabletHd FQOrdkEP Monadm MonadmFoldabletMonadmFoldabletMonadmMonadmMonadm8Ordk7 Strategy  Strategy TraversabletG Functorf ApplicativefuOrdaOrdbMMonadm Streams Streams:ShowaTestableprop< ArbitraryaEqbShowaOrdk2Ordk9 ArbitraryaEqaShowaKeyFoldabletIKf j t Ordks 8Ordk'Eqk&7Keyw Ordkv Foldablet n ? TypeableaTypeableb-OrdkijhX.,Key KeyGenericQkGenericQGenericT GenericQString7FFoldabletFoldablet8G,>J   FilePathStringFilePathStringStringStringStringOrda OrdaOrdk Ordk oStrategynStrategykStrategy|jIxbStrategy  MonadPlusmGenericQUMonadmFoldabletMonadmMonadm TraversabletMonadmwMonadmvMonadm MonadPlusmTypeableaTypeablebMonadmTypeableaTypeableb  MonadPlusmGenericM MonadPlusmGenericMlMonadmGenericMpqDataa MonadPlusmoDataaMonadm}MonadFixmMonadmMonadm1  ApplicativefFoldablet0  Applicativef Traversablet\Datad%GenericFoldablet!<StreammStreamsNumaOrdaStringNumaOrdaStringGenericQOrdk Ordk Key b 65dGenericQMonadmGenericQGenericQ Ordk c g <e i t@ I \6EX s   q ReportProblem ReportStartReadS KeyKey9KeyKeyKeyKey(9Keyx Key/Key KeyKey KeyKey Key KeyKey  IOError6  LeapSecondTableLeapSecondTableLeapSecondTableE;>=? `? [W r #( I:String9StreammStreamsString SHNLIDataaEqtStreammStreamsStreamtStringStrategy String( ReadPStringFilePath_ StringRealaReadSReadS~MonadmeY Storablea=Ordk%ZDataxTypeabley MonadWriterm MonadWriterw(YMonadmiTestabletStreamsStreamtStringAssertionPredicabletStringStreammStreamsStreamtString% AssertionPredicablet AssertionStringyLiftt AssertionPredicabletAssertionPredicate  Assertablet Assertion>GenericQ3 MonadStatem MonadStates/StreammStreamsStreamtwMonadmTypeableaTypeableb MonadPlusmGenericQy{uw| Packagepkgx Packagepkg+PackageFixedDepspkg{ PackagepkgStringPackagepkg ? Ordk Ordk: OrdkMonadmOrdkMonadmOrdkOrdk Ordk Ordk&(RIntegraliTIntegraliMUIntegrali)*+,-.HTMLhtmlString*  HTMLTABLEht1 HTMLTABLEht2M  HTMLTABLEht Randoma RandomGeng  RandomGeng Randoma RandomGeng$  RandomGengW RandomGeng  Typeable exception0 1 IArrayaIArrayeIxi MonadErrore MonadErrorm |IntegralbStrategyEqbMonoidb MkOptDescrO lIntegralaStrategyStrategyTypeableaGenericQStrategyIntegralaShowSNumaRealaShowS ShowaShowS RealFloataShowSIntegralaShowSStorableaOrdkNFDataa }TypeableaTypeableb IntegralbNuma  FractionalaIntegralb"ShowaTestableb   HTMLaHTMLb FIntegralbRealFracaOIntegralaNumb FractionalbReala ?IntegralbReala4Enuma RealFloata Realax}OrdaNumaMonoida(TkIntegrala FractionalarFloatinga BitsaEqaShowah ArbitraryaOrdaShowaOrdaDataaOrdaEqa4Dataa35EnumaIntegralaQRealFracaRational$ & EqaShowa Assertion{  RealFloataAIntegralbReala)Integrala RealFloata NumaNFDataa Fractionala #$9qFloatingaEnumaBitsaZC TypeableaTestablea TestableaC RealFloataIntegralaF  HasResolutiona R S T | Bitsa BitsaKey2 Storablea:A RealFloataMEnumaDataa{Bitsa!awGenericQHTMLa TypeableaDataaDataaDataaNumaReadSStringStringStringcdefg RealFloataNumaIntegralaKBitsa;DoneNFDataaStrategyn)Strategy[5 EqaFoldableteiDataaJ Monadm Functorf  ApplicativefStorableaStorablea/\6 EqaOrdaEqacEqa`EqaStorablea2Enuma@  ADDATTRSa>TextaString ShowaString/PrettyaString#PpraStringDataaString( Forest DocsEqa 3; OrdaOrda Orda Orda  +" ORealaRationalaStorableaEqaStorableaEqaStorablea =TextaDocShowaDocPpraDocNStreammStreamsMonadmTypeableaTypeableb;i\ Testablea Showa .Storablea SampleVar  ArbitraryaTestablealoLK2 RealFloataIntegralbRealFraca' RealFloataD RealFloataFlagFlag    s67Z4 ',b )_a d;PHANDLEPHANDLE PHANDLEu , Ul= [ \ x  String Stringu &~ProgArgProgArgString!FilePathPPSuffixHandler"FilePathPPSuffixHandlerFilePath:IJInstalledPackageInfoFilePathFilePath}ProgArgProgArgStringHInstalledPackageInfoFilePathString StringFilePathFilePathFilePathbeFilePathFilePathFilePath|FilePathStringFilePathStringFilePathStringdFilePathFilePath) FilePathString FilePathHookedBuildInfo StringFilePathString`String InstalledPackageInfo"#$%FilePathFilePath8 K) h n L  Args 'ArgsHookedBuildInfo Args &2ArgsHookedBuildInfo Args ArgsHookedBuildInfo Args ArgsHookedBuildInfo Args ArgsHookedBuildInfo Args ArgsHookedBuildInfo Args ArgsHookedBuildInfo Args ArgsHookedBuildInfo Args ArgsHookedBuildInfo Args ArgsHookedBuildInfoa %ArgsStringPPSuffixHandler HookedBuildInfoLRational POSIXTimeX ShowS CV T U  ~ 1)Doc 9 StringStringRationalPico ParseTimetReadSString FormatTimetString ParseTimetString ParseTimetString  ParseTimetString Typeable exception  b{FlagpFilePathFlagmnPath(0PrettyaStringDocString xPathIak=_ 4C?L%T9String8StringStringStringM HsContextd HsContext HsContext# HsContextv |}9Line z{8Column Line ColumnString ~ SourceName  SourceNameyMonadm+NOFlagMFlagIFilePathFlagX StringJ FlagFlagFlagFilePathFlagFilePathFlag 3FilePathFilePathFlagFlagAssignmentString( HFilePathGFilePathD ProgArgLString  m!FilePathFilePathStorableaStorableaStorableaStorableaStorableaStorableaStorablea o FilePath AWDNameExpQNameWNameStringStringStringcdrabs`NameOccNameModNamePkgNameStringOccNameStringModNameString FilePathStringu FilePathString< , FilePathInstallDirTemplatesStringFilePathInstallDirTemplates StringPackagepkg  .s  L7FilePath"PPSuffixHandler#FilePath- FilePath PPSuffixHandler%PPSuffixHandlerPPSuffixHandlerPPSuffixHandlerFilePathu ~ FilePath t0 StringFilePath9QFlagStringStringFilePath StringGFilePathPPSuffixHandler  rstuString1PrettyaString; :Indent  LineNoString] K  POSIXTimeModNamePkgNameNameString(DocNameg)Doc+< uvString*+Flag%&FilePathFlag  BO  ]FilePathString!n String AFilePathInstalledPackageInfoFilePathInstallDirTemplatesPatQExpQ~StringVE RealFloataNNuma" QRVW0 RealFloata}bNOU ; @ A B C  !"Q\]ODoc !4j GR # B Monadme #  StringYM  mStrategysDataaStrategy}Strategyd 7. ReadaReadSStringZ [ Storablea\ X ShowaShowS RealFloataB  Key KeyEnumayBitsaA L  *Doc Precedence LineNo$Doc Precedence9     IndentStringwyPico N O P Q R S fOPQR^_`  Doc PrecedenceQ ConIndex F LYs StringgD MonadmC MonadmIArrayaIArrayeIxiShoweShowiShowS+G   LineNoStringLineNoStringLineNoStringq LineNoString^ LineNoReadPStringX LineNoString LineNoStringNameStringH  PrecuTypeQStorableaDocNDoctStreammStreams!&Doc Precedence]8 KeyMonadmKeyKey Key Key  34Storablea5Storablea6E   Arbitrarya  FlagFlagFilePathFlag,IOError$IOError.IOError%57>FJL[iIOError+/IOErrorString-FilePathIOErrorq FilePathIOErrorString#'IOErrorString&IOError%FilePathIOErrorb#)IOError68?GKM\jFilePathIOErrorString   HTMLa' ( ) 2 3 4 F G H m n o |    6 7 8 T  !/01q~rs}~-./456HIJPQRefguvwhij567BCDXYZ#$%-./01289:BCD_`abcd~   ()*1UVWFlagFlagFilePathFlagv  HsContextn HsAsst|  HsContextt w  HsContextx~m(/16tg0 norsJiv EQSRq\{KU,G+-*PchZ  { URLShowa-/ 0` HPrintfTyperStringString. StringFlagFlagFlagStringFilePathFlagfhFlag<v VFlagString} Doc FlagStringLineNoString     v + 9 OTFieldExp"Doc String FilePath k$IOErrorQq[k String m.TypeableaRPNO/Typeablea DocPackagepkg h StringConIndexZConIndex4XStringStringStringString< eStringp`qFlagaFlagcFilePathFlaggFilePathFlagDataaFConIndexEIHStringDStringKIStringMFilePathEProgArgN.String  FilePathFlagAssignmentFilePathStringStringFlag/FlagFlagFlagFlagFlag ,-Flag FilePathFlagTestableaString StringStringInstallDirTemplates   zFlagString String  Flag Flag FilePathFlag ShowS g  i j ]^c ;Y   J& ( * ? r5U&+(*X*+-./1359:;<>?BIJLVWHIYZabce f [Docd \StreammStreams FormatTimetStringh  7NameStringDecQNameStringTypeQvNameString) * + , - *+,-./0  ^  pqstFD$ 2  CStatFDFDFD    7BFDFD>  wCString x CStringLen  j\_:q`r[*lKx y -cd 6@TO]^fg^ D L YZHIraIb@  X IH T ~JKK{9Z .JI-  Z[\]Z45  xynf StringFilePathT StringString  String Flag FilePathFlag ShowS* ReadSi3 TestableaNuma'String  String   ShowaString ShowaString2 DocD5 Monadm MonadPlusmFilePathStringTestableaString=QuasimStringZStringFilePathm Doc  HasResolutionaString$FilePatho^YTYXf" # DoneFoldabletMonoidmP  Typeable7tO Typeablea Typeable7tN  Typeable6tM Typeablea Typeable6tL  Typeable5tK Typeablea Typeable5tJ  Typeable4tI Typeablea Typeable4tH  Typeable3tG Typeablea Typeable3tF  Typeable2tE Typeablea Typeable2tFoldabletMonadmMonadm Traversablet  ApplicativefFoldablet  Applicativef TraversabletFoldabletOrda FoldabletNumaD  Typeable1tQ Typeablea Typeable1t FoldabletAV Foldablet Foldablet MonadPlusmx FoldabletMonadmv Monadm Traversabletn AlternativefFoldabletz  ApplicativefFoldablety  Applicativef TraversabletFoldabletIMonadm{DatadMonadm Typeable1t MonadPlusmTypeableaTypeablebT MonadErrore MonadErrorm ! MonadmDataaMonadmMonadm MonadTranst MonadmMonadmTypeableaTypeableb;Quasim  MonadPlusmMonadmMonadm Monadm~ MonadWriterm MonadWriterw7 Monadm [Monadmg  MonadWriterm MonadWriterw@B  Applicativef  Applicativef Applicativef  Applicativef Alternativef  AlternativefS  Alternativef[DataaxTypeableaTypeablebETypeableaTypeablebDataa Typeable2tG Typeable2t Typeable2t'Dataa Typeable1tF Typeable1t Typeable1t'IxiMArrayaMArrayeMArraym IArrayaIArrayeIxiIxiMArrayaMArrayeMArraymyIxiMArrayaMArrayeMArraymWIArrayaIArrayeIximIxiMArrayaMArrayeMArraym"IArrayaIArrayeIxiMIxiMArrayaMArrayeMArraym\]IArraybIArrayeIxiMArrayaMArrayeMArraymtuIArrayaIArrayeIxiMArraybMArrayeMArraymCDIxiMArrayaMArrayeMArraym89IxiMArrayaMArrayeMArraym:;<IxiMArrayaMArrayeMArraymIArrayaIArrayeIxi-.IArrayaIArrayeIxi IArrayaIArrayeIxi IArrayaIArrayeIxinIArrayaIArrayeIxioIArrayaIArrayeIxi IArrayaIArrayeIxiArrowaArrowa  ArrowChoiceaArrowaArrowa ArrowChoiceaArrowaArrowa ArrowPlusaP  ArrowChoiceap ArrowChoiceaq ArrowApplyap ArrowaArrowa e ArrowLoopaListAssertablet AssertionPackagepkg+  HTMLTABLEhtONumiNIntegralaMonadmMonadmStorablea ShowaShowSStorableazOrda NumaMonoidaYjkms ^_`EFGHTMLaC       7AUEqa"k Eqa Eqa Orda> Eqa&[M Eqa  6Orda%Eqa-5l PpraDocStorablea^p i LCxtCxtName fCxtNameCxtNameCxtDocv |f k PathPathStringp #+3 String&pu;DAYWVs |tr-DocR String DocReadPStringDocReadPStringDocReadPString LeapSecondTableStringMonoidbArgPlaceHolder MkOptDescrString ShowSStringFilePathStringCWStringStringCStringStringDMonoidbArgPlaceHolder MkOptDescrString CWStringLenString CStringLenStringTestabletString  PrintfTyperStringHTMLhtmlStringName EqaShowa AssertionString+ StringgTestableaStringStringDocLineNoStringString ReadaString>IsStringaStringErroraString8String)Stringz StringDFilePathStringFilePath$ NameName iName#NameM*Name String0L StringQString&StringuString@StringJ SourceNameFilePathStringString~ FilePathFilePath 9Name%NameStringPkgNameStringOccNameStringModNameStringFilePathPPSuffixHandlerFilePathFilePath FilePathFilePathjkopString FilePathString Stringh StringStringStringqu?3 StringFilePathString String S<StringString?@/ 0 LineNoStringStringColumnLine SourceNameString90NameNameStringUniqqwString FilePathM P FilePathIOErrorString5 6 7 S T U V c d e f g h QRSVWX678JKLz{|  EF]}>StringStringEFGStringURLURLM N O nop345678StringFStringStringStringFlag!DocName~ BString!Namej* 2 5 6 String_IOErrorStringStringijnoFilePathStringU Stringb StringL z { .:FilePathhString} String_String  AssertionStringFlag23@A_`klFilePath] Stringa String;MonadmString<QuasimName:QuasimNameString2NamenopStringString NameFilePathString  MkOptDescrSFlagsFilePathString   Stringp q r opq345StringFilePathStringPStringWXFilePathStringFilePathProgArgStringik StringString StringNameStringString   = > FilePathString  yz,-FilePath!StringNumaFilePathStringNumaFilePathStringFilePathStringM FilePathString> ? FilePathFilePathStringN R FilePathStringFilePathString String gStringNameStringFlagStringNOTUVWFilePathStringI J 01PQRSXYFilePath"NameProgArgString DescriptionFlagLFlagsSFlags BoundedbEnumbEqbShowb MkOptDescrM DescriptionLFlags MkOptDescrSFlags# DecQNameTypeQ_ FilePathString[ FilePathStringFilePathString StringLStringp StringFilePathStringFilePath3NamePatQ ClauseQDecQNameNConQNameVarStrictTypeQ ConQName StrictTypeQS FieldPatQNamePatQPExpQNameStringWNameMName VarStrictTypeRealFracaReadS- ReadaReadSNumaReadSzDataaReadSnoxzReadS Name StrictType% ReadS! " ReadaReadSRFieldPatNameOFieldExpNameStringMonoidbArgPlaceHolder MkOptDescrStringCMonoidbArgPlaceHolder MkOptDescrStringDecQNameTypeQP+NameTypeQ :NamePatQ FieldPatQNamePatQ&NamePatQVNameExpQName#StringExpQStringb"ExpQNameNameString(Name StrictTypeQVarStrictTypeQ DocString R|1DocString'DocName DocFilePath4 StreammStreamsStringMonadmString9StreammStreamsStreammStreamsStringString String String String InstalledPackageInfoString HookedBuildInfoStringPackagepkgString InstalledPackageInfoString TextaString*ProgArgString<=LineNoStringFilePathStringFilePathStringNameStringStringNumaStringNumaStringNumaString StringFilePathNumaString ReadaStringStringW StringlFilePathRFilePathFilePath StringkFilePath HFilePathBCFilePathl String String; < = } FilePath  AssertionStringdStringZ FilePathStringFilePathbFilePathStringStringCWStringStringCStringStringcFilePathFilePathStringFilePathReadaFilePathStringZ String FilePathString CWStringLenString CStringLenString StringFilePathStringFilePathAArgPlaceHolder DescriptionOptFlagsStringArgPlaceHolder DescriptionOptFlagsString  DescriptionOptFlags FilePathHookedBuildInfo  D{, BW   MonadPlusmw Monadmu Monadm - & rStringStringStringStringString ArgsHookedBuildInfoPPSuffixHandlerCxtNameCxtNameFilePath String{|FilePath  NameG StringFilePathStringFilePathStringCxtQNameTypeQConQCxtQName String  String StringStmtQJ OperatorTableDForestStringr Orda  CxtQTypeQGuardQStmtQExpQStmtQ }ExpQStmtQPatQgExpQPatQ lBodyQClauseQDecQPatQ} 0}ExpQuDecQStmtQsDecQExpQ#BodyQC .cS)1,Doc bStreammStreamsq Ordko L       DescriptionOptFlags Ordkey Ordkey}OrdkeyGraphVertex~OrdkeyGraphVertex Eqb Description MkOptDescrOptFlags 4Ordk$Eqk,HTMLaHTMLbNFDataaStrategy  }6"*2Key!} HsContext"PackagepkgFlagAssignment| PPSuffixHandlerString DocNameString%ExpQName FilePathFlagStringqNamevMonadmrspq  pIxiMArrayeMArrays IArrayeIxiOrde[EqeIArrayeIxivIxi IArrayeOrdeQ w ForestEString6L[CKZr Streams StreamsStreamsMonadmMonadmnoAxMonadmlm,  OrdaF Monadmg %  ShowaStringHSOrda$6m Orda"% tE   N A B Ixi^  / "kbmq$Ixi#Ixi& ReadS     ReadPReadS[ _ ] a OQeg>   ReadPT ReadP9;String String` String ReadP&I IntegralaP RealFloataRationalQ FractionalaRationalRationalRationalRationalRational Rational yzDERational wRational'7:RationalxCDocRationalijMonadmMonadmgh@fQuasimQ 2TypeQ StrictTypeQTypeQ 4ExpQRangeQENamePatQPatQTypeQPatQ BExpQPatQStmtQeExpQPatQXBodyQDecQMatchQPatQ BodyQDecQPatQ: PExpQMatchQUExpQNameExpQTypeQExpQStmtQExpQRangeQExpQGuardQExpQRangeQ ExpQRangeQ =ExpQ w  VW,ExpQExpQExpQ BodyQExpQ gCxtQDecQNameConQCxtQDecQNameConQCxtQDecQName MCxtQDecQTypeQ?ConQName' Storablea Storablea Storablea   Storablea L Storablea3 StorableaStorableaStorablea[Storablea\k RawBuffer Storablea Storableb gmi  !  & hiCWStringString   CString" CString CString% CString. CStatCString/ CString ( 1 CString} rhkCStringCStringString# CDirCStringCDirCDirentCStatCStatCStat CDirCStatCStatCDirent' CDirCDirentCStringn%DocBDocDocStringT2Doc   Doc kEG@DocYDocShowtStreammStreamsStreamt ?StreammStreamsMonadmStreammStreams SourceName cMonadmStringdMonadmStringZ ^ WYStreammStreams\ ` XZStreammStreams NPdfhiStreammStreams=StreammStreams MonadmStreammStreamsSStreammStreams8:StreammStreamsXStreammStreams*StringStreams SourceName ShowaStreamsStreams SourceNamePackagepkgPackagepkg] PackagepkgPackageFixedDepspkgPackageFixedDepspkgQPackagepkgStringPPackagepkgStringPackageFixedDepspkg^ Packagepkg PackageFixedDepspkgPackageFixedDepspkgStringqPackagepkgPackageFixedDepspkgGraphVertex StringYNameU StreammStreamslj08=ai RealFloataShowS}@FilePathI StringBStringStringFilePathAExpQOrdk  OrdkD MonadmMonadm_f ShowaShowkStringm $ a#5OrdkDOEqaOrdkl Ordk!$; XZDE  = SampleVar SampleVarE SampleVarF SampleVari h] `Key A MonadmKeyd^Key ShowaStringl " Key 3CNEqai r *s/ StringmStringFilePath InstalledPackageInfoString $7AFilePathInstallDirTemplatesInstalledPackageInfo@ IxiMArrayaMArrayeIxiMArrayaMArraye r   Typeable exceptionD IOErrorl>QuasimMonadIOmcd|Y \ X aIOError5 bl Assertion AssertionString ! ;GenericQ:8Generic[^String=String p ~'FHw abtu 1+Pk _. =^os2String</e SourceName= QR vwxyz{String\]_`String ?@3456/StreammStreams ShowaTestableb FinalizerEnvPtr+FinalizerEnvPtr  FinalizerPtr* FinalizerPtr[Ixi  )) PfDocLineNoStringStringOc]  1  RealFloata RealFloata  RealFloata MonoidflagsString String   String String String String9C=" GraphVertex GraphVertex2ForestGraphVertex' GraphVertex1l ForestGraphwForestGraphWEdgeGraphl GraphTable. GraphPStringOString-DocNameJKIxiIxjMArrayaMArrayeMArraymuvIArrayaIArrayeIxiIxjeIxiIxiMArrayaMArrayeMArraym2Ixi3IxidIxiMArrayaMArrayeMArraymIxiMArrayaMArrayeMArraymIArrayaIArrayeIxiIxiMArrayeMArraysIxi IArrayaIArrayeIxiVIxiMArrayeMArraysUIArrayaIArrayeIxiIxiMArrayaMArraye<> R? Randoma RandomGeng Randoma RandomGengIxaIxa Ixa Ixa RandomaRandoma,Doc>Name StrictType+DocBoundsEdgeGraph Doc UnrecFieldParsercdlmString  MkOptDescrOptFlags CWStringLenString~ sj CStringLen CStringLenString HookedBuildInfo HookedBuildInfoString!HookedBuildInfoFlagFlagFlagFilePathFlagFilePathFlageFlagKFilePathFlag FilePathFlag FilePathFlagStringtFilePathFlagFilePathFlag(FilePathFlagParserStringMonoidaFloatingaErroray~Boundeda H4 1 ux I|  55   RYm`2~H,e_'9 r 01N|}GEDP |}^_| xv"^  /vg 6Xt}] 1) O ` $$/;8tC:;z{|}d e u|Sk  PrecedencePrecaeBN' 0 a b Ux y z RST [\]&    klmNwxyyz{A!<[?w > @?yv - 3 Q c g i j  BCF{ gv-<p@DKSc  ) + , n o  3 4 7 : G m  B R W Y \ h C{=o~",bcxtu@f!,0 =Cq~ . %!<;wZ% :RSE U89:;<=>?@AM#$%&'()*+,i34 o9' <k V 4 3    <=>'@m ^ <\ U b  MonadStatem MonadStates7 MonadReaderm MonadReaderr  MonadPlusm9QuasimStringh Alternativef  ArrowZeroaK ArrowaJ ArrowApplya V_ ny{S07UeStringFilePathfStringPPSuffixHandlerwtnm+ Reada{6# $ ReadaString TextaReadPNuma ReadP ReadP  ReadP ReadP ReadP ReadP ReadP ReadP5XString ReadP 6TypeQ0PatQStringaShowSH  5Z _nrnoFGcDocWMonadmu *ShowtStreammStreamsStreamtGMonadmMonadmSMonadm` t 2A&),vStreammStreamsTStreammStreamsQMonadmVW7 lFStringNo rjst& Reada RandomaY# @A p!  POSIXTime`EU\ ^i>?K24  VW_joStringagsuFilePath[StringTUFilePatheString2StorableaFilePath SampleVarStorablea& TokenParser7 >w'(a LanguageDefS Arbitrarya  FinalizerPtr G !oHM$c] rHookedBuildInfoFlag!"&&MM]^aatt{{33==NN]]ss*+./>>UUXXccggmmooxy   " & 2 2 : : V V [ \       % ( * * / / > > G G N N Q R W W [ \ ^ ^ h h v v x y    0 0 9 9 E E G G J J L L O O d d j k     ( ( 2 2 J L O Q T V X Y [ ] e e k k   1 2 9 @ I I O O 003388CCNNVWil!C33MMQRZ^pqst~))22::CC\bhills    ""))4466:;?AEEVV_aiiuuwwK    ; ; H H     I I S S ^ _ c g l l w w     : : X X !!11PPRRLLkl||66VV CCccnn6  ! W Y v v         8 @ ~ ~ #'  6699FFpr    ""))KKprx ; ; B B U U ^ ^     M N   5 6 _ _ } }     < < > > A B      8 8 F F g g u u | | 55CCMN..6688NN  PRXXZZ_bno{{i' Pwffiimnvv  ,-99>?DDLLNNSUaahhp   !&-??CDQQ[\jj""%%))-144>>CDFJLL]^llooxx !!%%++::QQ*yy}}       " " 2 2 5 5 A A S S Y Y ] ^ t t ~ ~     , , 2 2 9 9 D D F G J L \ \ g g q q     8 D N N h h p p | |     + , @ @ E F f f h h o o .u u      = @ Y Y a a c c } } $WWYYcctx{{##%%<<??DDUUZZssu  $$&&**12::BEY[^`dmuuww)1PUVuu~~    $&(-.057:AY[\cdhhk  ,//118;=>@@CCEEMOQVYY[\^eioqty4  !(,..226689;;>>@BEHNOQRUXZ\^ikoqqstvz}   ""%&,,/1>?EHMMQQUUWXZ\ddfiqquuxy}!!##%%--/139<AEHNNPPRS7V[`beinnssuu  "%%)dfjmsxx{{         " " & & , , . 5 8 : < A E F I I L L P P V V b o q q u u y { !;             ' + 6 : @ @ B B K L N N R R U W Z ^ e e h h j j q q t y } }           * + - 6 ; = @ A D D H H J J N N Q S U W ] ^ e f h h k k p t w    F>   ! # # % & ( ( + , 3 3 6 6 ? ? D D F F H H L L P P V V ] _ a a d v          % & . . 1 2 4 7 9 @ D D F F K K T T W W Z \ ` d h h j m p q s t x ~     $''3369CEGNkATTWY[^aboqssz"&&((-tvy||~ )++/04466;;=LPPSS[[_`bbddfgiimouuwwy{D   !!$$,,035578<<>BDEGHNNRSUUYY]]cclnqsuz||~   !$%(-AAHLNNPSUU]`bbefiinnuvG!!%%+,246799;<>>@BDHUXZZ`ajlnpwx~#$++88<<>@CDFGLMOOQRT\b     ""(BIISZ``cc Kffllnrww           % & * * , , . . 5 5 7 7 9 9 ; ; ? ? B B F F N N P P V V Y Y \ ^ ` a w z            + + 1 6 B B E E J L O Q U U Z Z ] ] j j m m q v   0N         ! # # ) , . . 4 6 ? @ D D S S U U Y Y ^ ^ e f h h l l w w z { } }          ! % & ( * . . 1 1 6 6 8 9 ; ; ? ? A A E F P Q V V ] ] ` u y y ~ ~                % % + , . . 0 2 9 @ D D K K N N U U ` c UQl m q y    "&""$%((//4478>>CCKRTTVV]^ppvv#&((++.<CCJJLLVV_agmopvvy{zT  nnpqsy~~ !!%%((+068>ADEKLPSUUXY[\ggjjoossxy|}##%),-227;==BBDQVZ]^cdmmttxx||xX+-illqryz}~  "')88=>CDGHJMTTYY[[^bhhpqxx}}    "")).134::<<?BEEGJLL[NNRSXY\\^^ddik}   $$&')/24=>HZ\_cdfgkouvxy{~      $ $ & ( - - 1 2 4 5 : ; @ A D D H I T W [ ^ t t w w ^y y          " # & ' ) ) - 2 4 4 6 6 < = B B I I K K U V X X Z Z ] ] _ _ h h j j l n p s u v { }                 ! + 3 7 ; = ? ? A D G H L O U U j k r t v z | |    a           ! # - : < > B D D F F H H J K N N P Q T U X ] a a d d m m o o r s u v             '*+--225577=>@@CFIIMNRRUY^_nnrs{{  "+568:??AAEEHH eZKqssvvyy{|~ %&,-/0224699;;>@BDGbooqqvv #'*-/02;JKPPWbfprruuyy|@@BBEEPQTYjjoorsww,11=>@@KKNN[[llpx    ##9;OO\\jjllnnqquuww|}  !&&.188>>JKRRT^k`aooxx}}    &&))2299;ALLNNRTXYffrsuwy   $%++37<<Z_ggmmoosswwz{  'n   + . 0 0 4 4 K K O O V V Z Z m o s s w w y y            $ ( * * / / 2 2 4 4 9 9 H I K K O O Q R W W [ [ ^ ^ c c h h j n q q s s v v y y | ~          " * + 5 5 7 7 ; = C C E F f     1 3 ; > M M \ \ b c i q s u w w Lq  0045@@CCEEIILLSSXXflrs ++5577<=FFLLVW]^eekmpqxx!!,,46<>BBDDNO_`dmxqt+11446;CCVV^`ggvvyy [\__hhjjorux} %&,022557>DM[\efiiklrv.113466::@iqqstvz  #&&wx--:MRR[[^^ddllwx|}  !()-1335599<<?ADEMMRS``fgjkoovx  !$$++1156=>BBIIPPVY^^acey}}{    " " & & , . 1 1 3 3 9 9 ; ; E E S S V V Y Y g g m o v v y {           ' ' ) ) . 2 4 4 8 8 : : < = D D L L U U Z [ ] ] _ _ b b h j l n q q s s u u x y { {   7 ; ; A A F ~        " " $ & ( ) + + - - 2 3 5 6 9 : A A D D G v            " " $ , 3 3 5 7 ; @ K K R R W W Y Y ] ^ f f h h j m p q s t ~ ~  ,,..007799CCFFHHKNXXZ`eeyy{|~%%**/06688::==DDHHKNUUWWZZ\\aagjmmorvv!FLLNOTT]]firw "  ##%'..25==CHPPfmttyy   qqttwwy{}   &*,.5578==ABIIMMOOUVYY[\`aggmnpqy   !%&-;CEIIOOUV[\eeggiillrs ,,..89??DJLLOTZ[_erA  ""&&--99;;EEGIPSddfhjjmmoott!''-13479@ACFPPTXZ[``ggpuwx}~dffhjnnfps{{}}         , , . . 4 4 6 6 8 : > > A A E E J J S S V V X X ` a m o r ~          , , 1 2 6 6 = = @ @ B N P Q S S U U Z Z \ ^ ` ` b b d i k k m n q r t v x y G J L N O S U ` q }         ! # # ( ) + + 0 0 3 3 6 6 9 : = ? A A C E G H P P W Y ^ ` e f i j p p u u                # 3 6 7 < < > > J K Y \ _ _ e e m n v v z z  %12;>@@FFHHLLVWZ_cceeklpqty{|   %%')//4488::<<BCHHUUZZ`joq~  $%'')*,-07:;?@BBKO[[]]Օ2fjllppswzz!#&&.0<<??CCFFHHJKTT[[]]jmss{ -6;>>JJZZ\\fgvvzz  ##&,0466@ituzz//;;EFIIKKWW^^ggkltt{{    )),133??AARSXX__bbffmp$$1133[\hhpptt    % % ) ) - - 3 3 A A G G V V Y Z _ _ h l p q w w z {            $ * / / 3 3 > E T T ] ] ` ` b b k k q q u u } }      " " $ , 3 3 6 6 : : = > D D M M P P S V d d f g q r v v          $ , 3 3 9 @ f g u u x x { | ~ ~ 4577::BBHHQSVW[[_`cgՠ]%%''014477EEGJLLTWgimnpqwx}}  ''**./56::<<UU_bggijlluuww"''1166==AH]]aaz{   $(+--//@AGHPU\\abffiimmrrvv++..9;@CHHMNRTVX[\__lmooqrww~~    ""++--?ACFHHNRWW[\eeggiim#%)),-67>?FHRRUVZZ^looqqsswx~~ !#$++0>KLNS\\hjpr            / / 9 9 H H S T Y [ ` ` f f l n r s       $ * / 0 : = @ @ C C I I K L O O V V \ _ b b d d h k m o q q s u { { } }               ! " / 0 ; ; @ @ C G M ] _ _ d e h i m m -o o q q w w } ~         % % 3 3 6 7 E E H H R R U W Y Y _ e u u } }   ))459<CCFFJJOUYY]]aceeoqss{|~~R!%%'')*3688@@KNRR\\cdgipqttxx  "#++./128<??AACCLMPPTUXXZZ]]eluuxx{  +-00==??DFIILLOOw%QVZZpqssuu++./57<<BBXXbb   % % ( ( 7 7 | }       N N R }   5 5 K K [ [    # 8 B I M n n q q   1 2 C C Y Y m m  ))..KK_`  66::__jj$$37ŷ==FFJJab    "#))--5577sssy{{~~   !"&(--2478<<>?ABIIKLNNRS[[`afglmoqsty   !#&((**--0022;;>>@@CCEEIIUV[\cehorr #$**..3388@BHHJJOTVX[[_`llppvx""$$*,.1=>EEGHMMTTXX[\__bbddffhhjkmmoottyy~  &&)),,3468=ACCN\^^``dimmqqxxzz~~   & & , , > > F F I J M M Q          ) ) 0 0 6 6 ; Q V V X X ] ` n n r s u v { |            # # ) + . . 1 2 4 6 ; ; B D G G R S U U W W Y Y ] ` b b e f h h j k m m p q }         ! ( ) + + / / 4 7 9 < ? ? A A C E H H P P c h l l p q t t } ~             " " % % ( ( * * 0 0 3 3 5 8 : : F F O P R R *U V Y d m m v v x x { { } ~  #$).1278::AACNQRWW[^cgosyy{{}}  !&)//1388<<CCPPRRUUYmrrww||OK ""'',-/25688:;??ABLLWX]]pqttvvzz   #&&)).0668=ALNORTY\_`imouy{}}  benp  ##++/+/BBWXiiqq       % % 7 : D D I I M M P P n o u u z { } }            # # ( ( : : = = @ @ N N P P m m r r         , , 1 1 5 6 E E o o           0 3 P P ` ` e e n o y y     E E J J X Y d d z z %%**77@@BBDDKLUYqq||    ffhixx!!$$&&./<<BCUV    ""%%))--56;;??IIkkuu //MR``mm189@AKKSS^^hhxx}}  4478==@AEJZ[jkmmrrzz  ''5799<<JLOOYYaafjnn   - - 6 6 8 : F F N O X X n o t u w w       - 0 3 6 9 9 @ @ B B P Q Y Y e e k k t v           ' ( . . 1 1 5 5 ; ; U U W W n n x y { |          ! $ $ 9 B E E G G e e m m s s u u     & ' - 0 3 3 ; > [ [ m m v v Z --22::@AFFJJPQSSWW{{  88BBPR`jmq  +-00BBOO]]vv##&'.0779:<<??IKMMTTlmuu}}  ""-->>@@GGJJOOuu%%.14466>DLLQQTU``qqxx$$4699hhppvvxx          / 5 9 9 N N S S a o s t   & ' ; ; Y \ n n { {          0 0 ; < Z Z c c g h j k m m q q { {       " " $ & / / 6 6 9 ; D D H H L M j j l l q q } ~     < < > > O O R R U W Y Y ^ ^ a a c c y y } } %%,,/389IJPPTT[[__{{ D''++66UUXX[[llvv||~~ +,//::BBEE]]..668;EEIKppyy  ppr~   ",.235588;;=?DFMQTY[\^  "),0?BBKLNRTTX\afijooqrttww||~~f    $$&&((++89>?AAGJLNPRTTWZ__beggijl  !%)>@AEEGJNNPPRSUV^^`dikoswx{{}~!!$$'')/38::<AJZ_`ccftvw}}        % % ' ' . M P P V Y ` a f f p p r {        ! : = = A B E E H I L N W W [ [ ^ ` b b d k m n q t v v z }               ! # ( ) , , . 0 2 3 5 6 ; ; ? F H I Q T Y Y \ ] _ ` b c e t v v z z } }        . 0 3 6 7 9 9 ; ; = > A B D D H M P Q S ` d g i i m m q s u w }               % % ' ' - 2 8 @ B B E     $--/59:@@BCIIMNQSU   !!##''))+,..024688:?ABEFKNPRTXZZ]_bbdgklttvvxx{|~  ((**,-00279<@DFFHJMUWWY[]]abdlqquuw8+-;==??AHPPSSUVXXZZ]]_`ervvy{~   ##,,113378HJNNTTZ[aaiirrww{|  ')--:MPRUUbbs#)--33>>CCGJLLPPRRUV]_ooqqssxx 17::<<@@QQaaiiqqttxx     + . 3 3 6 6 > > F F S U W W Y Z \ ^ f f n o s s        1 2 : : > @ D D S S V X b b j j m m q r t t             , , . . 0 0 C C F F L M P P W X \ ] ` ` b b e e l l o o z z       0 0 6 6 9 9 ; < D D G G S ] e f h h n n t t }        " , . . 8 8 *= @ D D G ~ ++11CDGTZ[_`bbkl  &&..0088@DHH{{~!!&)22:;FFIIWWjjuuO,)79?ACCEFHHNNQS\\pptt   ))..?BDHJJppsz    &&8M__oqttvy||%--55<<BBDDRSUV^^``fgmnssz{ 1156::<<?AIIMNTYjjrswwzz|}      % * . . 2 2 D E I I W W ` a n o } }            # ( 4 4 8 8 < = I I T U Z Z ] ] e e i j m m q q s s u u x y          & & + + 2 2 4 5 B D H K N N Q R T W \ \ ` ` p p v v z z      ! $ $ & & . . 5 6 8 ; P P S V Z _ f f i k n o x |         % % 8 8 < < > > B F J N b d h h k k m m o q t t w w z z     **..00779FHHU^abeetx{|   $+66@@LLNNWWY^aaffpqy{!"$%((BCHJTT[[]]fiswD.##%%++--/06;=HMMPP_`dgkkopuvxy~  !!((??LMggiis)*34CCOO^_dd**;>OPUUcc}}    ' ( . . ; ; A A L L R _ t t     " " ' ' 8 8 = = D D G G S T ` ` n n r r    % % 0 0 3 3 8 9 ? ? G G K K P S j l s s     # # L L V V ] ] h h 3 3 A C E E H H Y Y ))CCMNUWil{{}~35KNRRgguy##CCPP|67OOZZhikk  !#&(+--//@CGHJJPT\\_bggiimmrr  (*.499;<>>@BHHJJMNPPRTY\^_aaiillppttww  ')++8   ##%%**,,3377::>?BBEEGJLLNOTTYZ\\^_ddiilnpprr{  !''0AHHLPRSYY[[ddhjprxy     ( + + - . 0 1 4 5 7 7 : : D D I I L L N N U V [ \ ^ ^ c e w w y y    ' ( 1 9 > > R R T T V W Y [ ` ` b b d g i i k n q r y ~       !         ! $ * , , . . 5 5 7 7 A A E H T T V V \ \ g k o p r s w y { { } }        # # & & * + . 1 3 3 : : < > B D G G J K N N Q Q S V X ] d e i i n n q r v w           " @ B C E <$  />@@CDHHJJLLQQUYnnrrvw##''3@HHKNPW\\ddfgmmssxy{{~ ""++--1244:=??CCFFHRXX[[a'K]]_bggijlloowx|)++.1679;==?ADGKKMMQdggkmppvvy   IJVVgg),vhXF6(zjXF8$v^L4$zhVB0pZJ6$ |jJ<*hD vV:|Xf0VfF vXF4 rV@ qO-k3ZF.f/qMO5 ͿjH,̾j@ ۽ɽpT0Լz\4ڻƻvS7պ_-Źa?Ÿ[K7! ݷW9 ݶeG)ѵ}aI/ɴua?ϳ{U= βrT:$ұrX0а~^:ǯ]K5׮e=ͭwK# ӬfBЫpL4Ǫ{]=ĩzZ<ȨpFڧ̧hN4ԦrF, ҥvX:"ФvX:ޣƣtZDޢzJ(ܡȡt`4YEɟ[AyW;ӝkK1ϜkQ9 qYA+ךuS% i7ȘlGߗS/ߖoK{Y7!lTB'ȓlZ>$ÒeEۑuQ/ mI1ÏY5 ӎkGuQ7Ќ|X4oCwU- ݉a5ψ[?ۇZ*tF&…Z2؄gE) iC#߂sAe5ɀ}[-a;~~~]~1~~}}}m},}|||j|>||{{{z{d{H{*{{zzz~zdz;zzyyyySy-yyxxxoxKx'xxwwwwHw(w wvvvxvFvvvuuuudu6uutttttJt(ttsssxsRs@s"ssrrrrjrVr@r*rrqqqqzq`q4qqqppphp,poooozoZo@o*oonnnnnvnZnDn2nnnmmmmmrmJm*mmlllldlHl,llkkkkyk[kCkkjjjwjYj3jiiii{iRi+i ihhhh}h]h7hhggggWgEg gffffkfSf2ffeeeeieQe3eeddd[d5ddcccQccbb{bIb#baaaSaa```[`'`______G_-__^^^o^A^^]]]u]W]7]]\\\{\Q\\[[[[w[_[+[[ZZZ~ZlZPZ4Z"ZYYYYzYNY"YXXXXxXXX6X$XWWWuWaWGW+WWWVVVVwVSV;V+VVUUUUfU0UUUTTTTvTTT2TSSSSmSQS;SSRRRoR-RQQQQQ}QgQIQ1QQPPPP{PePUP-PPPOOOOkO;OONNNNSN)NNMMM`M6MMLLLdLDLLKKK\KKJJJJJJ JIIIrIJIIHHHHH`HBH"H HGGGGnGLG%GGFFFmFQF5FFEEExELE"EDDDDDnDND,DDCCCCfC@CCBBBBzBVB"BBAAArAXADAA@@@y@W@;@@@???~?R?:?"??>>>>>j>8>>=====n=>==<<<<`<L<><*<<;;;;;l;N;:;;::::::d:J::99999Q9399888g8O8188777k7Q7'7 766q6K6'6 6555g5M5%5 544e4344333e353 3222s2N22221111u1Y1?11000y0Y070///{/[/9/ /...z.X.6..----`-D-.--,,,,,d,6, ,+++v+`+H+.++***j*H*0* *)))))o)@)*)(((w(_(E('((''''m'='!'&&&&&s&E&&%%%%%Y%=%%$$$$k$=$ $####e#'# #""""k"C""!!!!g!3! !   c 7  jHeI% mG' qS1mU;% uc$hL*dH*jN0zP8jRnRr>$ rF"tH n8|h> pN    l T 2      t T (      ` ,      | \ :        l T >   d:zdF bDnI}_A# kI\4\8 tL  xZ:\<&Z@&hJ,vH P(NJ4 pV8 vVB xR2zfN.d0tT.lX: ^0dJ0 rHs= {aM5qU/ qW=+_G'eC)wE{M7kS-S3 {U9a=gK) m[='kK) s[CoW7wY9!gG5waC# u]A' oO1mQ/}Y5u]E{[=sWA# mWE }a4fD*~jV6  tL8p2nN0xX2tX@pT#g;}E!}kQ7oEU+kCqU mY7h2ܿ|^< ܾn< ֽ`H fB˻{Q)ݺs[5۹eK+O+ɷy]E!۶e3۵yM)ϴ{Y/dzkK!ݲgI1ϱsS%wG_=!_7˭kA#sYE# ٫k=% תqQ%ݩ[E+ըeE'ݧcK- ӦgK¥xX6ʤp:nF*֢lJ0ءzb2 lF*ǟoC"ΞjP8&̝v\<$ל}J(ԛpX@(ʚtT8ʙ`6ʘpH&{aC) ȖuU1˕qA%ٔa/ݓɓiE- e; ӑqG+ېǐ{]A#ŏ{O+َY_;SNjB"ƊtT:̉fL ƈV2ڇ^:̆jJ0ÅkCmKԃx\>&̂hP8āx\F"ހ|V.nZD$ ~~~~~t~^~,~ ~}}}}t}R}&}}|||||p|R|2|||{{{{b{D{&{{zzzzzrzPz2zzyyyyxyfy4y yxxxnx\xBx"x xwwwwwpwRw$wvvvvtvTv2vvuuuuduDu.u uttttzt^tBt$ttsssvsPs4srrrr~r`rFr0rrrqqqq^q:qqqppppppPp$ppooooonoPo:ooonnnnpnXn@n"nmmmmdm4mmlll~lVl8llkkkkpkJk(kkjjjdj:j jiii`iDi&ihhhhhthZh>hhgggg|g`g@g&gfffff|f\f@ffeeeepeLe4eedddd`d6dcccczc^c6ccbbbbzbKbbaaa{aWa=a'aa```s`I``____v_:__^^^^^l^R^(^^]]]]|]`]@]$] ]\\\\\b\H\*\\[[[[[[f[H[2[[[ZZZZaZGZ!Z ZYYY{YcYCYYXXXuXaXIX'XWWWWWWWWVVVVeVKV!VVUUUUrUVU4UUTTT~TLT0TTTSSSlSJS0SSRRRRNRRQQQxQFQ"QQPPZP$POOOO^O6OONNNNtNbN>>>T>.> >====q=W=A=)= =<<<<<[</< <;;;;n;N;0;;::::|:h:J:*::999~9`9H9$9888z8R8(8877p7P7.776666w6A6#665555e5?554444o4M4/44433333s3Q37332222}2V262221111n1V1:1&110000b0F00/////h/H/*/ /....n.,..----f-4--,,,,`,8,,++q+?+++***}*c*?**))))k)I))(((t(V(#((''''o';' '&&|&Z&8&&%%%%h%<%,%%$$$$$t$L$8$$####v#^#D#,##""""r"F""!!!!h!D!$!!     j R 8   HpR>jL0qM'rT.V,f< lF,^@&tV:x\@$ J(a;uY;e?hR.`1qS/    e K %     o E !      _ 3 !    e 9 !     _ '  i9 gQ5_?yaAoU#xX8fH(lT>,nR> f6b4 bF(vT0rR>$ tX:^>kK7oK%m[A#U{[9aA+ gK+}]?# {]+S+kK-s[C3S=% {[;iI%o;yY%kA{W. Z<|^8pX@$xV,nV4d8tV*R(yE}Q# O+[=mO5q]A){Y3jF&kS9%`:d>dFhD&_3iI~dF&Y7 aCyQ+fT8rH&n<"xZ@(n>|`:jH*X4|X:pN.t`0п`6 ־rLt*޼|6ػZ2غf2ܹx^@ܸd:˷])۶wM5ߵǵiE#Ӵi<Ƴ~d2 ʲv\2бw_E/ y]?'կoS5Ů]E íuKϬ{iS7ѫwW7ݪeCͩqI/ŨiA'קa=#mU9ߥťsUӤwW3sS1 ˢo9ϡW5 ݠgA- şuEnH$ pL*ΜpB ֛nFƚjJ(ęr8 ֘h4̗\*ƖrB xV4ڔ”nRʓx<j@&ّwI)_9{SAÎe3ݍsS1׌{[=ɋu[5̊|dR6։}Y7׈kI1 ɇ}_?+݆ɆmYC~`D0քd@΃fBX6ށpT&ԀjJ( ~P"~~~~j~R~:~"~ ~}}}}z}\}@}"}||||~|`|.||{{|{T{6{zzztzLz(zzyyyyylyZy:y yyxxxxxixSx;x#xwwwwww]w7w!wwvvvvv}vgvOv1vvuuuuuuquWu9u utttt{t_tAt-ttsssmsGs7s#sssrrrr~?=r~?=~?r~?~=?r~=?~:r~:~ s~|||s||| ||*s|| |>>s|> |Ms| FGHIJ zonedtimezones zonedTimeZone zonedtimetoutcszonedTimeToUTC zonedtimetolocaltimeszonedTimeToLocalTime  zonedtimes ZonedTime zmachinetZMachinezlib6tzlib zipwithm_Ot zipWithM_ zipwithmltzipWithM zipwith7tzipWith7 zipwith6tzipWith6 zipwith5tzipWith5 zipwith4tzipWith4 zipwith3tzipWith3 zipwithuzipWith EziplistEuZipList zipeditcuzipeditzip7zuzip7 zip6uzip6 zip5uzip5 zip4uzip4 zip3uzip3 zipuzip D zigzagmodev ZigZagModezfs'vZFS zeroarrow?v zeroArrow yogurtZvYogurtyieldqvyield yi-vtyvyi-vtyyi-gtkvyi-gtkyivyiyhccorevyhccoreyhcvYHC yellowvyellow yampasynthw YampaSynthyampa+wYampa yamlreferenceIw YamlReferenceyahoo-web-searchrwyahoo-web-searchxtcwxtcxsltwxsltxsactwxsactxorwxor xmonad-utilsw xmonad-utilsxmonad-contribxxmonad-contribxmonad.xxmonadxmobarFxxmobarxml2x]xxml2x xml-parsecxx xml-parsecxmlxxmlxinputxXInputxhtmlxXHtmlxhtml xcb-typesx xcb-typesxargsxxargsx86_64yX86_64 x11-xft,yX11-xft x11-extrasIy X11-extrasx11byX11 wxgenericzy WxGenericwxfruitywxFruitwxcoreywxcorewxywxwurflyWURFL writeutf8filey writeUTF8File writetchanz writeTChanC writestref7z writeSTRef writesamplevar_zwriteSampleVarwritertzWriterT?@ABwriterzWriter;<=>writepersistbuildconfigzwritePersistBuildConfigwritepackagedescription{writePackageDescription writemodeD{ WriteMode writelist2chang{writeList2Chan writeioref{ writeIORef writeinstalledconfig{writeInstalledConfigwritehookedbuildinfo{writeHookedBuildInfo writefileatomic|writeFileAtomic writefile<| writeFile : writechann| writeChan writearray| writeArraywritable|writable wraptext|wrapText wrappedmonad| WrappedMonad wrappedarrow} WrappedArrow wrapmonad0} WrapMonad wraplineM}wrapLine wraparrowj} WrapArrow words}words 9 wordptrtoptr} wordPtrToPtr wordptr}WordPtr wordnet}WordNetword8}Word8 word64~Word64 word32-~Word32 word16E~Word16 word[~Word wl-pprintx~ wl-pprintwitness~witnesswithvanillalib~withVanillaLibwithutf8filecontents~withUTF8FileContents withtempfile withTempFilewithtempdirectory8withTempDirectorywithstorablearrayfwithStorableArray withstatet withStateT78 withstate withState56 withsharedlib withSharedLibwithrwstwithRWST34withrwswithRWS12 withreadert8 withReaderT withreaderY withReader withprograms{ withPrograms withprogname withProgName withproflib€ withProfLib withprofexe withProfExewithprocesshandle_ withProcessHandle_withprocesshandle<withProcessHandlewithpoolawithPool withpackagedb withPackageDBwithoptimizationwithOptimizationwithmvarρwithMVarwithmanywithManywithlibwithLib withinrange$ withinRange withghcilibF withGHCiLibwithforeignptrkwithForeignPtr withfilepathexceptionwithFilePathExceptionwithfilecontents˂withFileContentswithfilewithFile withexe withExe withcwstringlen,withCWStringLen withcwstringS withCWStringwithcstringlenywithCStringLen withcstring withCString withcontt withContTwithcontۃwithContwithcenvironmentwithCEnvironmentwithcastringlen*withCAStringLen withcastringQ withCAStringwithbinaryfilewwithBinaryFile witharraylen0 withArrayLen0 witharraylenÄ withArrayLen witharray0 withArray0 witharray withArraywithargs!withArgs with9withwinerrorQwinerrorwindowslWindows win32-notify Win32-notifywin32Win32wildp…WildP/wildP0widthwidthwidget widget whitespace. whiteSpace.whiteMwhitewhimbwhim whereindent} whereIndent where_clause where_clause-wherewherewhen҆when weekdateWeekDatewebbitsWebBitsweakWeakwave4WAVE wavconvertN wavconvert warnunrecm warnUnrec warningwarning warnwarn waitqsemn waitQSemNwaitqsemևwaitQSemwaitforprocesswaitForProcess w2cw2cvty'vtyvspace<vspace vrightcurlyY VRightCurlyvoidtvoidvlinkvlinkviewrViewR viewr viewlViewL viewl viewasfielddescrviewAsFieldDescrverticesvertices vertex*Vertex versiontagsG versionTags versionrangej VersionRange versionbranch versionBranch versionVersion version verbosity Verbosity verboseverbose vector-space# vector-spacevectorAvector vecZVecvcatmvcat,vaxVax vartVarT*varT+varsymVarSymvarstricttypeqߊVarStrictTypeQ) varstricttype  VarStrictType' varStrictType(varp>VarP%varP&varnamegVarName$varidVarIdvariantvariant variablevariablevariҋVarI#vareVarE!varE"varVar value-supply* value-supplyvalueGvaluevalignfvalignvalidatevalidatevalidvalid valdValDvalD uvectoruvectoruulibuulibuuiduuiduuagc%uuagcutils;Utils utfwarningb UTFWarning utf8-string utf8-string utf8-light utf8-lightutctozonedtimeȍutcToZonedTime utctotaitime utcToTAITimeutctolocalzonedtimeutcToLocalZonedTimeutctolocaltimeofdayKutcToLocalTimeOfDayutctolocaltimexutcToLocalTimeutctimetoposixsecondsutcTimeToPOSIXSecondsutctimeώUTCTime utctdaytime utctDayTimeutctdayutctDay utcdaylength. utcDayLengthutcIutcut1tolocaltimefut1ToLocalTimeusingusinguserspecifypathuserSpecifyPathuserspecifyargsϏuserSpecifyArgsuserspecifiedargsuserSpecifiedArgs userspecified% UserSpecified userpackagedbK UserPackageDBusermaybespecifypathxuserMaybeSpecifyPath userhooks UserHooks  usererrortypeӐ userErrorType usererrors userErrors usererror userErrorusemap4usemapuseascstringlen]useAsCStringLen  useascstring useAsCString  usageinfo usageInfourlcheckʑurlcheckurlURLurluppercaseletterUppercaseLetter upper0upper updatewithkeyR updateWithKey updatestatez updateState updateprogram updateProgramupdateposstringʒupdatePosString updateposchar updatePosCharupdateparserstate$updateParserState~updatepackagedescriptionYupdatePackageDescription updateminwithkeyupdateMinWithKey updatemin updateMin updatemaxwithkeyߓupdateMaxWithKey updatemax updateMax updatelookupwithkey4updateLookupWithKey updateat_updateAt updateyupdate unzip7unzip7 unzip6unzip6 unzip5͔unzip5 unzip4unzip4 unzip3unzip3 unzipunzip |} unwrapmonadD unwrapMonad unwraparrowf unwrapArrow unwordsunwords {untiluntilunsupportedextensionsΕunsupportedExtensionsz unsafewrite unsafeWriteyunsafeuseascstringlen&unsafeUseAsCStringLenxunsafeuseascstringYunsafeUseAsCStringwunsafethawstuarrayunsafeThawSTUArrayv unsafethaw unsafeThawtu unsafetakeՖ unsafeTakes unsafetail unsafeTailr unsafesttoio unsafeSTToIOqunsafereplaceuarrayBunsafeReplaceUArraypunsafereplacestpunsafeReplaceSTo unsafereplace unsafeReplacen unsaferead unsafeReadmunsafeperformiounsafePerformIOlunsafepackmalloccstringunsafePackMallocCStringkunsafepackcstringlenMunsafePackCStringLenjunsafepackcstringfinalizerunsafePackCStringFinalizeriunsafepackcstringunsafePackCStringhunsafepackaddresslenunsafePackAddressLengunsafepackaddress unsafePackAddressfunsafenewarraystuarray_TunsafeNewArraySTUArray_eunsafenewarray_unsafeNewArray_d unsafeiotost unsafeIOToSTcunsafeinterleavestۙunsafeInterleaveSTbunsafeinterleaveiounsafeInterleaveIOa unsafeindex8 unsafeIndex` unsafeheadY unsafeHead_unsafefreezestuarrayunsafeFreezeSTUArray^ unsafefreeze unsafeFreeze\]unsafeforeignptrtostorablearrayunsafeForeignPtrToStorableArray[unsafeforeignptrtoptr*unsafeForeignPtrToPtr unsafefinalizeYunsafeFinalizeZ unsafedrop} unsafeDropY unsafecreate unsafeCreateX unsafecoerceÛ unsafeCoerce unsafeatunsafeAtWunsafearrayuarrayunsafeArrayUArrayV unsafearray0 unsafeArrayUunsafeaccumuarrayXunsafeAccumUArrayT unsafeaccumst unsafeAccumSTSunsafeaccumarrayuarrayunsafeAccumArrayUArrayRunsafeaccumarraystunsafeAccumArraySTQunsafeaccumarrayunsafeAccumArrayP unsafeaccum: unsafeAccumOunsafeWUnsafeNunregistercommandunregisterCommandM unregister unregisterL unreghook̝ unregHook KunrecfieldparserUnrecFieldParser unqualUnQualJunpack/unpack HI unordlistV unordListEFGunlitxUnlitunlitunlinesunlines DunliftedffitypesʞUnliftedFFITypes Cunlessunless unlambda unlambdaunknownlicense,UnknownLicense unknownextensionZUnknownExtension~ B unknownerror unknownErrorAunknownbuildtypeUnknownBuildType} unixutilsӟ Unixutilsunix-pty-lightunix-pty-light unix-compat unix-compatunix6unix universaltimeS UniversalTime@ unit_con_namey unit_con_name?unit_conunit_con>unitUnit{ | unique̠Uniquez uniqUniquniplateuniplate unionwithkey unionWithKeyx y unionwithC unionWithv w unionversionrangesnUnionVersionRangesu unionswith unionsWiths t unionsunionso p q r unionbyۡunionByn unionunioni j k l m unicodesyntax! UnicodeSyntaxh =unicode-normalizationSunicode-normalizationungtxunGT<ungqunGQ;ungmunGM: ungettchan unGetTChan ungetchan٢ unGetChan9 ungeneric' unGeneric'8unfoldtreem_bfunfoldTreeM_BFg unfoldtreemA unfoldTreeMf unfoldtreeb unfoldTreee unfoldrnunfoldrNd 7unfoldrunfoldrb c 56unfoldforestm_bfңunfoldForestM_BFa unfoldforestm unfoldForestM` unfoldforest  unfoldForest_ unexpectedB unexpected4 unexpectdUnExpect3  underscore Underscore2 underline underline1 underflowä Underflow^ undefinedelementUndefinedElement] undefined  undefinedundecidableinstances6UndecidableInstances\ 0uncurryauncurry[ uncons~unconsZ -./  unboxedtuples UnboxedTuplesY ,unboxedѥUnboxedunblockunblockX unambiguous  Unambiguous+ulist%ulist()*uhexdumpFuhexdumpudcode`udcodeuconvwuconvuarrayUArray%&'tyvariTyVarI$ tysyndʦTySynD"tySynD# typesynonyminstancesTypeSynonymInstancesW !types-Types typereptyconN typeRepTyConV typerepkeyp typeRepKeyU typerepargs typeRepArgsT typerepTypeRepS typeqǧTypeQ  typeoperators TypeOperatorsR  typeofdefault typeOfDefaultQ typeof73typeOf7P typeof6defaultTtypeOf6DefaultO typeof6utypeOf6N typeof5defaulttypeOf5DefaultM typeof5typeOf5L typeof4defaultبtypeOf4DefaultK typeof4typeOf4J typeof3defaulttypeOf3DefaultI typeof3;typeOf3H typeof2default\typeOf2DefaultG typeof2}typeOf2F typeof1defaulttypeOf1DefaultE typeof1typeOf1D typeofةtypeOfC typeoftypeilluminatorTypeIlluminator typefamilies, TypeFamiliesB  typecomposeS TypeCompose typeable7s Typeable7A typeable6 Typeable6@ typeable5 Typeable5? typeable4ͪ Typeable4> typeable3 Typeable3= typeable2  Typeable2< typeable1' Typeable1; typeableDTypeable: type-levelf type-leveltype-inttype-inttypeTypetypetypalyze«typalyze tyconuqname tyconUQname tyconstring tyConString9 tyconmodule% tyconModuletyconiBTyConItycon]TyCon8 twoqtwo7 twittertwittertwinsTwinstvarTVartvƬTVtuppجTupPtupP tupletypename tupleTypeNametuplet*TupleTtupleT tupledataname] tupleDataNametuple_tycon_nametuple_tycon_name tuple_tycon tuple_tycontuple_con_name֭tuple_con_name tuple_con tuple_contupleTupletupe(TupEtupEttLtt    trytaketmvarn tryTakeTMVar trytakemvar tryTakeMVar  tryputtmvar tryPutTMVar tryputmvarԮ tryPutMVar tryjusttryJust6 trygetconfigstatefiletryGetConfigStateFiletry=try5 truncate`truncate truelevel} trueleveltrueTrue4 trivialtrivial3 triedɯtriedtrhsx߯trhsxtreehtmltreeHtml treecolors treeColorstree0Tree2 traverse_M traverse_1 traversejtraverse0 traversable Traversable/ transposeg transposeG. transposeͰ transpose, -  translate translate transitional Transitionaltrans9TranstrackerQtrackertracedjtracedtraceTracetrace+ trtr toweekdate toWeekDatetoutf8۱toUTF8touppertoUpper* touchstorablearraytouchStorableArraytouchforeignptrFtouchForeignPtr) totitlehtoTitle( torrenttorrent torational toRationaltopsorttopSort' topkataֲtopkatatopathtemplatetoPathTemplate toordinaldate toOrdinalDatetomodifiedjuliandayJtoModifiedJulianDaytolowerptoLower& tolisttoList ! " # $ % tokenstokens tokenprimexֳ tokenPrimEx tokenprim tokenPrim tokenparser TokenParsertokenFTokentokentojulianyearanddaytoJulianYearAndDaytojuliantoJulian tointegerô toIntegertohtmlfromlisttoHtmlFromListtohtmltoHtml togregorian3 toGregorian toforeignptrV toForeignPtrtoflagttoFlagtoenumtoEnumtodyntoDyn todsectodSectodminҵtodMintodhourtodHourtoconstrtoConstrtochunks"toChunkstobool@toBool toasclist[ toAscList    to_hpj_doc to_HPJ_DoctmvarTMVartitlecaseletterŶTitlecaseLetter titletitletimezonesummeronlytimeZoneSummerOnlytimezoneoffsetstringBtimeZoneOffsetString timezonenamen timeZoneNametimezoneminutestimeZoneMinutestimezoneTimeZonetimetotimeofday߷timeToTimeOfDay timepiece TimePiece~timeoutTimeout}timeout timeofdaytotimeNtimeOfDayToTimetimeofdaytodayfractiontimeOfDayToDayFraction timeofday TimeOfDaytimeǸTime{time|tildepTildePtildePtildeTilde tic-tac-toe. tic-tac-toezthrowtoLthrowTo  throwiojthrowIO throwifnull throwIfNull throwifneg_ throwIfNeg_ throwifneg˹ throwIfNegthrowif_throwIf_throwifthrowIf throwerror! throwErrorthrowerrnopathifnullKthrowErrnoPathIfNullthrowerrnopathifminus1_throwErrnoPathIfMinus1_throwerrnopathifminus1throwErrnoPathIfMinus1throwerrnopathif_throwErrnoPathIf_throwerrnopathifthrowErrnoPathIfthrowerrnopathEthrowErrnoPaththrowerrnoifretrymayblock_ythrowErrnoIfRetryMayBlock_throwerrnoifretrymayblockthrowErrnoIfRetryMayBlockthrowerrnoifretry_throwErrnoIfRetry_throwerrnoifretrythrowErrnoIfRetrythrowerrnoifnullretrymayblockXthrowErrnoIfNullRetryMayBlockthrowerrnoifnullretrythrowErrnoIfNullRetrythrowerrnoifnullǼthrowErrnoIfNull throwerrnoifminus1retrymayblock_ throwErrnoIfMinus1RetryMayBlock_throwerrnoifminus1retrymayblockNthrowErrnoIfMinus1RetryMayBlockthrowerrnoifminus1retry_throwErrnoIfMinus1Retry_throwerrnoifminus1retry̽throwErrnoIfMinus1Retrythrowerrnoifminus1_throwErrnoIfMinus1_throwerrnoifminus13throwErrnoIfMinus1 throwerrnoif_^ throwErrnoIf_ throwerrnoif throwErrnoIf throwerrno throwErrno throwdyntož throwDynTo throwdynthrowDyn throwthrow thristthristythree*three threadwaitwriteJthreadWaitWrite threadwaitreadsthreadWaitRead threadsafe Threadsafe threadkilled ThreadKilled threadidݿThreadId threaddelay threadDelay thisversion ThisVersion thispackageversionGthisPackageVersion thihithihxthetypethetypethetitlethetitlethestylethestylethespanthespanthen thenwthemenu themenuthemap9themapthelinkZthelinkthehtml|thehtmlthefortheforthedivthedivthecodethecodetheclasstheclassthebase$thebasetheadDthead thawstuarrayi thawSTUArraythawthawth-liftth-liftvthTHuthtfoottfoot textfield textfield textdetails" TextDetailstextareaAtextarea~textaTextrst text|} testverbosity testVerbosity{ testresult TestResultz testoptions TestOptionsxytestokTestOkwtestlistTestListv testlabel8 TestLabelu testflagsV TestFlagsst testfailedy TestFailedr testexausted TestExaustedq testedwith testedWith testdistpref testDistPrefp testcommand testCommando testcasepaths& testCasePathsn testcasecountL testCaseCountmtestcasemTestCaseltestbittestBit testaborted TestAbortedktestableTestable jtestTesthtestiterminfoterminfoqterminateprocess'terminateProcess terminalappearanceUterminalAppearancegterminal{TerminalptemplatehaskellTemplateHaskell ftemplate-haskelltemplate-haskellotemplatetemplatentell telltealtealetd/tdbcdtchanJTChanm tcclsnameh TcClsNametbodytbody_`atarrayTArrayl tarprogram tarProgram^targettarget]tartarktanhtanhtantantakusen.Takusenj takewhileJ takeWhile  [\ taketmvar| takeTMVartakemvartakeMVarZ takefilename takeFileNameXYtakeextensionstakeExtensionsVW takeextension takeExtensionTU takedrive4 takeDriveRS takedirectoryZ takeDirectoryPQ takebasename takeBaseNameNOtaketake   LM taitoutctime taiToUTCTimetailstails JKtailtail HItaiepochEtaiEpochtai\TAIitagsouprtagsouphtagtagEFG tabserror TabsError tableTableg tableBCDtabtabAsysunexpecterrorsysUnExpectError@ sysunexpect; SysUnExpect?system-inotifydsystem-inotifyfsystemSystemesystem synthesize synthesize> syntaxerror syntaxError syntaxSyntaxcdsynopsissynopsis symbol"Symbol <symbol= sybwidgetQ SybWidgetbsyb-with-classtsyb-with-classaswfswf` swaptmvar swapTMVarswapmvarswapMVar; surrogate Surrogate supsup89:sundaystartweek!sundayStartWeek sundayafterG sundayAftersumaSum sum suffixtree suffixtree_ succeedreade succeedReadE succsuccsubtractsubtractsubstpathtemplate substPathTemplate67submit1submit345 subforestT subForest sublsub012styleStyle*+style,-./stuarraySTUArray'()sttoiostToIO&stronglyconncomprstronglyConnCompR stronglyconncomp2stronglyConnComp strongTstrong#$%strmsgtstrMsg stripprogram stripProgram" stripprefix stripPrefix stripexes stripExes! stringtok StringTok stringtohtmlstringstringToHtmlString stringtohtmlD stringToHtmlstringtable-atomtstringtable-atom^ stringsearch stringsearch] stringrep StringRep stringliteral stringLiteralstringlStringLstringLstringe2stringE stringconstrU StringConstrstringsStringZ[\ stringstrikestrike stricttypeq StrictTypeQ stricttype StrictType strictTypestricttolazyst1strictToLazyST strictifyT strictifyYstrict-concurrency{strict-concurrencyXstrictStrictQRSTUVstrictWstrefSTRefP  streamproc streamprocOstreampermparser'StreamPermParser  stream-fusionP stream-fusionNstreamoStreamM strattrstrAttr    strategylib StrategyLibLstrategyStrategy strategies StrategiesKstrStrstorablevector%storablevectorJ storablearrayL StorableArraystorable-complexustorable-complexIstorableStorableGH stmtqStmtQstmtStmt stmonadtrans STMonadTransFstmSTMCDstmEstep.stepstemmerEstemmerBstdout^stdout stdinustdin stdgenStdGen stderrstderr stdcallStdCallstdCall stateuser stateUserstatet StateTstatepos3statePos stateinputU stateInputstatetState @stateA starttoken startTokenstartstartstandalonederivingStandaloneDeriving stamp'stamp stackoverflowE StackOverflow stableptrg StablePtr? stablename StableName> stability stability st_sizest_sizest_mtimest_mtimest_modest_modest_inost_inost_dev4st_devstHST<=sseqfsSeqsrcpref}srcPrefsrclocSrcLocsrclinesrcLinesrcinstsrcinst; srcfilename srcFilenamesrcdist SrcDist: srccolumn% srcColumnsrc=srcsquares[squaressqrtvsqrtsqlitesqlite9 splitwith splitWith  splittyconapp splitTyConApp splitsearchpathsplitSearchPath splitpath) splitPath splitobjsK splitObjs splitmemberk splitMember splitlookup splitLookup splitfilename splitFileNamesplitextensionssplitExtensionssplitextensionsplitExtension splitdrive: splitDrivesplitdirectoriesdsplitDirectoriessplitatsplitAt splitsplit  sphinx-cli sphinx-cli8sphinxsphinx7specificpackagedb9SpecificPackageDBspecial-functorsfspecial-functors6specialSpecial sparsecheck sparsecheck5sparkingsparkingsparcSparc sparsParspanend spanEnd span&span spacingcombiningmark^SpacingCombiningMark spacingspacingspacesspaces spaceinvaders SpaceInvaders4 spacehtml spaceHtmlspaceSpace space sourcepos6 SourcePos  sourcenamea SourceName  sourceName  sourceline sourceLine  sourcecolumn sourceColumn sortbysortBy sortsort sonic-visualiser?sonic-visualiser3 somewhered somewhere something somethingsomesome solarisSolaris soegtksoegtk2snocsnoc sndsnd snapshotversion"snapshotVersionsmartcopysourcesMsmartCopySourcessmallchunksizewsmallChunkSize smallcheck smallcheck1smallsmall skipspaces skipSpaces skipmany1 skipMany1skipmanyskipMany sizeof_statD sizeof_statsizeofasizeOf sizedxsized sizesize sinhsinh singleton singleton sin sinsimseqsimseq0simpleuserhooks@simpleUserHooks simpletablef simpleTable simpleprogram simpleProgram simpleparse simpleParse simplematch simpleMatch simplefield simpleField simpleargs simpleargs/simple/Simple. silverKsilversilentcsilent sigpySigPsigPsignumsignum significand significand signalqsemn signalQSemN signalqsem signalQSemsigeSigEsigEsigdASigDsigD shu-thingl Shu-thing- showweekdate showWeekDate showversion showVersion showtreewith showTreeWith showtreeshowTree showtoken, showToken showtextlJ showtextlshowtestedwithmshowTestedWith showstyperep showsTypeRep showstring showString showsprec showsPrec showsigned showSigned showsiarray showsIArrayshows8ShowS shows showpwarningh showPWarning showpathshowPath showparen showParen showpackageid showPackageId showpackagedescriptionshowPackageDescription showorparseargs+ShowOrParseArgsshowordinaldateUshowOrdinalDateshowoctwshowOct showname' showName'shownameshowName showlitchar showLitChar showlistwith showListWith showlistshowList showjulianyearandday>showJulianYearAndDay showjulianh showJulian showintatbase showIntAtBaseshowintshowIntshowinstalledpackageinfofieldshowInstalledPackageInfoField showinstalledpackageinfoshowInstalledPackageInfo showhtmlfragmentPshowHtmlFragmentshowhtml|showHtmlshowhookedbuildinfoshowHookedBuildInfo showhexshowHex showgregorian showGregorian showgfloat showGFloat showfreetext6 showFreeText showforghcX showForGHC showfloatw showFloat showfixed showFixed showfilepath showFilePath showffloat showFFloatshowerrormessagesshowErrorMessages showefloat* showEFloat showcountsJ showCounts showconstrj showConstrshowcompileridshowCompilerIdshowcharshowChar showargsShowArgsshowShow+ show, shiftrshiftR shiftl0shiftL shiftGshift shellac-readlinehShellac-readline*shellac-editlineShellac-editline)shellac-compatlineShellac-compatline(shellacShellac' shell-pipe shell-pipe&shapeshapesh:SH sforceNsforcesflagsfSFlags setupwrapper SetupWrapper% setupWrapper setupmessage setupMessage setupSetup#$setuncaughtexceptionhandler setUncaughtExceptionHandler setstdgen; setStdGen setstateXsetState setsourcename} setSourceName ~ setsourceline setSourceLine |}setsourcecolumnsetSourceColumn z{ setposition setPositionysetpermissions>setPermissions~ setparserstatefsetParserStatex setlocale setlocale"setinputsetInputw seterrorpos setErrorPosvseterrormessagesetErrorMessageusetechosetEchotsetcurrentdirectoryCsetCurrentDirectory} setcookedk setCookedssetbolsetBOLrsetbitsetBit| set_console_echoset_console_echoqset_console_bufferingset_console_bufferingpsetSet!{ sessions0sessions  sequenceqM sequenceQ sequencea_l sequenceA_z sequencea sequenceAy sequence_ sequence_w x sequenceSequencesequenceu v seqtriple seqTripleoseqpairseqPairn seqlistnth: seqListNthmseqlistnXseqListNlseqlistsseqListkseqarrseqArrjseqSeqt sependby1 sepEndBy1isependbysepEndByhsepby1sepBy1fgsepbysepBydesep3sepcsemisep1NsemiSep1bsemisepmsemiSepa semicolon SemiColon`semisemi^_seleniumseleniumselectedselected[\]selectselectXYZseekmode*SeekModes seekfromendI SeekFromEndr sectionrhsectionRWsectionlsectionLVsectionSectionq secondstodifftimesecondsToDiffTimeUsecondsecondp searchresult  SearchResultTsearchpathseparator7searchPathSeparatorRSsearchbynamesubstringosearchByNameSubstringQ searchbyname searchByNameP searchable searchableo sdl-ttfSDL-ttfsdl-mpegSDL-mpeg sdl-mixer SDL-mixer sdl-image1 SDL-imagesdl-gfxMSDL-gfxsdlcSDLsdistverbositysDistVerbosityO sdistverbose sDistVerboseN sdistsnapshot sDistSnapshotM sdisthook sDistHookn L sdistflags SDistFlagsJK sdistdistpref7 sDistDistPrefI sdistcommand\ sdistCommandHsdistysdistG scrolling scrollingEFscriptscriptBCD scratchdir scratchDirAscopedtypevariablesScopedTypeVariablesm @schemes)Schemesscgi@scgi scenegraphZ scenegraphsccsSCCk sccl scanr1scanr1i j ?scanrscanrg h >scanl1scanl1e f =scanlscanlc d ;< scaleimage- scaleimage scalefloatM scaleFloatsatisfyjsatisfy9: sat-micro-hs sat-micro-hssatsat samplevar SampleVar8samplesample567safetySafety4~ saferangesize& safeRangeSize3 safeindexH safeIndex2safecopyesafecopysafe}Safe0|safe1}s_issocks_issock/s_isregs_isreg.s_isfifos_isfifo-s_isdirs_isdir,s_ischrs_ischr+s_isblk0s_isblk*s390GS390b rwst[RWSTxyz{rwszRWS tuvwrwhnfrwhnf) runwritert runWriterTrs runwriter runWriterpq runtesttt runTestTT( runtesttext runTestText'runtests=runTestsa %& runstuarrayd runSTUArray$ runstatet runStateTnorunstaterunStatelm runstarray runSTArray#runstrunST"krunsimplepreprocessor runSimplePreProcessor!runrwst4runRWSTijrunrwsQrunRWSgh runreadertq runReaderT  runreader runReaderrunreaderunReadE` runqrunQfrunptrunPT runprocess runProcess_ runpreprocessorrunPreProcessorrunparserwithmodeJrunParserWithMode runparsertq runParserT runparser runParsere runparsect runParsecTrunprunP^ runlisttrunListT runkleisli  runKleisli] runio&runIOdruninunboundthreadMrunInUnboundThread\ runinteractiveprocessrunInteractiveProcess[ runinteractivecommandrunInteractiveCommandZ runinboundthreadrunInBoundThreadY runidentity runIdentity runerrort. runErrorTruneGrunEX runcontt_runContTruncontzrunCont runcommand runCommandW runrunrulesrules  rtssupportsboundthreadsrtsSupportsBoundThreadsV rss2ircrss2irc rss4rss rsaglHrsagl rs6000_Rs6000U rparenwrparen crowspanrowspan  rowsrowsroundroundrotaterrotateRT rotatelrotateLS rotaterotateR rosezipper7 rosezipper  rootlabelV rootLabelQ roguestar-glw roguestar-glroguestar-engineroguestar-enginernfrnfrmonadrmonadrjsonRJson rightsquare RightSquare rightparen' RightParen rightcurlyG RightCurly rightarrowg RightArrowrightRightO rightP ribbonsperlineribbonsPerLine reviewboard ReviewBoardreversedependencyclosurereverseDependencyClosurereverse/reverseL M N brev]revreturnq{returnQa returninorder ReturnInOrderreturnareturnAK returnreturnJ resultResultH I restrictedtypesynonyms RestrictedTypeSynonymsG  resolutionP resolutionF resizelresizeE reseterrno resetErrnoresetresetreservedopnamesreservedOpNames_` reservedop reservedOp^ reservednames# reservedNames\]reservedLreserved[requireprogramrrequireProgram requireorder RequireOrderreqarg'reqArg'reqargReqArgreqArg reportstart ReportStart reportproblem! ReportProblemreport@reportZreply[Reply replicatem_w replicateM_D replicatem replicateMC replicate replicateA B YreplacefilenamereplaceFileNamereplaceextensionreplaceExtensionreplacedirectoryNreplaceDirectoryreplacediffarray~replaceDiffArrayreplacebasenamereplaceBaseNamerepeatrepeat@ X repconstr repConstr renderstyle  renderStylerenderhtmlwithlanguageB renderHtmlWithLanguagerenderhtmlfragmentv renderHtmlFragment renderhtml  renderHtmlrender render renamefile  renameFile? renamedirectory renameDirectory> rename, renameWremoveregscriptsN removeRegScriptsremoveinstalledconfig removeInstalledConfig removefile  removeFile= removedirectoryrecursive removeDirectoryRecursive< removedirectory removeDirectory; rem) remrelaxedpolyrecF RelaxedPolyRec:  relativeseekp  RelativeSeek9 rel relreify reifyV regverbosity  regVerbosity regverbose  regVerbose regularfile  RegularFile regpackagedb2  regPackageDB registerflagsW  RegisterFlagsregistercommand registerCommandregister Registerregister reginplace  regInPlacereghook regHook8  reggenscript  regGenScript reggenpkgconf7  regGenPkgConfregexqqW regexqqregexprq regexpr regex-tre  regex-tre regex-tdfa  regex-tdfa regex-posix  regex-posixregex-pcre-builtin regex-pcre-builtin regex-pcre regex-pcre regex-parsec@ regex-parsec regex-dfaa regex-dfa regex-compat regex-compat regex-base regex-base regdistpref regDistPrefredred recursivedo RecursiveDo7  recupderror RecUpdError6 recupde=RecUpdETrecUpdEU recselerrorp RecSelError5 recpRecPRrecPSrecoverqrecoverQ recovermp recoverMprecoverrecoverQrecordwildcardsRecordWildCards4  recordpuns= RecordPuns3 recip\recip recconerrorx RecConError2 recconeRecConEOrecConEPreccRecCMrecCN realtofrac realToFracrealpart realPart1 reallocbytes, reallocBytes reallocarray0Q reallocArray0 reallocarrayv reallocArrayreallocreallocrealfracRealFrac realfloat RealFloatrealReal readwritemode ReadWriteMode0 readutf8file( readUTF8File readtmvarI readTMVarLreadtimefreadTime readtchan readTChanK readstref readSTRef/  readstime readsTime readsprec readsPrec. readsigned readSigned readsamplevar' readSampleVar reads_to_precM readS_to_Prec reads_to_pp readS_to_PreadsReadS, reads- readprec_to_s readPrec_to_S readprec_to_p readPrec_to_PreadprecReadPrecreadPrec+ readparen6 readParen* readpackagedescriptionereadPackageDescription) readp_to_s readP_to_S readp_to_prec readP_to_Prec readp_to_e readP_to_E( readpReadPreadoctreadOctreadmvar1readMVarreadmodeMReadMode' readlngreadLn& readlitchar readLitChar% readlistprecdefaultreadListPrecDefault$ readlistprec readListPrec# readlistdefaultreadListDefault" readlist'readList! readlineGreadline readiorefd readIORef readioreadIO readintpreadIntP readinteger readIntegerJreadintreadIntIreadhookedbuildinfo readHookedBuildInfo readhex2readHex readfloatN readFloatreadfilekreadFile  H readfields readFields readertReaderTreaderReader readeorfail readEOrFail readeReadE  readdir8readdir readdiffarrayX readDiffArrayreaddescyreadDesc readdecpreadDecPreaddecreadDec readconstr readConstrreadchanreadChan readarray  readArrayreadable-readable readERead read reactivesreactive reachable reachable rdtscrdtscrbrackrbrackGrbracerbraceFrbrrbrrawsystemstdout'rawSystemStdout'rawsystemstdout@rawSystemStdoutrawsystemprogramstdoutconfurawSystemProgramStdoutConfrawsystemprogramstdoutrawSystemProgramStdoutrawsystemprogramconfrawSystemProgramConf~rawsystemprogramrawSystemProgram} rawsystemexit@ rawSystemExit| rawsystemb rawSystem rawdevice RawDevice{ rationall RationalLyD rationalLzErationalRational rationalxCratioRatio ratRat w ranlibprogram9 ranlibProgramv rankntypes\ RankNTypes u rank2types Rank2Types t rangesize rangeSize rangeqRangeQsB ranged-sets Ranged-setsrangeRangerArange randoms"randoms randomrs=randomRs randomrioZ randomRIO randomrvrandomR randomiorandomIO randomgen RandomGen randomdotorg RandomDotOrgrandom-access-listrandom-access-listrandomRandom random randGrand radio\radioopqr0wr0nqvarsymQVarSymmqvaridQVarIdlquotremquotRemquotesquotesk@quotequotehijquotquotquickcheck-script0quickcheck-script quickcheckW QuickCheck quickCheck quasiQuasi? quantum-arrow quantum-arrow qualified qualifiedqualQualgqsemnQSemNfqsem QSemeqrunio+ qRunIO>qreportD qReport=qreify] qReify<qrecoverw qRecover;qnewname qNewName:qcurrentmodule qCurrentModule9qconsym QConSymdqconid QConIdcq!Qb8pzero!pzero7 pxsl-tools3! pxsl-toolspwarningQ!PWarning puttracemsgx! putTraceMsg puttmvar!putTMVar6puttexttoshows!putTextToShowSaputtexttohandle!putTextToHandle`puttext"PutText^_putstrln#"putStrLn \]5putstrQ"putStr Z[4putstate"putStateYputmvar"putMVarXputchar"putChar put"put3pushcurrentcontext"pushCurrentContextW pushcontextl# pushContextLVpurple7#purpleUpuremd5P#pureMD5pureg#pure punctuate# punctuateT2punc#Punc S pugs-hssyck# pugs-HsSyck pugs-hsregex# pugs-hsregex pugs-drift$ pugs-DrIFT pugs-compat&$ pugs-compatpugsA$Pugs publicdomain]$ PublicDomain ptrtowordptr$ ptrToWordPtr ptrtointptr$ ptrToIntPtr ptr$Ptr ptext$ptextR1pstr$PStrQpsqueue %PSQueuepseq!%pseq ps3%PSPprotocol-buffersQ%protocol-buffersproplangu%proplangproperty%Property property properfraction%properFractionpromote%promote progsuffix% progSuffixOprogramversion#&programVersionN programpathH& programPathM programnamej& programNameLprogramlocation&ProgramLocationJprogramLocationK programid& programIdIprogramfindversion&programFindVersionHprogramfindlocation!'programFindLocationGprogramconfigurationT'ProgramConfigurationF programargs' programArgsEprogram'ProgramCD progprefix' progPrefixBprogdir'progdirAprogarg'ProgArg@prof2dot(prof2dotproduct/(Product product processidd( ProcessID?processhandle__(ProcessHandle__> processhandle( ProcessHandle <=processgroupid(ProcessGroupID;process)Processprocessprobabilitymonads1)ProbabilityMonads probabilityY) probability privateusez) PrivateUse printpackageproblems)printPackageProblems: printftype) PrintfType printfarg) PrintfArg printf-th * Printf-TH printf-mauke,* printf-maukeprintfJ*Printfprintf printm*print primtyconi* PrimTyConI90 primhtmlchar* primHtmlChar678primhtml*primHtml345prime*prime prim+Primpreunreg,+preUnreg 2prettyprintwithmodeW+prettyPrintWithMode1prettyprintstylemode+prettyPrintStyleMode0 prettyprint+ PrettyPrint prettyPrint/prettyhtmlfragment+prettyHtmlFragment,-. prettyhtml, prettyHtml)*+prettyC,Pretty(prettypresdistm,preSDist 'prereg,preReg &preprocesssources,preprocessSources% preprocessor, PreProcessor#$ preprocess- PreProcess preparetree"- prepareTree"preparesnapshottreeL-prepareSnapshotTree! premakefilev- preMakefile prelude-Preludepreinst-preInst  prehscolour- preHscolour  prehaddock- preHaddock  prefixvar. PrefixVarprefixrelativeinstalldirsJ.prefixRelativeInstallDirsprefixy.Prefix/prefixpred.predprecopy.preCopy preconf.preConf preclean.preClean  precedence/ Precedence.prec3/PrecprecprebuildU/preBuild prep/prepqc/pqcppunlit/ppUnlit ppsuffixhandler/PPSuffixHandler  ppsuffixes/ ppSuffixes  ppsemicolon0 PPSemiColon pprvarstricttype/0pprVarStrictType-pprtyappS0pprTyApp, pprstricttypet0 pprStrictType+pprpat0pprPat * pprparendtype0 pprParendType)pprname'0pprName'(pprname0pprName' pprmaybeexp1 pprMaybeExp&pprm/1PprM%pprlitE1pprLit$pprliba1PprLibpprinty1pprint# pprinfixexp1 pprInfixExp" pprfixity1 pprFixity! pprfields1 pprFields pprexp1pprExppprcxt2pprCxtpprbody(2pprBodyppr_listC2ppr_listppr^2Pprppr ppoffsiderule2 PPOffsideRule ppnolayout2 PPNoLayoutpplayout2PPLayoutppinline2PPInLinepphsmode3PPHsModepphsc2hs(3ppHsc2hspphappyC3ppHappy ppgreencarda3 ppGreenCardppfields3ppFields ppfield3ppField ppcpp'3ppCpp'ppcpp3ppCppppc643PPC64 ppc2hs3ppC2hsppc 4PPC ppalex"4ppAlex powermate=4 powermate postunreg[4 postUnreg  postsdist}4 postSDist postreg4postReg  postmaster4 postmaster postmakefile4 postMakefile postinst5postInst  posthscolour(5 postHscolour  posthaddockO5 postHaddock  postgresqlt5 PostgreSQLpostfix5Postfixpostcopy5postCopy postconf5postConf  postclean5 postClean  postbuild6 postBuild  posixtime16 POSIXTimeposixsecondstoutctime[6posixSecondsToUTCTimeposixdaylength6posixDayLengthposix-realtime6posix-realtimeposix6POSIXPosixpos6Posports7portspopenhs 7popenhs popcontextl>7 popContextL popcontext_7 popContextpooledreallocbytes7pooledReallocBytespooledreallocarray07pooledReallocArray0pooledreallocarray7pooledReallocArray pooledrealloc8 pooledReallocpoolednewarray0<8pooledNewArray0poolednewarraye8pooledNewArray poolednew8 pooledNewpooledmallocbytes8pooledMallocBytespooledmallocarray08pooledMallocArray0pooledmallocarray 9pooledMallocArray pooledmalloc59 pooledMallocpoolQ9Pool polyparsen9 polyparsepolymorphiccomponents9PolymorphicComponents poly9Polypolar9polar pokeelemoff9 pokeElemOff pokebyteoff: pokeByteOff pokearray09: pokeArray0 pokearrayX: pokeArraypokeq:poke pointfree: pointfreepngload:pngloadplusptr:plusPtr plugins:pluginsplatformindependent;platformIndependentplain$;plain pkgvervar>; PkgVerVar pkgversion]; pkgVersion pkgurly;pkgUrl pkgstring; pkgString pkgnamevar; PkgNameVarpkgname;PkgNamepkgName pkgidvar;PkgIdVar pkgdescrfile< pkgDescrFilepkgconfigprogramD<pkgConfigProgrampkgconfigdependsp<pkgconfigDepends pkcs1<pkcs1pipe<Pipepicosecondstodifftime<picosecondsToDiffTimepico<Pico pi=pi photoname= photonamephooey4=phooeyphaseK=phase phandlec=PHANDLEpfail{=pfailpesca=pescaperror=PError permute=Permutepermute permutation= permutation permparser> PermParser permissions>> Permissions permissionerrortypel>permissionErrorTypeperm>Permperformtestcase>performTestCase performtest> performTest performgc> performGC penn-treebank? penn-treebank peekelemoff>? peekElemOff peekcwstringlend?peekCWStringLen peekcwstring? peekCWStringpeekcstringlen?peekCStringLen peekcstring? peekCStringpeekcastringlen?peekCAStringLen peekcastring#@ peekCAString peekbyteoffF@ peekByteOff peekarray0g@ peekArray0 peekarray@ peekArraypeek@peek pdf2line@pdf2line pcre-light@ pcre-lightpcap@pcappatternsignaturesAPatternSignatures patternmatchfailAAPatternMatchFail patternguardsjA PatternGuards patqAPatQpathtemplatevariableAPathTemplateVariable pathtemplateA PathTemplatepathseparatorsBpathSeparators pathseparator0B pathSeparatorpathQBPathpath patgetBpatGEpatgBPatGpatGpatBPat passwordBpasswordpassBpass  parzipwithC parZipWith partriple&C parTriplepartitionwithkeyKCpartitionWithKey partitiontC partition parseversionrangeqCparseVersionRangeQ parseversionC parseVersion parseutilsD ParseUtils parsetokenq(D parseTokenQ parsetimeHD ParseTime parseTimeparsetestedwithq|DparseTestedWithQ parsetestD parseTest parsetaiutcdatfileDparseTAIUTCDATFile  parseseplistD parseSepList parserzeroE parserZero parserreturn:E parserReturn parserplus\E parserPlus parserfail|E parserFail parseresultE ParseResult  parsereadeE parseReadE parserbindE parserBindparser FParser  parsequoted7F parseQuoted parsepkgconfigdependencyfFparsePkgconfigDependency parsepackagenameqFparsePackageNameQ parsepackagenameFparsePackageName parsepackagedescriptionFparsePackageDescription parseoptversion-GparseOptVersion parseoptcommalistYGparseOptCommaList parseok}GParseOk  parsemonadG ParseMonadparsemodulewithmodeGparseModuleWithModeparsemodulenameqHparseModuleNameQ parsemodule)H parseModule parsemodeIH ParseModeparselyqHparsely parselicenseqH parseLicenseQ parseinstalledpackageinfoHparseInstalledPackageInfo parsehookedbuildinfoHparseHookedBuildInfo parsefromfile)I parseFromFileparsefilepathq\IparseFilePathQ parsefilenameI parseFilename parsefailedI ParseFailed  parsefailI parseFail parseextensionqIparseExtensionQ parseerror$J ParseError  parsedateOJ parsedateparsectkJParsecTparsecompilerflavorcompatJparseCompilerFlavorCompat parsecommalistJparseCommaList parsecmapJ parsecMapparsec KParsecparsecparsebuildtool@KparseBuildTool parseargscK ParseArgs parseargs parse-dimacsK parse-dimacsparseKparse parsKParSparSparrowsKPArrowsparportLparportparpair*LparPairparmapCLparMap parlistnth_L parListNthparlistn}LparListN parlistchunkL parListChunkparlistLparList parflatmapL parFlatMapparensifLparensIfparensMparens ~ parbufferPPackageDistSuspiciousppackagedistinexcusableuPPackageDistInexcusableopackagedescriptionPPackageDescriptiont u packageDescriptionv packagedepsP packageDepsn packagedbQ PackageDBm packagecheck3Q PackageChecklpackagebuildwarning^QPackageBuildWarningkpackagebuildimpossibleQPackageBuildImpossiblejpackageQPackageq packager s packQpackp hipRPdpefgoverloadedstrings2ROverloadedStringso coverlappinginstancesgROverlappingInstancesn boverflowROverflowm outdegreeR outdegreel otherwiseR otherwisek othersymbolR OtherSymbolj otherpunctuationSOtherPunctuationi otherosoperatorXOperator<operator= opentempfileY openTempFileR openpunctuation-YOpenPunctuationQ openhandleRY OpenHandle;openglnYOpenGLopenfileYopenFileP openbsdYOpenBSDO openbinarytempfileYopenBinaryTempFileN openbinaryfileYopenBinaryFileM openalZOpenAL openafp-utils3Z OpenAFP-UtilsopenafpSZOpenAFP open-witnessrZ open-witness onsideindentZ onsideIndent:onlyZonlyoneofZoneOf9oneofL onelinemodeZ OneLineMode8on [onK omnicodec"[ omnicodecolive<[olive7olistR[olist456old-times[old-time old-locale[ old-localeok[Ok3okJ of[ofoeis[oeisodd[oddoctdigit[octDigit2octal\octal1 occstring8\ occStringoccnameT\OccName objextensions\ objExtension0objectio\ObjectIOobject\object-./obdd\obdd~o_wronly\o_WRONLY,o_trunc\o_TRUNC+o_rdwr]o_RDWR*o_rdonly1]o_RDONLY) o_nonblockO] o_NONBLOCK(o_nocttym]o_NOCTTY'o_excl]o_EXCL&o_creat]o_CREAT%o_binary]o_BINARY$o_append]o_APPEND#nymphaea]nymphaea} numeric-quest^ numeric-quest|numeric-prelude<^numeric-prelude{numeric^^Numericz numeratorz^ numeratorI numelements^ numElements"numbers^numbersynum^Numnullptr^nullPtrH nullfunptr_ nullFunPtrG nullforeignptr%_nullForeignPtr!nullC_null @ A B C D E F  nubby_nubBy? nub_nub> nowrap_nowrapnotthisversion_notThisVersion= notthispackageversion_notThisPackageVersion< notstrict"` NotStrict notStrict notmemberW` notMember8 9 : ; notice~`noticenothing`Nothing7 notfollowedby` notFollowedBynotelem`notElem4 5 6  notassigneda NotAssigned3 not/anot2 noshadeIanoshadenoscriptdanoscriptnormaloptimisationaNormalOptimisation normalisea normalisenormalgeanormalGEnormalgaNormalGnormalGnormalc(bNormalC normalC normalbWbNormalB normalB normalbnormal1 noresizebnoresize norepbNoRepnoparsebNoParse/ 0 nooptimisationbNoOptimisationnontermination!cNonTermination. nonspacingmarkIcNonSpacingMark- noneoficnoneOfnonecNone non-negativec non-negativexnomsgcnoMsgnomonopatbindscNoMonoPatBinds, nomonomorphismrestrictiondNoMonomorphismRestriction+ nominaldifftimeJdNominalDiffTime nomethoderrorrd NoMethodError* nolayoutdNoLayoutnoimplicitpreludedNoImplicitPrelude) nohtmldnoHtmlnohrefdnohrefnoframes!enoframesnoflag?eNoFlag noextraflags]e noExtraFlagsnodeyeNode(  nocopydeste NoCopyDest nobufferinge NoBuffering' nobindseNoBindSnoBindSnoargfNoArgnoArg no_of_tests.f no_of_testsnmergeioMfnmergeIO& nhcprogramkf nhcProgramnhcfNHCw% ngramsfNGramsvnfdatafNFDatanextfnext$ newuniquef newUnique# newtypedgNewtypeDnewtypeDnewtype2gnewtypeu newtmvarioOg newTMVarIOnewtmvarmgnewTMVar newtchaniog newTChanIOnewtchangnewTChannewstrefgnewSTRef"  newstdgeng newStdGen! newstableptrh newStablePtr newsamplevar+h newSampleVarnewqsemnKhnewQSemNnewqsemfhnewQSemnewposhnewPosnewportshnewportstnewpoolhnewPoolnewnamehnewNamenewmvarhnewMVar newlistarrayi newListArraynewline2inewlinenewiorefQinewIORef newforeignptrenvuinewForeignPtrEnv newforeignptr_inewForeignPtr_ newforeignptri newForeignPtr  newerrorunknowninewErrorUnknownnewerrormessage jnewErrorMessagenewemptytmvarioNjnewEmptyTMVarIO newemptytmvarvj newEmptyTMVarnewemptysamplevarjnewEmptySampleVar newemptymvarj newEmptyMVar newdiffarrayj newDiffArraynewcwstringlenknewCWStringLen newcwstring8k newCWString newcstringlen\k newCStringLen newcstringk newCStringnewchanknewChannewcastringlenknewCAStringLen newcastringk newCAString newbinaryl NewBinarys newarray_ l newArray_ newarray0Fl newArray0newarrayclnewArraynewlnew  network-rpcal network-rpcarnetwork-multicastlnetwork-multicastqnetwork-minihttplnetwork-minihttpp network-dns"m network-dnsonetwork-connectionKmnetwork-connectionnnetwork-bytestring{mnetwork-bytestringmnetworkmnetworklnetbsdmNetBSD nestedcommentsmnestedCommentsnestedatomically nNestedAtomically nestdepth0n nestDepthnestInnestnegatecnnegatenavyynnavynaturalorfloatnnaturalOrFloatnaturalnnaturalnatnnatk nanocursesn nanocursesjnano-md5 onano-md5i nano-hmac*o nano-hmachnameuDoNameU namespace^o NameSpacenamesxoNameSnameqoNameQ namemoduleo nameModulenameloNameLnameisoNameIsnamegoNameG nameflavourp NameFlavournamedfieldpuns7pNamedFieldPuns namebase]pnameBasenameypNamenamemzeropmzero mythreadidp myThreadId mvarpMVargmunch1pmunch1munchqmunchmultiset+qmultisetfmultipleGqmultiplemultiparamtypeclassesxqMultiParamTypeClasses  multioptionq multiOptionmuevalqmuevalemtlparseqmtlparsedmtl-tfqmtl-tfcmtlrmtlbmsum!rmsum  mplus:rmplus mpdmateRrmpdmatea movebytesnr moveBytes movearrayr moveArray moreverboser moreVerbose monthlengthr monthLengthmonthdayrMonthDay`monthanddaytodayofyearsmonthAndDayToDayOfYearmonoid?sMonoid_ mondriandef`s mondrianDefmondriansmondrianmondaystartweeksmondayStartWeek monadtranss MonadTrans monadrandoms MonadRandom^ monadpromptt MonadPrompt] monadplus2t MonadPlus monadlibOtmonadLib\monadiusktMonadius[monadiotMonadIOmonadfixtMonadFixmonadenvtmonadenvZ monadcontt MonadCont monad-paramt monad-paramYmonaduMonadX mohws8umohwsW modulepathSu modulePath moduleouModulemoduleV modstringu modStringmodnameuModName modjuliandateu ModJulianDate modifystrefu modifySTRef  modifystate v modifyState modifymvar_Bv modifyMVar_ modifymvarcv modifyMVar modifyiorefv modifyIORef modifyioerrorv modifyIOErrormodifyvmodifymodifiersymbolvModifierSymbol modifierletterwModifierLetter modifiedjulianday:wModifiedJulianDaymode[wModemodemod'ywmod' modwmodmmapwmmapU mkweakptrw mkWeakPtr mkweakpairw mkWeakPair mkweakiorefw mkWeakIORef mkweakxmkWeak mktyconapp1x mkTyConApp mktyconNxmkTyCon mktdxmkT mkstringtypex mkStringTypemkstringconstrxmkStringConstrmkstdgenxmkStdGen mksimplepreprocessorxmkSimplePreProcessormksharedlibnameymkSharedLibNamemkrecconstrorupdateLymkRecConstrOrUpdatemkrnymkRmkqymkQ mkproflibnamey mkProfLibNamemkprocesshandleymkProcessHandlemkpolarymkPolar mkpkgnamez mkPkgName mkoptdescr!z MkOptDescr mkoccname@z mkOccName mknoreptype`z mkNorepTypemknameu~zmkNameUmknamelzmkNameL mknameg_tcz mkNameG_tcmknamezmkNamemkmpzmkMp mkmodname{ mkModNamemkm{mkM mklibname4{ mkLibName mkioerrorR{ mkIOError mkinttypep{ mkIntType mkintconstr{ mkIntConstrmkfunty{mkFunTy mkfloattype{ mkFloatType mkfloatconstr{ mkFloatConstrmkflag|MkFlag mkdir&|mkdir mkdatatypeA| mkDataType mkdatadir`| mkDataDirmkconstr}|mkConstrmkcabal|mkcabalTmkbndl|mkbndlSmkappty|mkAppTy missingpy| MissingPyRmissingh}MissingHQmips}Mipsminviewwithkey9}minViewWithKeyminview^}minViewminutestotimezone}minutesToTimeZoneminusptr}minusPtrminus}Minusminprec}minPrecminiplex}miniplexP minimumby~ minimumByminimum8~minimumminesh~minesOminbound~minBound~min~min} mime-string~ mime-stringNmime~mimeMmidnight~midnightmidimidiLmiddaymidday~ microbench3 microbenchKmicroNMicromfixcmfix}methodymethodz{|metaplugmetaplugJ metaobject MetaObjectImetametawxy messagestring messageStringv messageeq messageEqmessagecompareAmessageComparemessagebMessagetumersenne-random-pure64mersenne-random-pure64Hmersenne-randomȀmersenne-randomGmergeiomergeIOmergeerrorreply mergeErrorReplys mergeerror1 mergeErrorrmergePmergeqmenuemenunopmemsetmemsetmmemptymemptymemotrieMemoTrieF memcpy_thawԁ memcpy_thawlmemcpy_ptr_baoffmemcpy_ptr_baoffk memcpy_freeze$ memcpy_freezejmemcpyCmemcpyimemcmp[memcmphmemchrsmemchrgmembermembermemMemEmdomdoCDmconcat؂mconcat maybewith maybeWithf maybetolist maybeToListmaybet1MaybeTB maybepeekL maybePeekemaybenewimaybeNewdmaybenchmaybenchAmaybegetpersistbuildconfigmaybeGetPersistBuildConfigc maybeexit maybeExitbmaybeMaybe@{maybe|maxviewwithkey2maxViewWithKeymaxviewWmaxView maxprecedence maxPrecedencea maxlength maxlength^_`maximumoptimisationՄMaximumOptimisation] maximumby maximumBymaximummaximumz[\maxconstrindexVmaxConstrIndexZmaxboundxmaxBoundymaxmaxx matrix-market matrix-market? mathsymbol҅ MathSymbolmatchqMatchQYmatch MatchVWmatchXmarshal<Marshal>marrayUMArray=TUmaroonumaroonS markov-chain markov-chain< marginwidth marginwidthQR marginheight݆ marginheightOP mapwritert mapWriterT mapwriter& mapWriter mapwithkeyI mapWithKey mapstatetl mapStateTmapstatemapStatemaprwstmapRWSTmaprwsɇmapRWS mapreadert mapReaderTN mapreader mapReaderMmappend$mappend mapmonotonicC mapMonotonicmapmaybewithkeyjmapMaybeWithKeymapmaybemapMaybemapm_mapM_wmapmψmapMvmaplisttmapListTL mapkeyswith mapKeysWithmapkeysmonotonic5mapKeysMonotonicmapkeysXmapKeys mapindicesu mapIndicesJK mapexception mapException maperrort mapErrorTImapeitherwithkeymapEitherWithKey mapeither  mapEithermapcontt+mapContTHmapcontFmapContGmaparrayamapArrayEF mapandunzipm mapAndUnzipMmapaccumwithkeymapAccumWithKey mapaccumrԊ mapAccumRCD mapaccuml mapAccumLABmapaccum/mapAccummapJMap;map u?@manytillmanyTill=> manyaccum manyAccum<many1ыmany1:;manymany89mandirmandir7mallocforeignptrbytes7mallocForeignPtrBytesmallocforeignptrarray0nmallocForeignPtrArray0mallocforeignptrarraymallocForeignPtrArraymallocforeignptr֌mallocForeignPtrmallocbytestringmallocByteString6 mallocbytes) mallocBytes5 mallocarray0L mallocArray04 mallocarrayo mallocArray3mallocmalloc2 makevalid makeValid01maketokenparserύmakeTokenParser/makestablenamemakeStableName.makerelativetocurrentdirectory4makeRelativeToCurrentDirectory makerelativej makeRelative,-makefileverbositymakefileVerbosity+makefileverboseÎmakefileVerbose* makefilehook makefileHook) makefileflags MakefileFlags'( makefilefile< makefileFile&makefiledistprefdmakefileDistPref%makefilecommandmakefileCommand$makefilemakefile"# makecommandՏ makeCommand!makeMake: maintainer maintainer main_name1 main_name main_modNmain_mod magnitudek magnitude magichash MagicHashmagicmagic9magemage8m68kАM68klucuLucu7ltLTtlstat lstatlru!LRU6lparen6lparenlowercaseletter[LowercaseLetter lowercase lowercaselowerlowerlossofprecisionLossOfPrecisionloopܑloop lookupprogram lookupProgramlookuppackagename#lookupPackageNamelookuppackageidOlookupPackageIdlookupknownprogram|lookupKnownProgram lookupindex lookupIndexlookupdependency̒lookupDependencylookuplookups lookahead lookAheadlook6look longestchainV longestChainlogicttlogict5logfloatlogfloat4logbaselogBaserloglogqlochғloch3 locationpath locationPathlocatederrormsglocatedErrorMsglocaltoutctimeofdayGlocalToUTCTimeOfDaylocaltimetoutctlocalTimeToUTClocaltimetout1localTimeToUT1 localtimeofdayĔlocalTimeOfDay  localtime LocalTime2   localpkgdescr localPkgDescr localday2localDaylocalbuildinfofileXlocalBuildInfoFilelocalbuildinfoLocalBuildInfo1locallocalllvmllvm0litpԕLitPlitPliteLitElitElitLit listuarraystB listUArrayST listuarrayd ListUArray listtomaybe listToMaybelisttListTlistTlistpҖListPlistPlistlikeListLike/listitemListItemlistify5listify listfieldQ listFieldlistensmlistenslistenlisten~listeListE|listE}listassertableϗListAssertable listassert listAssert listarrayst listArrayST listarray4 listArraylist_cons_name[list_cons_name list-extras list-extras.listList,- lispparser lispparser+linuxԘLinuxlinkchklinkchk*linklink linetohtml lineToHtml linestohtmlF linesToHtml lineseparatorr LineSeparatorlineslinesp{ linepragmas linePragmaslinenoՙLineNolineNo linelength lineLength linebuffering$ LineBufferingline2pdfEline2pdf)line]Linezlimit~Limitlimelimelighttpd-conf-qqlighttpd-conf-qq( lighttpd-confܚ lighttpd-conf' liftoption liftOptionliftm5liftM5liftm43liftM4liftm3KliftM3liftm2cliftM2liftmzliftMliftioliftIO liftfield liftFieldlifta3ǛliftA3lifta2ߛliftA2liftaliftAlift Liftxlifty licensefile8 licenseFilelicenseVLicense&licenselibxmllibxml% libsubdirvar LibsubdirVar libsubdirǜ libsubdir librarydirs libraryDirslibraryLibrarylibrarylibmpd/libmpd$ libmodulesK libModuleslibgenihlibGenI# libexecdir libexecdirliberaltypesynonymsLiberalTypeSynonyms libdirvarڝ LibdirVarlibdirlibdir libbuildinfo libBuildInfo~lib.Lib"li?lilhs2tex\lhs2tex!lgplsLGPL|}lflagsLFlagslexwhilelexWhilelextablexTablexpמlexP{ lexnewline lexNewline lexlitchar lexLitCharzlexer,Lexer lexerlexemeNLexemeylexemew lexdigits} lexDigitso lexcontext LexContextlexcharlexCharlexϟLexlexnxlevelslevelsw letternumber LetterNumbervletter5lettervletsOLetStletSu letindentz letIndentleteLetErletEsletlet lessverboseҠ lessVerboseu lengtharray0 lengthArray0length_of_testslength_of_testslength=lengthmrstqleksahmleksahlegendlegend leftsquare LeftSquare leftparenȡ LeftParenleftmodeLeftMode leftcurly LeftCurly leftarrow  LeftArrowleftapp<leftAppqleftSLeftloleftpleapsecondtableLeapSecondTablep ldprogram ldProgram ldoptions¢ ldOptionsmnldapߢLDAPlcslcslcmlcmklbracklbrackolbrace5lbracenlazytostrictstYlazyToStrictSTmlazysmallchecklazysmallcheck lazyarray lazyarraylazyLazylayoutLayoutlayoutlax lax laterversion' LaterVersionllastCLasthilastjjkl languagedef LanguageDefhijk language-c language-clanguageפLanguagelangLang langlameLamEflamEg lambdashellF LambdaShell  lambdahackg LambdaHack  lambdafeed lambdaFeed lambdabot-utilslambdabot-utils  lambdabotХ lambdabotlam1elam1Eelabelslabelsdlabel Labellabelgckw_whereXKW_Where kw_unsafeu KW_Unsafekw_typeKW_Typekw_thenKW_Thenkw_safeŦKW_Safe kw_qualified KW_Qualifiedkw_ofKW_Of kw_newtype KW_NewType kw_module; KW_Modulekw_letVKW_Let kw_instances KW_Instance kw_infixr KW_InfixR kw_infixl KW_InfixLkw_infixΧKW_Infixkw_inKW_In kw_import KW_Importkw_ifKW_If kw_hiding5 KW_Hiding kw_foreignT KW_Foreign kw_exports KW_Exportkw_elseKW_Elsekw_doKW_Do kw_derivingè KW_Deriving kw_default KW_Defaultkw_dataKW_Datakw_classKW_Classkw_case7KW_Casekw_asOKW_AsknownsuffixhandlerssknownSuffixHandlers knownprograms knownProgramsknownextensionsǩknownExtensionsknownbuildtypesknownBuildTypesfkleisliKleislidekindsignatures8KindSignaturesc killthread` killThreadbkibro{kibrokeywordkeywordkeyssetkeysSet`akeysȪkeys^_keyboardkeyboard}~keyKey]kbq-gukbq-gujust.Justi\julianmonthlengthSjulianMonthLengthbjulianvJulianjsonjsonjoinpathjoinPath{| joindriveū joinDriveyzjoinjoin[ jhcprogram jhcProgramxjhcJHCZ javastyle1 javaStylewajackNjackixmapcixmapuvixzIxYivorivoriterateiteratehXt`italicsͬitalicsqrsitagitagnop isvaliderrno isValidErrnomisvalid/isValidklisusererrortypeUisUserErrorTypej isusererror{ isUserErroriisupperisUpperW istotalorder isTotalOrderhissymbolحisSymbolV issuffixof isSuffixOfTUfg issubsetof" isSubsetOfRS issubmapofbyH isSubmapOfByPQ issubmapofn isSubmapOfNOisstringIsStringMisstrictIsStricte_ isspaceword8Ю isSpaceWord8d isspacechar8 isSpaceChar8cisspaceisSpaceLissigned.isSignedK isseparatorM isSeparatorJissearchpathseparatoryisSearchPathSeparatorab isrelative isRelative_` ispunctuationϯ isPunctuationIispropersubsetofisProperSubsetOfGHispropersubmapofby*isProperSubmapOfByEFispropersubmapof\isProperSubmapOfCDisprintisPrintB isprefixof isPrefixOf@A]^^ispermissionerrortype۰isPermissionErrorType\ispermissionerror isPermissionError[ispathseparator9isPathSeparatorYZ isoctdigitb isOctDigit?isnumberisNumber> isnothing isNothing= isnoreptype isNorepTypeXisnohtmlܱisNoHtmlUVWisnegativezeroisNegativeZerogisnan%isNaNfismark<isMark<ismapSismapRSTislowersisLower;isletterisLetter: isleapyear isLeapYearQ]islatin1βisLatin19isjustisJust8isjulianleapyear isJulianLeapYear\ isinfixof/ isInfixOf67OP isinfiniteZ isInfiniteeisindexwisindexNisillegaloperationerrortypeisIllegalOperationErrorTypeMisillegaloperation޳isIllegalOperationLisieeeisIEEEd ishexdigit isHexDigit5isfullerrortypeCisFullErrorTypeK isfullerrori isFullErrorJisextseparatorisExtSeparatorHIiseoferrortypeisEOFErrorTypeG iseoferror޴ isEOFErrorFiseofisEOF4 isemptytmvar isEmptyTMVar[ isemptytchan: isEmptyTChanZisemptysamplevarbisEmptySampleVarE isemptymvar isEmptyMVarD isemptychan isEmptyChanCisemptyɵisEmptyBYisdriveisDrive@AisdoesnotexisterrortypeisDoesNotExistErrorType?isdoesnotexisterrorKisDoesNotExistError>isdigitqisDigit3isdenormalizedisDenormalizedciscurrentthreadboundisCurrentThreadBound2 iscontrol isControl1iscommutableby isCommutableBy= iscommutable2 isCommutable<ischarPIsChar0isbottomjisBottom;isassociativebyisAssociativeBy: isassociative isAssociative9 isasciiupperڷ isAsciiUpper/ isasciilower isAsciiLower.isasciiisAscii- isanyversion< isAnyVersion,isalreadyinuseerrortypekisAlreadyInUseErrorType8isalreadyinuseerrorisAlreadyInUseError7isalreadyexistserrortypeظisAlreadyExistsErrorType6isalreadyexistserrorisAlreadyExistsError5 isalphanum: isAlphaNum+isalphaWisAlpha* isalgtypes isAlgType4 isabsolute isAbsolute23irixIRIX) ircbouncerʹ ircbouncerircircipprintipprintipcipciouarray&IOUArray1 iotodiffarrayG IOToDiffArray0iospecfIOSpecioref}IORef(iorIORiomodeIOMode' ioexceptionǺ IOException%&ioesetlocationioeSetLocation/ ioesethandle ioeSetHandle.ioesetfilename<ioeSetFileName-ioeseterrortypeeioeSetErrorType,ioeseterrorstringioeSetErrorString+ ioerrortype IOErrorType*ioerrorsػioErrors$ioerrorIOErrora(ioErrorb#)ioegetlocation-ioeGetLocation' ioegethandleS ioeGetHandle&ioegetfilenameyioeGetFileName%ioegeterrortypeioeGetErrorType$ioegeterrorstringμioeGetErrorString#ioIO`" invariant invariantXinttoverbosity3intToVerbosity!inttokSIntTok" inttodigito intToDigit intsetIntSetintrepIntRep! intptrtoptrĽ intPtrToPtrintptrIntPtrintprimlIntPrimLVintPrimL Wintmap+IntMap intersperseL intersperseUintersectversionrangesIntersectVersionRangesintersectionwithkeyintersectionWithKeyintersectionwithintersectionWith intersection intersection intersectbyL intersectBy intersectl intersect internals InternalsinternalInternal interlude̿ interludeinterleavableiointerleavableIOinterleavablegeninterleavableGen intercalateB intercalate Tinteractuinteract_  SintegralIntegral^integerlIntegerLQintegerLRintegerInteger]integerOP intconstr' IntConstrintattrCintAttrint8bInt8 int64wInt64 int32Int32int16Int16intInt\intNinsthookinstHook  instances  Instances instanced. InstanceD L instanceD MinstancebinstanceinstallverbosityinstallVerbosity installverboseinstallVerbose installpackagedbinstallPackageDB installlib installLibinstallincludes-installIncludes installflagsT InstallFlags installexez installExe installedpkgs installedPkgsinstalledpackageinfo_InstalledPackageInfo_installedpackageinfoInstalledPackageInfoinstalldistpref?installDistPrefinstalldirtemplatesmInstallDirTemplatesinstallDirTemplates installdirs InstallDirsinstallcommandinstallCommandinstallInstallinstallinsertwithkey'0insertWithKey' insertwithkeyW insertWithKey insertwith' insertWith' insertwith insertWithinsertlookupwithkeyinsertLookupWithKeyinsertbyinsertByinsertinsertins?insinrange]inRangeinrsInrinputinputinlineperformioinlinePerformIOinlInlinitsinitsK initialquote InitialQuote initialpos0 initialPosJinitialpathtemplateenv`initialPathTemplateEnvinitialbuildstepsinitialBuildStepsinitinit[IinfoqInfoQHinfoInfoGinfoinfixrInfixRFinfixrinfixpFInfixPDinfixPEinfixnrInfixNCinfixlInfixLBinfixlinfixeInfixE@infixEAinfixcInfixC>infixC?infixappinfixApp=infix-Infix;<infixinfinityainfinityindirzinDirindicesindicesindexoutofboundsIndexOutOfBounds indexconstr indexConstrindexindex: indentparser- IndentParserindentKIndentindegreeeindegree incsourceline incSourceLine9incsourcecolumnincSourceColumn8incoherentinstancesIncoherentInstancesincludesincludes includedirsB includeDirs includedirg includedirinblobsINblobsinin importspecs importSpecsimportqualifiedimportQualified importmodule importModule importloc  importLocimportf<ImportF7 importdirs] importDirsimportas{importAsimportimportimplicitparamsImplicitParamsimplImplimlibImlibimagpartimagPartimageimageillegaloperationerrortypePillegalOperationErrorType ignoreunrec ignoreUnrecifsIFSiframeiframeiffiffifblockIfBlockifif iexception iException ieee-utils' ieee-utilsieeeAieee identstart[ identStart56 identletter identLetter34identityIdentity identifier identifier2identIdentididZiconv*iconviarrayAIArrayia64_IA64i386sI386i18ni18nhybridhybridhxwebhxweb hxt-filter hxt-filterhxthxthxqHXQ hwaitforinput hWaitForInputhunit4HUnit hugsprogramT hugsProgram hugsoptionsv hugsOptionshugsHugshughespjHughesPJ httpequiv httpequiv http-simple HTTP-Simplehttp HTTPhtmltree%HtmlTree htmltableB HTMLTABLE HtmlTablehtmlnodenHtmlNodehtmlleafHtmlLeaf htmldirvar HtmldirVarhtmldirhtmldirhtmlattrHtmlAttrhtmlAttrhtmlHTMLHtmlhtmlhtfMHTFhtellahTellhtarvhtarhsysloghsyslog hsxenctrl hsXenCtrl hsx-xhtml hsx-xhtmlhsxhsx hswildcard HsWildCardhsvaropHsVarOp hsvarname1 HsVarNamehsvarKHsVarhsunsafedHsUnsafe hsunitcon HsUnitConhsunguardedrhsHsUnGuardedRhshsunguardedaltHsUnGuardedAlt hsunbangedty HsUnBangedTyhstyvarHsTyVar hstytuple- HsTyTuple hstypesigK HsTypeSig hstypedeclj HsTypeDeclhstypeHsTypehstyfunHsTyFunhstyconHsTyConhstyappHsTyApp hstuplecon HsTupleConhstuple HsTuplehstringtemplate/HStringTemplatehstidyPhstidyhstatshhstatshssymbolHsSymbolhssyckHsSyckhssvnHsSVN hsstringprim HsStringPrimhsstringHsStringhsstmt HsStmt hssqlite3% hsSqlite3 hsspecialconF HsSpecialCon hssourcedirsj hsSourceDirshssafetyHsSafetyhssafeHsSafehsrightsectionHsRightSectionhsrhsHsRhs hsrecupdate HsRecUpdate hsrecdecl HsRecDecl hsrecconstr? HsRecConstrhsqvarop^HsQVarOp~ hsqualtype| HsQualType|} hsqualifier HsQualifier{hsqopHsQOpzhsqnameHsQNamey hsql-sqlite3 hsql-sqlite3hsql-postgresqlhsql-postgresql hsql-odbc? hsql-odbc hsql-mysql^ hsql-mysqlhsqlxhsqlhsqconopHsQConOpx hspwildcard HsPWildCardwhspvarHsPVarvhsptupleHsPTupleuhsprecHsPRecthspreadhspreadhspr-sh3hspr-shhspparenNHsPParenshspneghHsPNegrhsplitHsPLitqhsplistHsPListp hspirrpat HsPIrrPato hspinfixapp HsPInfixAppn hspfieldpat HsPFieldPatmhsperl5HsPerl5 hspatfield2 HsPatFieldl hspatbindQ HsPatBindkhspatkHsPatjhspaspatHsPAsPatihsparrotHsParrot hsparklines hsparklineshsparenHsParenhhspappHsPAppghspacehspacefhsp-cgi'hsp-cgihsp=hsp hsoundfileV HSoundFile hsopensslu HsOpenSSLhsopHsOpehsntphsntphsnshsns hsnewtypedecl HsNewTypeDecldhsnegappHsNegAppchsndfilehsndfilehsname,HsNamebhsmoduleFHsModule`ahsmatcheHsMatch^_hsmagickhsmagickhsluahslua hslogger4j hslogger4jhsloggerhslogger hsliteral HsLiteral]hslit HsLit\ hslistcon' HsListCon[ hslistcompF HsListCompZhslistbHsListY hslibraries hsLibrarieshslexhsLexX hsletstmt HsLetStmtWhsletHsLetV hsleftsection HsLeftSectionUhslambdaHsLambdaT hslackbuilder/ hslackbuilderhsjudyNHsJudyhsivarfHsIVarS hsithingwith HsIThingWithR hsithingall HsIThingAllQhsirrpatHsIrrPatP hsintprim HsIntPrimOhsintHsIntN hsinstdecl HsInstDeclM hsinfixdecl9 HsInfixDeclL hsinfixappZ HsInfixAppK hsimportspec| HsImportSpecJ hsimportdecl HsImportDeclHIhsifHsIfGhsidentHsIdentFhsiabsHsIAbsEhshyperestraierHsHyperEstraierhshow1hShow hsharupdfK HsHaruPDFhshcHSH hsguardedrhss HsGuardedRhssD hsguardedrhs HsGuardedRhsBC hsguardedalts HsGuardedAlts@A hsguardedalt HsGuardedAlt>?hsgnutlshsgnutls hsgenerator9 HsGenerator=hsfunconXHsFunCon< hsfunbindu HsFunBind;hsfracHsFrac:hsforeignimportHsForeignImport9hsforeignexportHsForeignExport8 hsfloatprim HsFloatPrim7 hsfieldupdate% HsFieldUpdate56 hsexptypesigN HsExpTypeSig4 hsexportspecr HsExportSpec3hsexpHsExp2hsevarHsEVar1hsetposnhSetPosn hsethingwith HsEThingWith0 hsethingall HsEThingAll/ hsetfilesize& hSetFileSizehsetechoFhSetEcho hsetbufferingg hSetBufferinghsetbinarymodehSetBinaryModehsephsep.1 hsenumfromto HsEnumFromTo-hsenumfromthentoHsEnumFromThenTo,hsenumfromthenHsEnumFromThen+ hsenumfromB HsEnumFrom*hsemodulecontentsiHsEModuleContents)hsemailhsemailhseekhSeekhseabsHsEAbs( hsdoubleprim HsDoublePrim'hsdoHsDo&hsdns hsdnshsdip!hsdip hsdefaultdecl? HsDefaultDecl%hsdecl^HsDecl$ hsdatadeclz HsDataDecl#hscurseshscurses hscontext HsContext"hsconsHsCons!hsconopHsConOp  hsconname HsConName hscondecl# HsConDeclhsconAHsConhscolourverbositychscolourVerbosityhscolourverbosehscolourVerbosehscolourprogramhscolourProgram hscolourpref hscolourPref hscolourhook hscolourHook hscolourflags- HscolourFlagshscolourexecutables]hscolourExecutableshscolourdistprefhscolourDistPref hscolourcss hscolourCSShscolourcommandhscolourCommandhscolourhscolourhscnameHsCNamehsclock5hsclock hsclassdeclS HsClassDecl hscharprimt HsCharPrim hscharHsChar hscaseHsCase hsc3hsc3 hsc2hsprogram hsc2hsProgram hsc2hshsc2hs hsbangtype HsBangType  hsbangedty6 HsBangedTyhsasstRHsAsst hsassocrightp HsAssocRight hsassocnone HsAssocNone hsassocleft HsAssocLefthsassocHsAssochsaspatHsAsPathsappHsApphsaltHsAlths33hS3hs-pgmsIhs-pgmshs-fltkchs-fltkhreflang~hreflanghrefhrefhreadyhReadyhrayHRayhrhrhpuxHPUX hputstrln hPutStrLnhputstr;hPutStrhputcharbhPutCharhputbufnonblockinghPutBufNonBlockinghputbufhPutBuf hputarray hPutArrayhputhPut0 hprintftype  HPrintfTypehprintf'hPrintfhprint@hPrinthppaVHppahpoddermhpodderhpdfHPDFhpchpchpastehpastehourstotimezonehoursToTimeZone hotlinkurl hotLinkURLhotlinkcontentshotLinkContentshotlinkattributesShotLinkAttributeshotlinkHotLinkhotlinkhoschoschopensslhopensslhookedprogramshookedProgramshookedpreprocessors*hookedPreProcessorshookedbuildinfo\HookedBuildInfohoogle}hooglehomepagehomepage homeomorphic homeomorphichogghogghnophnophmpfHmpfhmp3hmp3hmm&hmmhmatrix<hmatrixhmarkupVhmarkup hmakeprogramu hmakeProgram hlookahead hLookAheadhlistHListhjscriptHJScripthjshjs hjavascript HJavaScript hiswritable hIsWritablehisterminaldeviceFhIsTerminalDevice hisseekablen hIsSeekable hisreadable hIsReadablehisopenhIsOpenhiseofhIsEOF hisclosed hIsClosedhipmunkplaygroundHipmunkPlayground~hipmunk,Hipmunk} hinvadersH hinvaders|hintahint{ hinstaller{ hinstallerzhinotifyhinotifyyhimergehimergex highwatermark highWaterMarkwhighlighting-katehighlighting-katevhiding!hidingu hiddenmodules@ hiddenModuleshidden_hiddenhiccuphiccupthglHGLshgetposnhGetPosnhgetnonblockinghGetNonBlocking/hgetlinehGetLinehgetecho!hGetEcho hgetcontentsA hGetContents.hgetcharqhGetCharhgetbufnonblockinghGetBufNonBlocking hgetbuffering hGetBufferinghgetbufhGetBuf hgetarray hGetArrayhgethGet- hgeometric= hgeometricrhgdbmiYhgdbmiqhgalohgalphg-buildpackagehg-buildpackageohfuseHFusenhfovhfovmhflushhFlush hfilesize hFileSizehfannhfannlhexpat%hexpatkhexdigit?hexDigit, hexadecimalb hexadecimal+hetrishetrisj heredocuments HereDocumentsheliumHeliumhelisphelispiheightheighthediHedih heapoverflow/ HeapOverflowheapKheapgheaderaheaderheadheadY* hdbc-sqlite3 HDBC-sqlite3fhdbc-postgresqlHDBC-postgresqle hdbc-odbc HDBC-odbcdhdbcHDBCchcsound*hCsoundb hcoptionsF hcOptionshcodecsbHCodecsahclose{hClosehclHCL`hcathcat)hburghburg_hbeathbeat^hbcHBChbackhback]haxr-thhaxr-th\haxr)haxr[haxml>HaXmlZhastrailingpathseparatorghasTrailingPathSeparator hasresolution HasResolutionhaslibshasLibs haskellstyle haskellStyle( haskelldef haskellDef'haskelldb-hsql-sqlite31haskelldb-hsql-sqlite3Yhaskelldb-hsql-sqlitehhaskelldb-hsql-sqliteXhaskelldb-hsql-postgresqlhaskelldb-hsql-postgresqlWhaskelldb-hsql-odbchaskelldb-hsql-odbcVhaskelldb-hsql-mysql haskelldb-hsql-mysqlUhaskelldb-hsql;haskelldb-hsqlThaskelldb-hdbc-sqlite3khaskelldb-hdbc-sqlite3Shaskelldb-hdbc-postgresqlhaskelldb-hdbc-postgresqlRhaskelldb-hdbc-odbchaskelldb-hdbc-odbcQhaskelldb-hdbc haskelldb-hdbcPhaskelldb-flat3haskelldb-flatOhaskelldb-dynamic^haskelldb-dynamicN haskelldb haskelldbM haskell98 haskell98Lhaskell-src-extshaskell-src-extsK haskell-src haskell-srcJhaskell-in-spacehaskell-in-spaceIhaskell8haskell& haskelineX haskelineH hask-homev hask-homeGhasimhasimF hashunique hashUnique hashtable HashTableE hashstring hashStringhashstablenamehashStableNamehashint2hashInthashellLHashellD hasextensionk hasExtensionhasexeshasExeshasdrivehasDriveharpyharpyCharpharpBharchiveharchiveA happyprogram happyProgramhappy0happy@ happs-utilK HAppS-Util?happs-tutorialohapps-tutorial> happs-state HAppS-State= happs-server HAppS-Server< happs-ixset HAppS-IxSet;happs-hsp-templatehapps-hsp-template: happs-hsp* happs-hsp9 happs-dataI HAppS-Data8 happraiseh happraise7hanghang% handleposn HandlePosn handlejust handleJusthandleHandlehandlehalfshalfs6halexHaLeX5haddockverbosity5haddockVerbosityhaddockverbose_haddockVerbosehaddockprogramhaddockProgram haddockpref haddockPref haddockname haddockNamehaddockinternalhaddockInternalhaddockinterfaces haddockInterfaces haddockhtmlsI haddockHTMLshaddockhtmllocationthaddockHtmlLocationhaddockhscolourcsshaddockHscolourCsshaddockhscolourhaddockHscolour haddockhook haddockHook haddockhoogle  haddockHoogle haddockflagsE HaddockFlagshaddockexecutablesshaddockExecutableshaddockdistprefhaddockDistPref haddockdir haddockdir haddockcss haddockCsshaddockcommand haddockCommandhaddock*Haddock3haddock4 hackage2hwnY hackage2hwn2hackage-sparks~hackage-sparks1h6h6h5h5h4h4h3h3h2h2h1h1 gzipwitht1 gzipWithT gzipwithqO gzipWithQ gzipwithmm gzipWithMgzipgzipgunfoldgunfoldguitvGuiTV0 guihaskell GuiHaskell/guiguiguardqGuardQ$guardedb$GuardedB"guardedB#guardSGuard!guard gtypecount} gtypecountgtGTXgsizegsizegshowgshow growlnotify GrowlNotify.groupbygroupBy group(group~ grotetrapR GroteTrap-gregorianpaschalmoon{gregorianPaschalMoongregorianmonthlengthgregorianMonthLength}gregorianeastergregorianEastergreencardprogram greencardProgram| greencard-lib2 greencard-lib, greencardT greencard+greenngreen{greadgreadzgraygrayygravatargravatar*graphvizgraphviz)graphsccGraphSCC(graphics-drawingcombinatorsgraphics-drawingcombinators'graphfromedges'NgraphFromEdges'~graphfromedgeswgraphFromEdges}graphGraph&|gqGQxgplGPLz{ gopherbot gopherbot% googlechart GoogleChart$goa goa# gnodecount-  gnodecountwgmaptH gmapTvgmapqr_ gmapQrugmapqlw gmapQltgmapqi gmapQisgmapq gmapQrgmapmp gmapMpqgmapmo gmapMopgmapm gmapMo gmapaccumt  gmapAccumTn gmapaccumqr(  gmapAccumQrm gmapaccumqlJ  gmapAccumQll gmapaccumqk  gmapAccumQk gmapaccumm  gmapAccumMjgm GMiglut GLUT"glome-hs glome-hs! globalversion  globalVersionhglobalpackagedb GlobalPackageDBgglobalnumericversionE globalNumericVersionf globalflagsp  GlobalFlagsde globalcommand  globalCommandcglobal globalbglfw GLFW glength glengthaghcverbosityoptions ghcVerbosityOptions`ghcsharedoptions= ghcSharedOptionsy ghcprogramc  ghcProgram_ghcprofoptions ghcProfOptionsx ghcpkgprogram  ghcPkgProgram^ ghcoptions  ghcOptions] ghc-paths  ghc-pathsghc-core ghc-coreghc$ GHCw gfoldlaccumB  gfoldlAccum\gfoldl_ gfoldl[ gfindtypez  gfindtypeZ getzonedtime  getZonedTimeY getziplist  getZipListvgetuserdocumentsdirectory getUserDocumentsDirectoryugetuncaughtexceptionhandler,getUncaughtExceptionHandlert gettimezone^ getTimeZoneXgettemporarydirectorygetTemporaryDirectorysgetsumgetSumr getstdrandom getStdRandomq getstdgen getStdGenpgetstate getStateW getsrcloc. getSrcLocV getsearchpathP getSearchPathTUgetsqgets getprogname getProgNameo getproduct getProductngetprocessexitcodegetProcessExitCodem getposixtime getPOSIXTime getposition" getPositionSgetpersistbuildconfigRgetPersistBuildConfigRgetpermissionsgetPermissionslgetparserstategetParserStateQgetopt'getOpt'PgetoptGetOptgetOptO getoffside getOffsideNgetnumelements3getNumElementsMgetmodjuliandate]getModJulianDateLgetmodificationtimegetModificationTimekgetlinegetLineWijKgetlastgetLasthgetinstalledpackagesgetInstalledPackagesHIJgetinput/getInputFGgethomedirectory[getHomeDirectoryggetfirstgetFirstfgeterrnogetErrnoEgetenvironmentgetEnvironmentegetenvgetEnvdgetelemsgetElemsCDgetechogetEchoBgetdual0getDualcgetdirectorycontentsWgetDirectoryContentsbgetcurrenttimezonegetCurrentTimeZoneAgetcurrenttimegetCurrentTime@getcurrentdirectorygetCurrentDirectorya getcputime  getCPUTime` getcontents, getContentsV^_>?getconst_getConst]getcharzgetCharU\getchancontentsgetChanContents= getbounds getBounds:;< getassocs getAssocs89getargs getArgs[getappuserdatadirectory4getAppUserDataDirectoryZgetany]getAnyYgetallugetAllXget_console_echoget_console_echo7getget56geqgeq4geoipGeoIpgentokenparserGenTokenParser3genrange)genRangeWgenpatCgenpat genparser^ GenParser12genpackageflagsgenPackageFlagsVgenlanguagedefGenLanguageDef/0 geniconvert geniconvertgeniGenI generictake genericTakeU generict'> GenericT'.generict[GenericT-genericsplitat}genericSplitAtTgenericserializegenericserializegenericsGenericsS,genericreplicategenericReplicateRgenericrGenericR+ genericq'8 GenericQ'*genericqUGenericQ)genericpackagedescriptionGenericPackageDescriptionPQ genericm' GenericM'(genericmGenericM' genericlength genericLengthO genericindex genericIndexN genericdrop: genericDropMgenericbYGenericB& generic-xmlx generic-xmlgeneric'Generic'$%genericGeneric#generategenerateLgeneralizednewtypederivingGeneralizedNewtypeDerivingK"generalcategory8GeneralCategoryIgeneralCategoryJgenkGenHgdepthgdepth!gdgdgcountgcount gcdgcdTgcast2gcast2Ggcast1gcast1FgcastgcastEgathergathergamma/GAMMAgadtsEGADTsDfusion`Fusionfunsatxfunsat funresultty funResultTyCfunptrFunPtrBfundepFunDep  funDep fundFunD funD functorm"functormfunctor=FunctorSA functionsa FunctionsfunctionaldependenciesFunctionalDependencies@functionFunctionfuncmpfuncmpfun_tycon_namefun_tycon_name fun_tycon fun_tycon fullrender6 fullRender fullerrortypeY fullErrorTypefuchsiayfuchsiaftshellftshellftphsftphs ftglFTGL fstpairfstlistfstPairFstListfstfst R?fsepfsep fromweekdate6 fromWeekDatefromutf8VfromUTF8fromtorqFromToR fromToRfromtoefromToE  fromthentor FromThenToR  fromThenToR  fromthentoe fromThenToE  fromthenr! FromThenR fromThenR fromtheneV fromThenEfromsundaystartweekfromSundayStartWeek fromstring FromString<= fromString> fromrational fromRationalQfromrat fromRatPfromr FromRfromRfrompathtemplateL fromPathTemplatefromordinaldatew fromOrdinalDatefrommondaystartweek fromMondayStartWeek frommaybe  fromMaybe;fromlistwithkey fromListWithKey9: fromlistwith! fromListWith78fromlist@!fromList123456fromjustt!fromJust0fromjulianyearandday!fromJulianYearAndDay fromjulian! fromJulian fromintegral! fromIntegralO frominteger " fromIntegerN fromgregorian/" fromGregorianfromforeignptrV"fromForeignPtrfromflagordefault"fromFlagOrDefaultfromflag"fromFlagfromenum"fromEnumMfrome"fromE fromdynamic" fromDynamic/fromdyn#fromDyn.fromdistinctasclist?#fromDistinctAscList*+,- fromconstrmu# fromConstrM fromconstrb# fromConstrB fromconstr# fromConstr fromchunks# fromChunksfrombool#fromBoolfromasclistwithkey $fromAscListWithKey()fromasclistwithQ$fromAscListWith&' fromasclist{$ fromAscList"#$% frequency$ frequency!freezestuarray$freezeSTUArrayfreeze$freezefreevars%freeVars  freestableptr)% freeStablePtrfreepoolJ%freePoolfreehaskellfunptro%freeHaskellFunPtr freedirent% freeDirEntfreebsd%FreeBSD free-theorems% free-theorems free%free frameworks & frameworks frameworkdirs1& frameworkDirsframesetR&Frameset frameset frameborder& frameborderframe&framefrag&frag fractional& FractionalLfour&four foundonsystem ' FoundOnSystemformlets.'formlets formattimeL' FormatTime formatTimeformatcharacter'formatCharacterformat'Formatform_'forM_form'forMformforkos(forkOSforkio(forkIOforimpd3(forImpDforeverQ(foreverforestj(Forest foreignptr( ForeignPtrforeignfunctioninterface(ForeignFunctionInterfaceforeignd(ForeignDforeign)Foreignforeignforce4)forceforalltL)ForallTforallTforallc{)ForallCforallCforall)forAll forallfor_)for_ for)for foo)foofont)font foldwithkey* foldWithKey  foldrm;*foldrM foldrchunksX* foldrChunksfoldr1'v*foldr1'foldr1*foldr1Kfoldr'*foldr'foldr*foldrJfoldmapdefault+foldMapDefaultfoldmap:+foldMapfoldm_S+foldM_foldmj+foldMfoldlm+foldlM foldlchunks+ foldlChunksfoldl1'+foldl1'foldl1+foldl1Ifoldl',foldl'foldl@,foldlHfoldableq,Foldablefold,foldfname,fName fmapdefault, fmapDefaultfmap,fmapGflow2dot -flow2dotfloor"-floorFflock8-flockfloattokQ-FloatTok floattodigitsr- floatToDigitsEfloatrep-FloatRep floatrange- floatRangeD floatradix- floatRadixC floatpriml- FloatPrimL floatPrimLfloating'.FloatingB floatdigitsF. floatDigitsA floatconstrh. FloatConstrfloat.Float@floatflippi.Flippiflip.flip?flexibleinstances.FlexibleInstancesflexiblecontexts/FlexibleContexts flattensccsI/ flattenSCCs flattensccj/ flattenSCCflattenpackagedescription/flattenPackageDescriptionflatten/flattenflagtoverbosity/flagToVerbosityflagtooptimisationlevel0flagToOptimisationLevel flagtomaybeG0 flagToMaybe flagtolisth0 flagToListflagname0FlagNameflagNameflagdescription0flagDescription flagdefault0 flagDefaultflagassignment1FlagAssignmentflag$1FlagfixstI1fixSTfixpointf1fixpointfixitydirection1FixityDirectionfixity1Fixityfixio1fixIOfixed1Fixedfix2Fixfixfitsio%2fitsiofirstify?2firstifyfirstX2Firstfirst finitemap2 FiniteMap fingertree2 fingertreefindwithdefault2findWithDefaultfindsubstrings2findSubstrings findsubstring3 findSubstringfindprogramversionL3findProgramVersionfindprogramonpath{3findProgramOnPathfindpackagedesc3findPackageDescfindmin3findMinfindmax3findMax findindices4 findIndices findindexA4 findIndexfindhookedpackagedesc4findHookedPackageDescfindfilewithextension'4findFileWithExtension'findfilewithextension4findFileWithExtensionfindfile5findFilefindexecutable85findExecutablefindbinY5FindBinfindp5findfinance-treasury5Finance-Treasuryfinance-quote-yahoo5Finance-Quote-Yahoo finalquote5 FinalQuotefinally6finally finalizerptr86 FinalizerPtr finalizerfree]6 finalizerFreefinalizerenvptr6FinalizerEnvPtrfinalizepackagedescription6finalizePackageDescriptionfinalizeforeignptr6finalizeForeignPtrfinalize7finalize filterwithkey97 filterWithKeyfilterm]7filterMfilterv7filter >filetype7fileTypefilepath7FilePath=filepath fileoffset8 FileOffsetfilemode"8FileMode filemanip?8 FileManipfileidZ8FileIDfieldsett8fieldSetfieldset fieldpatq8 FieldPatQfieldpat8FieldPatfieldPat fieldname8 fieldNamefieldget 9fieldGet fieldexpqA9 FieldExpQfieldexp^9FieldExpfieldExp fielddescr9 FieldDescrfield9Fieldfieldfgl9fglfft9fftffihugsprogram:ffihugsProgramfermatslastmargin2:FermatsLastMarginfenfireV:fenfirefeed-cliq:feed-clifeed:feedfec:fecfdtype:FDTypefdTypefdstat:fdStatfdistty:fdIsTTY fdgetmode ; fdGetMode fdfilesize); fdFileSizefdA;Fd fckeditor\; fckeditorfcatu;fcatfastcgi;fastcgifalsearg;falseArgfalse;False<failures;failures failreade; failReadEfail<fail;face3<facefD<FexttU<extT extseparatorq< extSeparator extratmpfiles< extraTmpFiles extrasrcfiles< extraSrcFiles extralibs< extraLibsextralibraries=extraLibraries extralibdirs+= extraLibDirsextraghcilibrariesU=extraGHCiLibrariesextrw=extRextq=extQextmp=extMpextm=extMextensionstoflags=extensionsToFlags extensions= extensions extension> ExtensionextensiblerecordsN>ExtensibleRecordsextendeddefaultrules>ExtendedDefaultRules~extb>extB}ext1t>ext1T|ext1r>ext1R{ext1q>ext1Qzext1m?ext1Myext0?ext0xexpr+?ExprexpqC?ExpQwexposedmodulese?exposedModulesexposed?exposedexportf?ExportFvexponent?exponent: explanation? explanationrstuexpect @Expectqexp$@Exppexp9exitwithH@exitWith exitsuccessg@ ExitSuccess exitfailure@ ExitFailure exitFailure exitexception@ ExitExceptionexitcode@ExitCodeexit@Exitexistentialquantification AExistentialQuantificationoexifMAexifexenamedAexeName exemodulesA exeModules exeextensionA exeExtensionn execwritertA execWriterT execwriterA execWriter executablesB executables executable1B Executable executable execstateteB execStateT execstateB execStateexecrwstBexecRWSTexecrwsBexecRWS exclamationB Exclamationm exception C Exception everywherem.C everywhereMl everywherebutRC everywhereButk everywhere'vC everywhere'j everywhereC everywherei everythingC everythingh event-listC event-listevaluateCevaluate evalstatetD evalStateT evalstate:D evalStateevalrwst[DevalRWSTevalrwszDevalRWS etherbunnyD EtherbunnyestrepsDestrepserrortDErrorTfgerrorsDerrorseerrorposEerrorPoscd errormessages4E errorMessagesberrorisunknown_EerrorIsUnknowna errorcallsE errorCalls errorcallE ErrorCallerrorEError`error8errnotoioerrorFerrnoToIOError_errno%FErrno]^equatingBFequating\equarray^FeqUArray[equalsxFEqualsYequalsZ equalfilepathF equalFilePathWXeqFEQ6}Eq7~ epochtimeF EpochTimeV eoferrortypeG eofErrorTypeUeof-GEOF|RSeofT environment\G Environment enumfromto}G enumFromTo5enumfromthentoGenumFromThenTo4 enumfromthenG enumFromThen3enumfromGenumFrom2enumGEnum1endoHEndoz{endby1-HendBy1PQendbyLHendByNO end_of_diroH end_of_dirMenctypeHenctypeJKLencodingHencoding encodefloatH encodeFloat0encodeHEncode enclosingmark I EnclosingMarkyemptyuserhooks1IemptyUserHooksxIemptytestflags]IemptyTestFlagsHemptysdistflagsIemptySDistFlagsGemptysamplevarIemptySampleVarFemptyregisterflagsIemptyRegisterFlagsEemptyrIEmptyRwemptyprogramconfiguration*JemptyProgramConfigurationDemptypackagedescriptionfJemptyPackageDescriptionvemptymakefileflagsJemptyMakefileFlagsC emptylibraryJ emptyLibraryuemptylJEmptyLtemptyinstallflagsKemptyInstallFlagsBemptyinstalledpackageinfoemptydatadeclswLEmptyDataDeclsp=emptycopyflagsLemptyCopyFlags<emptyconfigflagsLemptyConfigFlags;emptycleanflagsLemptyCleanFlags:emptybuildinfo!MemptyBuildInfooemptybuildflagsJMemptyBuildFlags9 emptyattrnM emptyAttr678emptyMEmpty2empty hijklmn345empingMEmping emphasizeM emphasize/01elseNelseelems3Nelemsdefg-. elemindicescN elemIndicesbc+, elemindexendN elemIndexEnda* elemindexN elemIndex_`()elementsNelements^elematOelemAt]elemOelem/Z[\&'eitherFOEither-Xeither.YeditlinexOeditline edit-distanceO edit-distance edisoncoreO EdisonCore edisonapiO EdisonAPIedgesOedgesWedge PEdgeVeaster PEasterearlierversion@PEarlierVersionUe6\PE6Te2bigoPe2BIG%e12PE12S dyntyperepP dynTypeRepR dynlibdirP dynlibdir$ dynexceptionsP dynExceptionsQ dynexceptionQ DynExceptionPdynapply"QdynApplyOdynappdispjWdisp=discardWdiscarddisambiguaterecordfieldsWDisambiguateRecordFields<disabledWdisabled directoryX Directory directorydir,Xdir dimensionalFX dimensional digittointgX digitToInt;digitXdigit diffutctimeX diffUTCTime diffuarrayX DiffUArraydifftimeXDiffTimedifferencewithkeyYdifferenceWithKey9:differencewith5YdifferenceWith78 difference]Y difference3456diffdaysYdiffDays diffarrayY DiffArraydiffabsolutetimeYdiffAbsoluteTimediffYDiffdiewithlocation ZdieWithLocationdie*ZdiediagramsAZdiagramsdfsbuild]ZdfsbuilddfstZdfs2dffZdff1deviceidZDeviceID descriptionZ Description description/0desccabalversionZdescCabalVersion.deriving[derivingderivedatatypeableB[DeriveDataTypeable-derivej[derive derefweak[ deRefWeakderefstableptr[deRefStablePtr, derangement[ derangementdephd[dephddepends\depends*+dependencyinconsistencies1\dependencyInconsistenciesdependencygraphe\dependencyGraphdependencycycles\dependencyCyclesdependencyclosure\dependencyClosure dependency\ Dependency()denormal]Denormal' denominator%] denominator& denominateF] denominate demandinge] demandingdeletepackagename]deletePackageNamedeletepackageid]deletePackageId deletemin] deleteMin#$% deletemax^ deleteMax !"deletefirstsby,^deleteFirstsBy deletefindminS^ deleteFindMin deletefindmax^ deleteFindMaxdeletedependency^deleteDependencydeleteby^deleteBydeleteat^deleteAtdelete _deletedel5_deldefoptR_defOptdeflistk_defListdefine_definedefaultuserhooks_defaultUserHooksdefaulttestflags_defaultTestFlagsdefaultsdistflags`defaultSDistFlagsdefaultregisterflags@`defaultRegisterFlagsdefaultprogramconfiguration{`defaultProgramConfigurationdefaultparsemode`defaultParseModedefaultpackagedesc`defaultPackageDesc defaultmode a defaultModedefaultmakefileflags8adefaultMakefileFlagsdefaultmainwithhooksargspadefaultMainWithHooksArgsdefaultmainwithhooksadefaultMainWithHooksdefaultmainnoreadadefaultMainNoRead  defaultmainargs bdefaultMainArgs   defaultmain3b defaultMain defaultinstallflagsabdefaultInstallFlagsdefaultinstalldirsbdefaultInstallDirsdefaulthscolourflagsbdefaultHscolourFlagsdefaulthookedpackagedescbdefaultHookedPackageDescdefaulthaddockflags7cdefaultHaddockFlagsdefaultglobalflagshcdefaultGlobalFlags defaultfixityc defaultFixitydefaultdistprefcdefaultDistPrefdefaultcopyflagscdefaultCopyFlagsdefaultconfigflagsddefaultConfigFlags defaultconfigGd defaultConfigdefaultcompilerflavoruddefaultCompilerFlavordefaultcleanflagsddefaultCleanFlagsdefaultchunksizeddefaultChunkSizedefaultbuildflagsedefaultBuildFlagsdefault%edefault deeparrowAe DeepArrowdecqZeDecQ decodefloatye decodeFloat' decimalnumbere DecimalNumberdecimaleDecimaldecimaldeceDec debughtmlf debugHtml debug_tests f debug_testsdebugconst_sig_setmaskiyconst_sig_setmask=const_sig_blockyconst_sig_block< const_icanony const_icanon; const_f_setfly const_f_setfl: const_f_getflz const_f_getfl9 const_echo*z const_echo8constEzConstconst"cons'nzcons'7conszcons56conqzConQ4conpzConP2conP3connectorpunctuationzConnectorPunctuationconjure{conjure conjugate8{ conjugateconindexU{ConIndex1conidn{ConId0confvar{ConfVarconfigverbosity{configVerbosity/ configverbose{ configVerbose.configvanillalib{configVanillaLib-configuserinstall&|configUserInstall,configureoptionsS|configureOptions+configuredprogram|ConfiguredProgram)*configurecommand|configureCommand( configureargs| configureArgs'configureallknownprograms }configureAllKnownPrograms& configure:} Configure configure!"#$% configuration} Configurationconfigstripexes}configStripExes configsplitobjs}configSplitObjs configsize} configSizeconfigsharedlib~configSharedLibconfigscratchdirF~configScratchDirconfigprogsuffixr~configProgSuffixconfigprograms~configProgramsconfigprogrampaths~configProgramPathsconfigprogramargs~configProgramArgsconfigprogprefix$configProgPrefix configproflibM configProfLib configprofexes configProfExeconfigpackagedbconfigPackageDBconfigoptimizationconfigOptimization configmaxtest configMaxTest configmaxfail configMaxFailconfiginstalldirsCconfigInstallDirs confighcpkgk configHcPkg confighcpath configHcPathconfighcflavorconfigHcFlavor configghcilibۀ configGHCiLib configflags ConfigFlags  configfile$ ConfigFileconfigextralibdirsLconfigExtraLibDirs configextraincludedirsconfigExtraIncludeDirs  configevery configEveryconfigdistprefҁconfigDistPref configdependencyconfigDependency configconstraints)configConstraintsconfigconfigureargsYconfigConfigureArgsconfigconfigurationsflagsconfigConfigurationsFlagsconfigcompilerauxǂconfigCompilerAuxconfigcompilerconfigCompilerconfigConfigconfhook0confHookconeLConEconE condtreedataz condTreeDatacondtreeconstraintscondTreeConstraintscondtreecomponentsփcondTreeComponentscondtreeCondTree condorcet condorcetcondnode6CondNode condlibraryU condLibrary conditionu ConditioncondexecutablescondExecutablescondeCondE condE concurrent Concurrent concatmap  concatMap!  concathtmlA concatHtml concateconcat  conCon ~ compression compression componentsх componentscomplexComplex complementbit complementBit complement5 complementcompilerversionZcompilerVersion compilervar CompilerVar compilername compilerName compileridɆ CompilerId compilerId compilerflavorCompilerFlavorcompilerFlavor compilerextensionsAcompilerExtensions compilergCompiler compiler compeCompE |compE } comparingLJ comparing comparecomparecompactcompact commentstart$ commentStart z{commentsLcomments commentlinek commentLine xy commentend commentEnd vw commasep1 commaSep1 ucommasep܈commaSep t commandusage commandUsage commandui! CommandUI commandtoprocessJcommandToProcess commandsynopsisucommandSynopsis commandsrun commandsRun commandshowoptionsĉcommandShowOptions commandreadytogoCommandReadyToGo commandparse CommandParse commandoptions@commandOptions commandnamee commandName commandlist CommandList commandhelp CommandHelp commanderrors͊ CommandErrors commanddescriptioncommandDescription commanddefaultflags)commandDefaultFlags commandaddactionXcommandAddAction command{Command commalistfieldcommaListFieldcommaComma comma rscombineinstalldirscombineInstallDirs combinecombine q combinatorC CombinatorcolumncColumn pcolspancolspan colscols colorČcolor colonڌColon colon nocolockcolock collections% collectionscollectCcollectcolgroup^colgroup col}col coffCOff coerceCoercecodec-libevent΍codec-libeventcodec-image-devilCodec-Image-DevILcodec-compression-lzf+Codec-Compression-LZF~codebaseTcodebase codetcode coarbitrary coarbitrarycnotCNot cmpuarrayÎ cmpUArray cmpintuarray cmpIntUArray cmodeCMode cmdCmd}cmath)cmath| clustertoolsF clustertools{closepunctuationnClosePunctuation closephandle closePHANDLE closefdcloseFd closedhandleԏ ClosedHandle clongCLong clocktick  ClockTick clock%Clockzcllong<CLLong clickmapVclickmap clevercss{ clevercssyclearbitclearBitclearclear cleanverbosityАcleanVerbosity cleanverbose cleanVerbose cleansaveconf cleanSaveConf cleanhook= cleanHook cleanflags` CleanFlags cleandistpref cleanDistPref cleancommand cleanCommand cldoublȇCLDouble clconvCLconv clauseqClauseQ mclauseClause jkclause lclassopiRClassOpI i classindentu classIndent classifyclassifyxclassiClassI hclassdΒClassD fclassD gclassClassqrstuvclasswcjmpbuf0CJmpBuf citeGcite cisbciscintptrxCIntPtr cintmaxCIntMax cintCInt cinoCIno chunksӓchunksp chunkoverhead chunkOverheadechunkChunkcchunkdchr/Chr chrchpJchpochoose_choosechoiceqxchoiceQ choiceoptfromenumchoiceOptFromEnum choiceopt” ChoiceOpt choiceOpt choicempchoiceMp choicechoice bchild+childn checkvaldefG checkValDef checkunquali checkUnQual checkrevdecls checkRevDecls checkprec checkPrec checkpersistbuildconfigەcheckPersistBuildConfig checkpattern  checkPattern checkpackagefiles3checkPackageFiles~ checkpackage\ checkPackage} checkinvariantcheckInvariantacheckinstheadercheckInstHeader| checkexprϖ checkExpr{ checkedcheckedmx y z checkdataheadercheckDataHeaderw checkcontext@ checkContextv checkconfiguredpackagencheckConfiguredPackageu checkclassheadercheckClassHeadert checkclassbodyʗcheckClassBodys checkboxcheckboxp q r checkbolcheckBOLo checkassertion2checkAssertionn checkQChecklcheckm chattytryz chattyTryl chasingbottomsChasingBottomskchartChartj charparserט CharParser` charliteral charLiteralk _charlCharLi ]charLj ^charisrepresentableOcharIsRepresentableh characterw Characterg char8Char8hicharCharefgc chard e f [\ change-monger change-mongerdchanChancb chalmers-lava2000;chalmers-lava2000bchainr1_chainr1` a Zchainrchainr^ _ Ychainl1chainl1\ ] XchainlšchainlZ [ WcgroupCGroupY cgi-undecidablecgi-undecidableacgi!cgi`cfpos5CFposX cflockLCFLockW cfloatdCFloatV cfile{CFileU centercenterT censorcensorV cellspacingǛ cellspacingQ R S cellpadding cellpaddingN O P cellcellM ceiling+ceilingcedictDcedict_cdouble]CDoubleL cdirentwCDirentK cdirCDirJ cdevCDevI ccoptions ccOptionscclockڜCClockH ccldoptionsbuildinfoccLdOptionsBuildInfoG cchar%CCharF ccall;CCallE U cc-delcontZ CC-delcont^ catmaybesy catMaybescategory-extrascategory-extras]categorycategorycatchparseerrorcatchParseError catchjust  catchJust catcherror* catchErrorTcatchdynHcatchDyncatchacatch\D catcatC S caststuarray castSTUArrayA B caststableptrtoptrΞcastStablePtrToPtrcastptrtostableptrcastPtrToStablePtrcastptrtofunptr+castPtrToFunPtrcastptrMcastPtr castiouarrayl castIOUArray@ castfunptrtoptrcastFunPtrToPtr castfunptr castFunPtrcastforeignptrܟcastForeignPtrcastchartoccharcastCharToCChar? castcchartochar/castCCharToChar> castNcast casesensitivek caseSensitive= QRcasescases< caseindent caseIndent; caseeǠCaseE9 OcaseE: Pcasecase[carraycarrayZcaptioncaption6 7 8 canonicalizepathIcanonicalizePathcandiCAndcallconvCallconv5 NcallcccallCCMcalendarCalendarYcalcѡcalcX cabalversion cabalVersion4 cabalrpmdeps cabalrpmdepsW cabalmdvrpm8 cabalmdvrpmVcabalbootstrappingacabalBootstrapping3 cabal2arch cabal2archU cabal-upload cabal-uploadT cabal-test͢ cabal-testS cabal-setup cabal-setupR cabal-rpm cabal-rpmQ cabal-install0 cabal-installPcabalNCabalOc_writefc_write2 c_unlinkc_unlink1 c_umaskc_umask0 c_strlenc_strlen/ c_statѣc_stat. c_s_isreg c_s_isreg- c_s_isfifo  c_s_isfifo, c_s_isdir* c_s_isdir+ c_s_ischrH c_s_ischr* c_s_isblkf c_s_isblk) c_rmdirc_rmdir( c_rewinddir c_rewinddir' c_reverse c_reverse& c_renameݤc_rename% c_readc_read$ c_opendir c_opendir# c_open-c_open" c_minimumH c_minimum! c_maximumf c_maximum c_lseekc_lseek c_isattyc_isatty c_intersperse c_intersperse c_getpidߥc_getpid c_getcwdc_getcwd c_ftruncate c_ftruncate c_fstat8c_fstat c_free_finalizer[c_free_finalizer c_dup2}c_dup2 c_dupc_dup c_creatc_creat c_countƦc_count c_closesocket c_closesocket c_closedir  c_closedir c_close&c_close c_chmod@c_chmod c_chdirZc_chdir c_accessuc_access c2wc2w c2hsprogram c2hsProgram c2hsc2hsNcҧCMbzlibbzlibLbytestringreadpbytestringreadpKbytestringparser/bytestringparserJbytestring-showZbytestring-showIbytestring-mmapbytestring-mmapHbytestring-lexingbytestring-lexingGbytestring-csvۨbytestring-csvF bytestring ByteStringCD KL bytestringE bytecountJ ByteCount buttonebutton   bulletbullet   builtinprogramsbuiltinPrograms buildverbosityשbuildVerbosity buildverbose buildVerbose buildtype BuildType buildType buildtoolsL buildTools buildtimek buildTime buildprogramargsbuildProgramArgs buildpaths BuildPathsBbuildosӪbuildOS buildinfo BuildInfo buildInfo buildhook  buildHook buildg?buildG buildflags[ BuildFlags buildexpressionparserbuildExpressionParser J builddistpref buildDistPref builddirݫbuildDir builddepends buildDependsbuildcompilerflavor(buildCompilerFlavor buildcommandS buildCommand buildarcht buildArch buildable buildablebuildBuildAbuild buffermode BufferModebsd4BSD4bsd3BSD3brokenpackages6brokenPackages breaksubstring^breakSubstring breaksbreaks breakendbreakEnd breakbyte breakBytebreak׭break I brainfuck brainfuck@brackets"brackets GHbracketonerrorPbracketOnErrorbracket_rbracket_bracketbracketbracesbraces EFbrƮbr boundsBoundsbounds boundedBoundedbottom(bottom botpp?botpp?botSbot> bordercolorm bordercolor borderborder boolopt'boolOpt' booloptӯBoolOpt boolOpt boolfield boolFieldbool_word_scale$bOOL_WORD_SCALE bool_not_bitK bOOL_NOT_BIT bool_indexm bOOL_INDEX boolBool=boldbold bodyqBodyQ DbodyٰBody Cbody blueblue bloomfilter bloomfilter< blockquote? blockquote blockiodblockio;blockedondeadmvarBlockedOnDeadMVarblockedindefinitelyBlockedIndefinitely~blockbufferingBlockBuffering}blockblock|blasblas:black.black bktreesFbktrees9 bitsyntaxb BitSyntax8bitsize~bitSize{bitsetbitset7bitsBits6zbitIJbitybioֲbio5bindsBindS AbindS BbindqbindQ@ bindirvar- BindirVar bindirHbindir binary-strictg binary-strict4 binary-search binary-search3binarybinary2bimapóbimap1big׳big bgcolorbgcolor betweenversionsinclusive betweenVersionsInclusivexbetweenKbetween ?betajBETA besidesbesides berkeleydb BerkeleyDB0bencodebencode/ benchpressش benchpress.bdobdo bcc bccwbatchBatch,-baskell;baskell+basicsTBasics*basefontnbasefont base64-string base64-string)baseBase&'base( barracudaߵ Barracuda%barBar bangpatterns BangPatternsv backslash7 Backslash backquoteU BackQuote backgroundt background backdropper backdropper$avltreeAvlTree#autoprocζautoproc"autogenmodulesdirautogenModulesDir autogenmodulename!autogenModuleName autoformsG AutoForms!autoconfuserhooksmautoconfUserHooksuauthorauthorst attoparsec attoparsec atsrclocηatSrcLoc atomicmodifyiorefatomicModifyIORefratanhatanhatan2+atan2atan@atanatRAt asyncexceptionsoasyncExceptionsqasyncexceptionAsyncExceptionopasumasumnastypeofҸasTypeOfastarastarassocsassocslm assocright* AssocRight > assocnoneM AssocNone = assoclefto AssocLeft <assocAssoc ; assertstring assertString assertionsԹ assertionskassertionpredicateAssertionPredicate assertionPredicate assertionpredicableEAssertionPredicable assertionfailedsAssertionFailedj assertion Assertion assertfailure assertFailure assertequal assertEqual assertbool assertBool assertable& Assertable assertBasserti asp[AsP 9asP :asn1ASN1asksasks8askask7asinhasinhasinϻasinasas arrowzero ArrowZeroharrowtArrowT 5arrowT 6arrows?Arrowsg arrows arrowplusj ArrowPlusfarrowparrowp arrowmonad ArrowMonadde arrowloopļ ArrowLoopc arrowchoice ArrowChoiceb arrowapply ArrowApplyaarrow Arrow` arrelebottomA arrEleBottom arrayrefaArrayRefarrayexceptionArrayException^_arrayArrayarray arrѽarr] arprogram arProgram armArm\ arithseqe ArithSeqE 3 arithSeqE 4arithexceptionsTarithExceptions[arithexception}ArithExceptionYZ arguments argumentsXargsArgsW argplaceholder߾ArgPlaceHolder argorderArgOrder argdescrArgDescr area5area archiveTarchive archsArchTUarchV arbitrary ArbitraryR arbitrarySaqua¿aqua apptֿAppT~ 1appT 2appseappsE} 0approxrational approxRationalQappliedAApplied/applicative-extrasfapplicative-extras applicative ApplicativePappletapplet| applescript AppleScriptappendoappEndoO appendmode AppendModeN appendfile( appendFileLMz { .appendXappendKx y -appezAppEv +appEw ,appappJapapI anyversion AnyVersionHanytokenanyTokenu *anydbmanydbmanycharanyChart )any7AnyCDanyEFGr s (annotateioerrorzannotateIOErrorq anglesanglesp 'andandABanchoranchorm n o ambiguous Ambiguousl ambigousparse AmbigousParse?@amap7amapj k alutOALUT alternativej Alternative> alternativei alteralter=altcodealtcodef g h altaltc d e alsa-midi alsa-midialreadyinuseerrortypealreadyInUseErrorTypeb alreadyexistserrortypeNalreadyExistsErrorTypea alphanumxalphaNum` &alphaALPHA_ Alpha<alpha%aloneAlone$allrightsreservedAllRightsReserved:;allpackagesbynameallPackagesByName^ allpackages= allPackages] allocabytes_ allocaBytes\ allocaarray0 allocaArray0[ allocaarray allocaArrayZ allocaallocaY allocAlloc allbuildinfo allBuildInfo9allAll45all678W X #alinkJalinkV alignptrcalignPtr3 alignment alignment2alignalignS T U aliasesAliasesalgrepAlgRepR algconstr AlgConstrQ alexprogram alexProgramP alex)alex aix<AIX1agiNAGI afilebafileM N O aern-rntorm AERN-RnToRm aern-real AERN-Real advanceptr advancePtrL adjustwithkey adjustWithKey/0adjust adjust,-. adhoc-network2 adhoc-network addutctimeU addUTCTimeK addtrailingpathseparatoraddTrailingPathSeparatorI J addressaddressF G H addmvarfinalizeraddMVarFinalizerE addknownprogramaddKnownProgramD addjulianyearsrollover9addJulianYearsRollOver"addjulianyearsclipmaddJulianYearsClip!addjulianmonthsrolloveraddJulianMonthsRollOver addjulianmonthsclipaddJulianMonthsClipaddgregorianyearsrolloveraddGregorianYearsRollOverC addgregorianyearsclipJaddGregorianYearsClipB addgregorianmonthsrolloveraddGregorianMonthsRollOverA addgregorianmonthsclipaddGregorianMonthsClip@ addforeignptrfinalizerenvaddForeignPtrFinalizerEnv+addforeignptrfinalizer7addForeignPtrFinalizer)* addfinalizeri addFinalizer? addextension addExtension= > adderrormessageaddErrorMessage< adddaysaddDays; addattrsADDATTRS8 9 : addabsolutetime$addAbsoluteTimeadaptiveGAdaptive acyclicscce AcyclicSCC(actionaction5 6 7 acronymacronym2 3 4 acoshacoshacosacos  accumarray accumArray0 1 accumaccum. / absolutetime1 AbsoluteTime absoluteseekU AbsoluteSeek'absoluteinstalldirsabsoluteInstallDirs, - absabs abovesaboves+ aboveabove* abbrabbr' ( ) __^^^^ ^>> ^>>&^<<2^<<%^B^ \\Q\\ !"#$@?=r@?=& @?@?% @=?@=?$ @@>||>||# >|>|" >>^>>^>>>>>>>>=>>= ! >>>> >=>,>=>>==>=><>`>==>x==>=====<<=<<<||><||> <|?><|?> <|><|> <|<| <>#<> <=<8<=<<=I<=<<^^<<^<<  <.><.>  <-<-<+><+> <++<++  <*><*> <**><**> <*+<* <$?>=<$?> <$>T<$> <$$>g<$$> <$}<$ <<:>:>:=:= :<:<:::::+::+::+:+:*::*:/=/=//+// />/.||N.|| .|.`.|..|q.| .&..&...-||-|| -|-| ->->------++++++     +++++.+*>=*>***N*****_***n*&&&~&&&&&&&%%$||$|| $|$| $+$$+$ $$$$ $!$!$ $!!!!!2! J!!q!!!! !3 ! !B !Q!!!!d!? 0  S G N %  + w g  N / F  $  / _ t ~   u 9 E > { )  g B ! : ݲ ձ 2  E M B S h , ס  v q 2 e  Ę m  V m  ~ w t s ao C= %< 7: 9 6 6 4 2 , + * * ' i& #% $ #  '  R  =  y  0  e g       yn M78`k}{LT[qM e.(m]{Yx@:@pb\2ۤQZy+pv*nҙ`ݖ<0ƌ}aNҀj9~~!~}'}||{yy6utTsrrrpo_n=kiiig gf*feed6dc:cbb|a]`_^\[XFXVUBUT:TSR?ROzNMWMLoLYKIG(GEA@@(?<o;:A9H8g653210/.,,/+*)<)(('&P G2, V  p^vo-m5O(PXZ+pg0PZSHC ^0U5n,h>j޾ i!PηsfM_  ܜSؗGs#ÒƑ2ЎyD φg~0}{www-ut}tssrQrqp/omXmkjjhjfh2fe`d"dcTba`^_^7]RWSONNrJJGG*GEEC>;::7c6 6Y5G4C3V2/.g.-+a*)$)('l'>&%l$'$#V"! r _5Q}%8/   a  v1Uxs)?CZH,WLg/@^ t9:rkB4ӶڵCJծ+ݬVۨXS8(ϕCۍw~{zyqutDrp(poonmfmlPlkHkfUdc cib^Z]ZX XU?USRcQPuPPN~MJ|JIH{H7HGGtG0GF4BPAD=<<;U:965322]04/y-f+H*((''&%$#:#]" eJ v/^U:/ 5  u _ neb+QR[&NKb.jFUIB^K:AM+}r[2q-ABb8pUײ<;ƪTɖjCl%ސΎQiGŁ~~O~(}|{xvtHr ronkjdcc;bax`^][ZFYQXTWVNVUqUTTQSRnRQQQP POFONUNMAMLXLKKJIHF#FED0DCXCHB@=`98L65T54143q321-10:0v/l-+ *('A'V"!l! Z  (Zzp%$ Zi   J  *  / )61(w *Mq;c'`4z7 Vg\<1~)wl2cXQLLǽhm%ʷ!v&_xyڬ LWjpThbȔd'̑m 'Ɗ$\Q0FȀ~vut tsqponmzl kjihgggfeCewd1cZbaqaa`i``M__^]`]\&\Y[ZYIYuXW6W3VLUT,TS6SRRQPRPO/OvNM-M:K{JIHBHG&GE;DSB<<<<:r:&:9:8\7>65542z21r1+0..`.P-y,+F+)e)((%%1%!c k2\"4KyL      !QkNnrbBry!uIq.:B[f-t~N} '8ϭ=ȪP`|-3գXluA]Ng!Q5HPDnDjfǃN܁eD`~p}|S|{S{ezzy2xwwvu[ujtsr@r>q o\nZml kiNi9hOIWuI3Z6^{=M)cdV<l 4Mo$}}!N{vμúX2@+ҭ4ժdDڞ@UTLɐ^͍;yfZb'Ɓy ~<}6|!{'z*yQxwIvutsrqpoCnmtlkpkjjib|`8``_^]]\$\[1[ZYWUW}UKTTRQQ~P,POKJ+JIHG GC??I><p<<98k875J4'21/B/-.-$*)1&%|%%$ $#" : ;" | e -  4hz5_<|p68Dj1(2KmSG,WK^dJI d 3m`!˯6 }j1ȧЦפ?$+ʘCjV~C Pd[aҁH~g}|_zhyxwvEtGs=r-qmmk~j$jiihg==x<<@;:98551A08/f-O,+*) &%$O$$#"M"!f2>RMpKh#- ]  k  \  &,*S\SxDPm`bmmR#m5idM*m*toy2i9;<C]ƹ߸EҲ4ɰdYgg*ͨJ  jF svN?c׍h<'m_6{ OS~}g}|z|$|={{yw9t-s^qp+pdonxmmlKlkdkkiDihvhg*gflffed%d}c6cba'au`_c_]\M\[`[ZwZYYXWVVTTQPPPJ JuFE=ECBmA&?>=U=<<e<;;g;:::9%98a87v7655I543p21K1/+J+))('v'&x%# b  -&DZl_B;%/DZm1   t  u   k,NEg7GR~,Aq#n~H! AlaQsc2'*\Y+xU tZW0\¼n:*T/U˴]O޲QnLǤ|-$oj|*Ę%Ɠbg_g4X‡f|un,nlJl[kj+jiBiighhYgfe3ed&dcNcbhb,b`X`_]\VYV#VbURQPPNfMLK'J(I0HdGGF"FDfDCBAmAAL@?>=/=4<;{;q754A433]21n1000']'&2&^%$ $#""! *4.IF@Il  J  r8!'+ KR#ItCR%s.eS*jB.`xk/1ݿ:;=O&3ޱ(گ+ӭ_-l0<u1^Z1wޅdFȀ3k~*~}|7|{ytsqpoHok8jihhgd%cbba``9`__"_^h^^])]0\[Z+Z(YXWWUcUQTSRrRQ0QNWNMLhL}KJ[JI/IeHoGECi? =\<x;99h8753V2o1/F/a.-,v+*)('&p%D% %#B#"!! A^ EB~  @d-Qm|=N!x{S AH4XsZ -feýȼNgC¸K÷]m'rDz$ڱSĬh yi{E|wc:,Ӑ֌ '3|-|xutsr rHqpp[on ngmjf.dawa`O`__z^]]L]\H\[ ZXVUQNNNMMBMLLKLLKoKJHgFBA@y?`>n=]<<;[;9'8|76O655W544'43k3 320 /-,*)({('&%%E%$$'$#A#" t  x,}{k$ YIw;wmU weq53Mm-L){7Wn*\Hl^x35|)3oFV2=/N@l:P\2O~_RmA ͺUY!)1޴a E&˰XӯQԮ?-̬=%V'˦o/Ƥc^ 2ܡ1cae2Ӑ2W+ǍcHv*r}8|{\{7zyyxw;wv uLtss2srFrqMqpoyon~n8nmmljhahsggff_edvcba/a6`^]W]+]\\h\\[x[[MZY3YXXWHWVqV:VU`UTTSfRQuQPP4PO|OONpNM}MMLL!KJaJIImIIHH+HG{G?G0FEE.EDvDDCbC*CB,Af?>E>6=<<;;+:99z876f6543 3 0/a.-+,*)(9(1'&P&%%h%$&$##"!!^!  2sWTLFM  R   [ `R0rSk=Ta^wEHp:OBZ<Ra?>z:Hya0Ml0r jDE@Iܻh/˺fݹ θuA͵`Z9ò\ƱװJ*b k0]™O] m‘dlfP~Aۋq֊k:ЇrĆpiу5~|&z'x.us#srrLrq%qpp*o|nm{m5mll]lkJkjjTjiihhglgf&feddLdcc@cbxba`__G^l]\[[`ZYq>==<t<<;=;:y:5:t8|75444232M21//9/c.--,=+*\*))g((%%<$#"%"r!*!y  /"  "{)a | Q   ?  e 5   B va x:g@P2/3af[y(U_9u/D@f?<0CK;:-۱wcY 90ަ &ۣ٢!ϡy 'Cgܛ^llZ{‘8ĐcڏI#!ˊzKƁ$~~}A}|m{Uz=yxPxwQwtrrpooonnn@mllGkjXiih:hg\gfxfeQed|dcc.b$a`K_^ ^c]\W\[Z~ZYYMYXX1X-WTRQPjPOjONxNNMIMLyLLHK[JzIHHGoG#GFF?FEE[EEDwD+DCCGCBBAAA@M@?9?>"=<V;:B:909887>76 655_432;1070/-,Y,+**W**)C)((X'Z&$#" hk? wE?__s;{bu  W #   _   C  {  fa}p ww6@+g"5*|=JsRo[VJ3b}b$7vY:F<LkY@uxo~ }#+q8/fZseк% J{_ųFk *;B%\g;g8PzDyG,]ϜКh8הV}C  FlҊ NYنR׃]ǁq/~5~}}||{zy}xwvvudu*uttTttrLomxm ljbe}dcca`b_^]\[ZZYXlXWV-VUJUT^TSQ{QQP9OMELJYJHGAGFFGFEYED_DCBAvA@P@?><;;:987654t32100/./..^,*))W('&(&\$#c#U"!3!  m [J@6/*LEsY  4 R TRKhfG?As7m)m+[W M qd+aF*oFp,<@CJN@\l ( b)MCQcuGKa&_ Y$Eu'۾+ص|eƱͰM5Q!ըK˦̥t65aΟYJ(<шa l{~z}{ywuMtsxrqpoDnmmLlkkkjxjheeetd8dcb2babaa`Z`_ _]\][ZZnYXWVMVUiUTSSfRNMMLLpLLKPKJJ/JIHH_HGFFjEDkDCZCBA@?I>=L=<C<;:99o8765 53100/0/.5.-,n+**E*&7#""B"!y eR Mm6 RD-Q*v    s 'zfD.ai;A}}:Fjf$^z""r(b lV 9?EG_ "|*H]_]#A!Ÿ.Tδ|^ G]bAԤ1ϣs9բq }vQEKΕWΒ-ӑyqL~ljV`݃}u ~?}{Szxyxxowtrqqppon>nmim$m;lkkk%ji+hf:fcCb+a`_]__^}^^]Z]][ZYXWWzW&WVQU_TSRKRQPPNWNnMLULIaI IHHGF]FE6EDCBBDB@?>==;:9876h654c3B2*10@/-,8+*(''k&%%y$#C#"U!  ( ?b+LVlk7@fSH8 Z J k dC 9 '  3 Z u t s r  F  a $  { g @  < q  m c  y R  G C      l ) 3 P i  a  R l  ' ׽ y S ? u 6 ڶ ( V  + C w ̪ ^ ԩ ` ҧ D إ Ǥ = $  s ǘ I Ǘ M q  Ԕ q i J ˏ   9 Œ  ȉ P Lj 6 ܇ ( ҆ S g σ  ׁ  ~ } } [| z ]y Cx :w 1v _t r q p #o (n m m m l k k i h h oe c &c a ` C` _ c_ ^ k^ ^ ] \ \ H\ [ [ LZ X X W W M L K J sJ HG nD C B A f= ; : 8 7 E7 6 f6 6 5 ^5 5 4 R4 4 3 D3 2 2 F2 1 1 / - , 4+ h) 9( Y' g& & d% % $ h$ $ # @" ! R!   1  4 6      {   e    9 4   8  O {   2 ^   | U =  }  P 0 | M  ! e   .  f ; o  S I 0 3 U T   C v  d , R  e e t * ~ ( Y Y c b ͽ Q ޺ i ] J  6  [ 3 _  O G Ñ ] / * V x g a 3 ń 5 ӂ G K  d ~ l~ ,~ ]| { { z z Tz y ex w cw w v Yv t Et ys r q ?q p Ep o o Oo n em oj i f rf e fe e d pd "d c c c b 0b Ca e` ` _ {_ ^ ] l\ Z fZ Y Y X jX X W V bV `U T S S Q P O M K EJ I H oG F E E C UB 2? = < 8< ; ; J; : : `: : 9 9 9 8 y8 B8 7 l7 7 6 ;6 5 5 4 P4 3 63 2 42 1 f1 .1 0 . f. . - ^- $- , h, , + f+ + * |* 0* ( ' & & T& & % % H% $ $ $ # p# # " r" " ! ^! R   P   R   R   B  z "  r   L  R         s  T = f N 1   S |  / 4  w  v  \  a * d n b  H c    : W  1 r w K S 1 ſ e  _ a  A  ,  J 7  }  {  $ , l  3 ߟ M B ȝ R )  p  g ' ; 2 " ̑ x g 2 ' g ݄ 4  4  ~ ;z w t ar o qm e ed c b a &a _ ^ ] '] q\ #W S ZR cQ P }O PN !M DK I H H :G G F F ~E &D B YB A A 5@ ? A> ' & K& % $ F# !  ,  z   b    x  t   T   :     I   K  a   c   @ 2  L   C  `  n x  J (    F $ / . 1 n  t {  s L 5 Q |  ) |  V M k v S  o    q T ж 9 R Ӯ j  1 Ρ 4 /   5 P   3  U T ( ʑ P ] } 9 ɋ R X  q Ƀ т = ' j  G ~ ^~ } x{ w u s ks Fr q q o o n m m 3l k j j i +i h kh g g Lg =f f ?e d c rb ` _ ^ ] \ [ Z Z *Z Z ]Y sX W W 1W V wV V U U R RR R nP O M L L HL L (K J I I H G G F hF E E D D C C 9C 0B A vA A @ r? v> = < ; s: J9 9 8 L8 7 46 4 U3 3 x2 2 S1 0 0 / . . - , Z+ * * ) ( ( ' & ^% $ C$ # P# " " ;" ! [!       l .   O    h   N  i   *    l   G I   `  u  #   ? j V Z X V  5 n  o  L c  i  P 5  k 4 6 ^ 8 I { 3 r 4 v \  h  J x L  X p  D : F /   a g 8 $ ) n A ٷ k  5 ӯ  H g 8 Ԩ c & { % ˤ U + ߣ E _ f 8 F u V R Z b ҏ  R k ̆  > h : * J  l } | -| { { pz z y y x @x w xw u Ru t t #s r r q Jp p o Ho o ln h g 2g ff e d c c b Ub ba ` _ _ ] ] F\ [ [ O[ Y Y (Y X (X W xW V =V 2S R R R Q lQ GP eO M M K ]K I QH H F E C {B @ G@ ? > p> ;= < q< < i9 7 v5 3 2 2 j1 0 m/ C/ . . - - &- * @* ) W) ( P( w' J' & & & % Z% $ u$ $ # D# # " 7" ! g! | } =     x  V s          \ .   4   @ ^        ,   Z   \   Y  = %$<(* & Y$Y~d49|igY)R.0 89-c1DP+F Rټ u aOw,­hi3uJ `&ԚkI|GGAʁer}|{zyxYxwwSwvvGvuuu utt-srpqnmwmldkjjjihfedcUcb1ba-a``__V__^^]q]]\M\ZSZZdYXW%WQV}UTTRFRRQkQPPFP PON$M}KHGFEE|class (Monoid w, Monad m) => | (MonadWriter w m) (m -> w)E|class  Monad m => | (MonadState s m) (m -> s)'Foget returns the state from the internals of the monad. put replaces the state inside the monad. |class  Monad m => | (MonadReader r m) (m -> r)FSee 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)H|class  Monad m => | (MonadError e m) (m -> e)cHThe 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. zipWith zipWith :: (Char -> Char -> a) ->  ByteString ->  ByteString -> [a]/LKCharChara 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. zipzip ::  ByteString ->  ByteString -> [(Char, Char)]MM 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 ()iOLOTChanaaSTM()!Write a value to a TChan. WriterTWriterT :: m (a, w) ->  WriterT w m aPOm(,)awWriterTwmaWriterTnewtype WriterT w m aBPWriterTWriterT :: m (a, w) ->  WriterT w m aPPm(,)awWriterTwmaWriterTnewtype WriterT w m aPWriterWriter :: (a, w) ->  Writer w agQGQ(,)awWriterwaWriternewtype Writer w aQWriterWriter :: (a, w) ->  Writer w a RQ(,)awWriterwaWriternewtype Writer w aBR writeFile writeFile :: FilePath ->  ByteString -> IO ()RRFilePath ByteStringIO()%Write a ByteString to a file. wordswords ::  ByteString ->  [ByteString]bSAS ByteString[] ByteStringwords breaks a ByteString up into a list of words, which were delimited by Chars representing white space. And
tokens isSpace = words
 withStateT withStateT :: (s -> s) ->  StateT s m a ->  StateT s m aTnTssStateTsmaStateTsmaSimilar to withState  withStateT withStateT :: (s -> s) ->  StateT s m a ->  StateT s m a]U,UssStateTsmaStateTsmaSimilar to withState  withState withState :: (s -> s) ->  State s a ->  State s a VUssStatesaStatesaBApply this function to this state and return the resulting state.  withState withState :: (s -> s) ->  State s a ->  State s aVVssStatesaStatesaBApply 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 aWWr's(,)rsRWSTrwsmaRWSTr'wsmawithRWSTwithRWST :: (r' -> s -> (r, s)) -> RWST r w s m a -> RWST r' w s m aXcXr's(,)rsRWSTrwsmaRWSTr'wsmawithRWSwithRWS :: (r' -> s -> (r, s)) ->  RWS r w s a ->  RWS r' w s a`Y Yr's(,)rsRWSrwsaRWSr'wsawithRWSwithRWS :: (r' -> s -> (r, s)) ->  RWS r w s a ->  RWS r' w s aZYr's(,)rsRWSrwsaRWSr'wsawildPwildP :: PatQOZHZPatQWildPWildP :: PatZZPat whiteSpace whiteSpace :: GenTokenParser s u m -> ParsecT s u m ()&[ZGenTokenParsersumParsecTsum()#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] -> Doc\\[]DecDocvcatvcat :: [Doc] -> Doc]\[]DocDocList version of $$ varTvarT :: Name -> TypeQm]]]NameTypeQVarTVarT :: Name -> Type]]NameTypeVarStrictTypeQtype VarStrictTypeQ = Q VarStrictType^ varStrictType varStrictType :: Name ->  StrictTypeQ -> VarStrictTypeQ^^Name StrictTypeQVarStrictTypeQ VarStrictTypetype  VarStrictType = (Name, Strict, Type)_varPvarP :: Name -> PatQR_C_NamePatQVarPVarP :: Name -> Pat__NamePatVarNameVarName ::  NameSpace__ NameSpaceVarI VarI :: Name -> Type ->  Maybe Dec -> Fixity -> Info```NameTypeMaybeDecFixityInfovarEvarE :: Name -> ExpQ``NameExpQVarEVarE :: Name -> Exp)aaNameExpvalD valD :: PatQ -> BodyQ -> [DecQ] -> DecQaaPatQBodyQ[]DecQDecQValD ValD :: Pat -> Body -> [Dec] -> Dec-bbPatBody[]DecDec utcToTAITime utcToTAITime :: LeapSecondTable -> UTCTime ->  AbsoluteTimebbLeapSecondTableUTCTime AbsoluteTimeutcTimeToPOSIXSecondsutcTimeToPOSIXSeconds :: UTCTime ->  POSIXTimeQc:cUTCTime POSIXTime utcDayLength utcDayLength :: LeapSecondTable -> Day -> DiffTimeccLeapSecondTableDayDiffTimeupperupper :: Stream s m Char => ParsecT s u m Charhd7dStreamsmCharParsecTsumChar]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 ()^e/eMonadmuuParsecTsum()6An alias for modifyState for backwards compatibility. updatePosStringupdatePosString ::  SourcePos -> String ->  SourcePos(ff 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 ->  SourcePoszg[g 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. unwordsunwords ::  [ByteString] ->  ByteStringAi i[] ByteString ByteStringSThe unwords function is analogous to the unlines function, on words. 7 unsafeIOToST unsafeIOToST :: IO a -> ST s aiiIOaSTsa7unsafeInterleaveSTunsafeInterleaveST :: ST s a -> ST s a{j`jSTsaSTsaUnsafeUnsafe :: SafetyjjSafetyunpackunpack ::  ByteString -> [Char]#kk ByteString[]Char=O(n) Converts a ByteString to a String. unlitunlit :: FilePath -> String -> Either String StringkkFilePathStringEitherStringStringunlit takes a filename (for error reports), and transforms the given string, to eliminate the literate comments from the program text. unlinesunlines ::  [ByteString] ->  ByteStringll[] ByteString ByteStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each. Uniqtype Uniq = Intm unGetTChan unGetTChan :: TChan a -> a -> STM ()#nnTChanaaSTM()JPut a data item back onto a channel, where it will be the next item read. unfoldrunfoldr :: (a -> Maybe (Char, a)) -> a ->  ByteString onaMaybe(,)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.qpStreamsmtStringParsecTsumaThe 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)ssStringMessageunconsuncons ::  ByteString -> Maybe (Char, ByteString)ss ByteStringMaybe(,)Char ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty. TyVarITyVarI :: Name -> Type -> Info|tgtNameTypeInfotySynD tySynD :: Name -> [Name] -> TypeQ -> DecQutName[]NameTypeQDecQTySynD TySynD :: Name -> [Name] -> Type -> DeculuName[]NameTypeDecTypeQtype TypeQ = Q TypeuTypedata TypeuTyConITyConI :: Dec -> InfoCv5vDecInfotupPtupP :: [PatQ] -> PatQvv[]PatQPatQTupPTupP :: [Pat] -> Patvv[]PatPat tupleTypeName tupleTypeName :: Int -> NameOwAwIntNametupleTtupleT :: Int -> TypeQwwIntTypeQTupleTTupleT :: Int -> TypewwIntType tupleDataName tupleDataName :: Int -> NameUxGxIntNametupEtupE :: [ExpQ] -> ExpQxx[]ExpQExpQTupETupE :: [Exp] -> Expyx[]ExpExp tryTakeTMVar tryTakeTMVar :: TMVar a ->  STM (Maybe a)y^yTMVaraSTMMaybeaA 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 a|V| GenParsertoksta GenParsertoksta transpose transpose ::  [ByteString] ->  [ByteString] }|[] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument.  toWeekDate toWeekDate :: Day -> (Integer, Int, Int)}}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)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]ƁMStreamsmtEqt[]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 ayStreamsmt tString 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
 TokenParserX 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 IdentityCtokentoken :: Stream s Identity t => t -> String -> t ->  SourcePos -> t -> Maybe a ->  Parsec s u aNStreamsIdentityttStringt 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)ƕDay(,)IntegerIntconvert to ISO 8601 Ordinal Day 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. toJuliantoJulian :: Day -> (Integer, Int, Int)Day(,,)IntegerIntIntuconvert to proleptic Julian calendar. First element of result is year, second month number (1-12), third day (1-31). toChunkstoChunks ::  ByteString ->  [ByteString]ϗ ByteString[] ByteStringUO(n) Convert a lazy ByteString into a list of strict ByteString  to_HPJ_Doc to_HPJ_Doc :: Doc -> DocDocDocTMVardata TMVar a͘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 -> PatQPatQPatQTildePTildeP :: Pat -> Pat PatPat throwError throwError :: MonadError e m => e -> m af MonadErroremema Threadsafe Threadsafe :: SafetyКǚSafetytexttext :: String -> Doc"StringDoctelltell :: MonadWriter w m => w -> m ()s MonadWriterwmwm()TChandata TChan aǛITChan is an abstract type representing an unbounded FIFO channel.  TcClsName TcClsName ::  NameSpace\P NameSpaceTArraydata TArray i eTArray 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).  takeWhile takeWhile :: (Char -> Bool) ->  ByteString ->  ByteString?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 aY@TMVaraSTMaReturn the contents of the TMVar. If the TMVar is currently empty, the transaction will retry. After a takeTMVar, the TMVar is left empty. taketake :: Int64 ->  ByteString ->  ByteStringeInt64 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 -> UTCTimeLeapSecondTable AbsoluteTimeUTCTimetailstails ::  ByteString ->  [ByteString]Z9 ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. tailtail ::  ByteString ->  ByteString ByteString ByteStringZO(1) Extract the elements after the head of a ByteString, which must be non-empty. taiEpochtaiEpoch ::  AbsoluteTime AbsoluteTime4The epoch of TAI, which is 1858-11-17 00:00:00 TAI. tabtab :: Stream s m Char => ParsecT s u m CharvEStreamsmCharParsecTsumChar8Parses a tab character ('\t'). Returns a tab character.  SysUnExpect SysUnExpect :: String -> MessageStringMessagesymbolsymbol :: GenTokenParser s u m -> String -> ParsecT s u m StringϥGenTokenParsersumStringParsecTsumString`Lexeme parser symbol s parses string s and skips trailing white space.  swapTMVar swapTMVar :: TMVar a -> a -> STM aTMVaraaSTMa5Swap the contents of a TMVar for a new value. sundayStartWeeksundayStartWeek :: Day ->  (Int, Int)Q8Day(,)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 -> DayDayDay,The next Sunday strictly after a given day. 7stToIOstToIO :: ST RealWorld a -> IO aZ: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 -> aΪErroraStringa stringLiteral stringLiteral :: GenTokenParser s u m -> ParsecT s u m String[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 StringLitStringLStringL :: String -> LitdTStringLitstringEstringE :: String -> ExpQStringExpQstringstring :: Stream s m Char => String -> ParsecT s u m Stringe(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 StrictTypes strictType strictType :: Q Strict -> TypeQ ->  StrictTypeQܯQStrictTypeQ StrictTypeQ StrictTypetype  StrictType = (Strict, Type)K7strictToLazySTstrictToLazyST :: ST s a -> ST s aSTsaSTsaConvert 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 StrictStmtQtype StmtQ = Q StmtStmtdata StmtstdCallstdCall :: Callconv]RCallconvStdCallStdCall :: CallconvCallconv stateUser stateUser ::  State s u -> uStatesuuStateTStateT :: s -> m (a, s) ->  StateT s m acsm(,)asStateTsmaStateTnewtype StateT s m adzA 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 asm(,)asStateTsmaStateTnewtype StateT s m aNA 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 ->  SourcePosfStatesu SourcePos stateInput stateInput ::  State s u -> sҺStatesusState State :: s ->  SourcePos -> u ->  State s uqNs SourcePosuStatesuStatedata State s uStateState :: s -> (a, s) ->  State s as(,)asStatesaStatenewtype State s aQA 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 aN,s(,)asStatesaStatenewtype State s aA parameterizable state monad where s is the type of the state to carry and a is the type of the return value. 7STdata ST s a3The 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 afGenTokenParsersumParsecTsumaParsecTsuma!DEPRECATED: Use brackets.  splitWith splitWith :: (Char -> Bool) ->  ByteString ->  [ByteString]uFCharBool 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",""]
splitAtsplitAt :: Int64 ->  ByteString -> (ByteString, ByteString)g2Int64 ByteString(,) ByteString ByteStringlO(n\c)/ splitAt n xs is equivalent to (take n xs, drop n xs). splitsplit :: Type -> (Type, [Type])B Type(,)Type[]Typesplitsplit :: 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. spanspan :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)c'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 ()uFStreamsmCharParsecTsum()LSkips zero or more white space characters. See also skipMany. spacespace :: Stream s m Char => ParsecT s u m CharFStreamsmCharParsecTsumCharlParses a white space character (any character which satisfies isSpace) Returns the parsed character. spacespace :: DocDocA space character  SourcePosdata  SourcePos2The 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 = String sourceLine sourceLine ::  SourcePos -> Linezf SourcePosLine1Extracts the line number from a source position.  sourceColumn sourceColumn ::  SourcePos -> Column SourcePosColumn3Extracts the column number from a source position. snocsnoc ::  ByteString -> Char ->  ByteString ByteStringChar ByteStringvO(n) Append a Char to the end of a ByteString. Similar to cons, this function performs a memcpy. smallChunkSizesmallChunkSize :: IntInt9Currently set to 4k, less the memory management overhead  skipMany1 skipMany1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()z5StreamsmtParsecTsumaParsecTsum()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 ()LStreamsmtParsecTsumaParsecTsum()skipMany p applies the parser p zero or more times, skipping its result.
spaces  = skipMany space
 singleton singleton :: Char ->  ByteStringkChar ByteString;O(1) Convert a Char into a ByteString  simpleMatch simpleMatch :: Pat -> Exp -> Match-PatExpMatchsigPsigP :: PatQ -> TypeQ -> PatQPatQTypeQPatQSigPSigP :: Pat -> Type -> PatPatTypePatsigEsigE :: ExpQ -> TypeQ -> ExpQ_IExpQTypeQExpQSigESigE :: Exp -> Type -> ExpExpTypeExpsigDsigD :: Name -> TypeQ -> DecQ)NameTypeQDecQSigDSigD :: Name -> Type -> DecyNameTypeDec showWeekDate showWeekDate :: Day -> StringDayStringFshow in ISO 8601 Week Date format as yyyy-Www-dd (e.g. "2006-W46-3").  showtextl showtextl ::  Show a => a -> DocShowaaDocshowOrdinalDateshowOrdinalDate :: Day -> StringDayString0show in ISO 8601 Ordinal Date format (yyyy-ddd)  showName' showName' :: NameIs -> Name -> StringNameIsNameStringshowNameshowName :: Name -> StringNameStringshowJulianYearAndDayshowJulianYearAndDay :: Day -> StringzjDayString/show in ISO 8601 Ordinal Day format (yyyy-ddd)  showJulian showJulian :: Day -> StringDayString%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.  setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePos|W SourcePos SourceName SourcePosSet the name of the source.  setSourceLine setSourceLine ::  SourcePos -> Line ->  SourcePos$ SourcePosLine SourcePos*Set the line number of a source position. setSourceColumnsetSourceColumn ::  SourcePos -> Column ->  SourcePos SourcePosColumn SourcePos,Set the column number of a source position.  setPosition setPosition ::  Monad m =>  SourcePos -> ParsecT s u m ()yMonadm SourcePosParsecTsum()KsetPosition pos sets the current source position to pos. setParserStatesetParserState ::  Monad m =>  State s u -> ParsecT s u m (State s u)pMonadmStatesuParsecTsumStatesuEsetParserState st set the full parser state to st. setInputsetInput ::  Monad m => s -> ParsecT s u m ()}SMonadmsParsecTsum()setInput input continues parsing with input. The getInput and setInput functions can for example be used to deal with #include files.  setErrorPos setErrorPos ::  SourcePos ->  ParseError ->  ParseError SourcePos ParseError ParseErrorsetErrorMessagesetErrorMessage :: Message ->  ParseError ->  ParseErrorU1Message ParseError ParseError 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]QStreamsmtParsecTsumaParsecTsumsepParsecTsum[]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]TStreamsmtParsecTsumaParsecTsumsepParsecTsum[]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]RStreamsmtParsecTsumaParsecTsumsepParsecTsum[]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]qStreamsmtParsecTsumaParsecTsumsepParsecTsum[]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]IGenTokenParsersumParsecTsumaParsecTsum[]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 StringKGenTokenParsersumParsecTsumStringjLexeme parser |semi| parses the character ';' and skips any trailing white space. Returns the string ";". semisemi :: Doc%DocA ';' character sectionRsectionR :: ExpQ -> ExpQ -> ExpQExpQExpQExpQsectionLsectionL :: ExpQ -> ExpQ -> ExpQExpQExpQExpQscanl scanl :: (Char -> Char -> Char) -> Char ->  ByteString ->  ByteStringCharCharCharChar 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 CharGStreamsmCharCharBoolParsecTsumCharThe parser satisfy f succeeds for any character for which the supplied function f returns True. Returns the character that is actually parsed. Safetydata Safety`safesafe :: SafetySafetySafeSafe :: SafetySafetyRWST RWST :: r -> s ->  m (a, s, w) -> RWST r w s m azDrsm(,,)aswRWSTrwsmaRWSTnewtype RWST r w s m aRWST RWST :: r -> s ->  m (a, s, w) -> RWST r w s m aUrsm(,,)aswRWSTrwsmaRWSTnewtype RWST r w s m aRWS RWS :: r -> s ->  (a, s, w) ->  RWS r w s a rs(,,)aswRWSrwsaRWSnewtype RWS r w s aURWS RWS :: r -> s ->  (a, s, w) ->  RWS r w s ars(,,)aswRWSrwsaRWSnewtype RWS r w s a runWriterT runWriterT ::  WriterT w m a -> m (a, w)vWriterTwmam(,)aw runWriterT runWriterT ::  WriterT w m a -> m (a, w)"WriterTwmam(,)aw runWriter runWriter ::  Writer w a -> (a, w)uWriterwa(,)aw runWriter runWriter ::  Writer w a -> (a, w)Writerwa(,)aw runStateT runStateT ::  StateT s m a -> s -> m (a, s)lStateTsmasm(,)as runStateT runStateT ::  StateT s m a -> s -> m (a, s)&StateTsmasm(,)asrunStaterunState ::  State s a -> s -> (a, s)Statesas(,)asrunStaterunState ::  State s a -> s -> (a, s)$Statesas(,)as7runSTrunST :: ST s a -> axfSTsaaReturn 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)RRWSTrwsmarsm(,,)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(,,)aswrunQrunQ ::  Quasi m => Q a -> m a!QuasimQama runParser  runParser :: GenParser tok st a -> st ->  SourceName -> [tok] -> Either ParseError a GenParsertokstast SourceName[]tokEither ParseErrorarunIOrunIO :: IO a -> Q adPIOaQaThe 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. rparenrparen :: Doc) # DocA ')' character reversereverse ::  ByteString ->  ByteString   ByteString ByteString]O(n) reverse xs returns the elements of xs in reverse order. returnQreturnQ :: a -> Q aU G aQareservedOpNamesreservedOpNames :: GenLanguageDef s u m -> [String]  GenLanguageDefsum[]String The list of reserved operators. reservedOpNamesreservedOpNames :: GenLanguageDef s u m -> [String] w 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] t GenLanguageDefsum[]String"The list of reserved identifiers. reservedreserved :: GenTokenParser s u m -> String -> ParsecT s u m ()w 9 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() replicate replicate :: Int64 -> Char ->  ByteStringE ) Int64Char ByteString{O(n) replicate n x is a ByteString of length n with x the value of every element. repeatrepeat :: Char ->  ByteString  Char ByteString`repeat x is an infinite ByteString, with x the value of every element. renamerename :: Pat -> Q ([(Name, Name)], Pat)  PatQ(,)[](,)NameNamePatreifyreify :: Name -> Q Infob N NameQInfo8reify looks up information about the Name recUpdErecUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ(  ExpQ[]Q(,)NameExpExpQRecUpdERecUpdE :: Exp ->  [FieldExp] -> Exp  Exp[]FieldExpExprecPrecP :: Name ->  [FieldPatQ] -> PatQ  Name[] FieldPatQPatQRecPRecP :: Name ->  [FieldPat] -> Pat n Name[]FieldPatPatrecoverrecover :: Q a -> Q a -> Q a  QaQaQarecConErecConE :: Name -> [Q (Name, Exp)] -> ExpQ ] Name[]Q(,)NameExpExpQRecConERecConE :: Name ->  [FieldExp] -> Exp  Name[]FieldExpExprecCrecC :: Name -> [VarStrictTypeQ] -> ConQ ` Name[]VarStrictTypeQConQRecCRecC :: Name -> [VarStrictType] -> Con  Name[] VarStrictTypeCon readTMVar readTMVar :: TMVar a -> STM ak R 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 ac J TChanaSTMa+Read the next value from the TChan.  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. readIntreadInt ::  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. readFilereadFile :: FilePath ->  IO ByteString  FilePathIO ByteStringmRead an entire file lazily into a ByteString. Use 'text mode' on Windows to interpret newlines rbrackrbrack :: Docv p DocA ']' character rbracerbrace :: Doc  DocA '}' character  rationalL rationalL :: Rational -> Lit0  RationalLit RationalL RationalL :: Rational -> Lit ~ RationalLitrationalrational :: Rational -> Doc  RationalDocRangeQtype RangeQ = Q Range* Rangedata RangeX quotesquotes :: Doc -> Doc  DocDoc Wrap document in '...' Quasiclass (Monad m, Functor m) => Quasi m qRunIOqRunIO ::  Quasi m => IO a -> m a ` QuasimIOamaqReportqReport ::  Quasi m => Bool -> String -> m ()   QuasimBoolStringm()qReifyqReify ::  Quasi m => Name -> m Info| \ QuasimNamemInfoqRecoverqRecover ::  Quasi m => m a -> m a -> m a  QuasimmamamaqNewNameqNewName ::  Quasi m => String -> m Name~ \ QuasimStringmNameqCurrentModuleqCurrentModule ::  Quasi m => m String  QuasimmStringQdata Q a pzeropzero :: GenParser tok st ao U  GenParsertokstaputTMVarputTMVar :: TMVar a -> a -> STM ()  TMVaraaSTM()kPut a value into a TMVar. If the TMVar is currently full, putTMVar will retry. putStrLnputStrLn ::  ByteString -> IO ()   ByteStringIO()7Write a ByteString to stdout, appending a newline byte putStrputStr ::  ByteString -> IO ()W >  ByteStringIO()Write a ByteString to stdout putput :: MonadState s m => s -> m ()   MonadStatesmsm() punctuate punctuate :: Doc -> [Doc] -> [Doc]_ A 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  NameIntBoolInfoPrefixPrefix :: GenParser tok st (a -> a) -> Operator tok st a9   GenParsertokstaaOperatortoksta Precedencetype  Precedence = Inty pprVarStrictTypepprVarStrictType :: (Name, Strict, Type) -> Doc  (,,)NameStrictTypeDocpprTyApppprTyApp :: (Type, [Type]) -> Docx W (,)Type[]TypeDoc pprStrictType pprStrictType :: (Strict, Type) -> Doc  (,)StrictTypeDocpprPatpprPat ::  Precedence -> Pat -> Docc! J!  PrecedencePatDoc pprParendType pprParendType :: Type -> Doc! ! TypeDocpprName'pprName' :: NameIs -> Name -> Doc3" " NameIsNameDocpprNamepprName :: Name -> Doc" y" NameDoc pprMaybeExp pprMaybeExp ::  Precedence ->  Maybe Exp -> Doc# "  PrecedenceMaybeExpDocPprMdata PprM a@# pprLitpprLit ::  Precedence -> Lit -> Doc# #  PrecedenceLitDocpprintpprint ::  Ppr a => a -> String$ # PpraaString pprInfixExp pprInfixExp :: Exp -> Docq$ d$ ExpDoc pprFixity pprFixity :: Name -> Fixity -> Doc$ $ NameFixityDoc pprFields pprFields ::  [(Name, Exp)] -> DocV% 6% [](,)NameExpDocpprExppprExp ::  Precedence -> Exp -> Doc% %  PrecedenceExpDocpprCxtpprCxt :: Cxt -> Doc&  & CxtDocpprBodypprBody :: Bool -> Body -> Doc& n& BoolBodyDocppr_listppr_list ::  Ppr a => [a] -> Doc& & Ppra[]aDocpprppr ::  Ppr a => a -> DocF' 1' PpraaDocPprclass Ppr as'  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 :: NominalDiffTime0) ) NominalDiffTime#86400 nominal seconds in every day plainplain :: String -> String -> String) ) StringStringStringNo unliteration.  pkgString pkgString :: PkgName -> String<* (* PkgNameStringPkgNametype PkgName = PackedString* permutepermute :: Stream s Identity tok => StreamPermParser s st a ->  Parsec s st aL+ * 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- patGEpatGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp). Y. []StmtQExpQQ(,)GuardExppatGpatG :: [StmtQ] -> GuardQ. . []StmtQGuardQPatGPatG :: [Stmt] -> Guard?/ )/ []StmtGuardPatdata Pati/ 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 ()0 0 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 -> LeapSecondTable1 1 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 ()2 Parsertype Parser = Parsec ByteString () 3  parseFromFile parseFromFile :: Parser a -> String -> IO (Either ParseError a)3 3 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)&6 5 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'8 >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. parse parse :: Stream s Identity t =>  Parsec s () a ->  SourceName -> s -> Either ParseError aS: 9 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]] -> StmtQm< P< [][]StmtQStmtQParSParS :: [[Stmt]] -> Stmt< < [][]StmtStmtparensIfparensIf :: Bool -> Doc -> Doc7= $= BoolDocDocparensparens :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a= = GenTokenParsersumParsecTsumaParsecTsumanLexeme parser parens p parses p enclosed in parenthesis, returning the value of p. parensparens :: Doc -> Doc> > DocDoc Wrap document in (...) packpack :: [Char] ->  ByteString@? %? []Char ByteString>O(n) Convert a String into a ByteString. 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  optionMaybe optionMaybe :: Stream s m t => ParsecT s u m a -> ParsecT s u m (Maybe a)A lA 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 (),C B 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 aD ^D 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 ChartF oneOf ":!#$%&*+./<=>?@\\^|-~" opStartopStart :: GenLanguageDef s u m -> ParsecT s u m CharG SG GenLanguageDefsumParsecTsumCharzThis parser should accept any start characters of operators. For example oneOf ":!#$%&*+./<=>?@\\^|-~" opPrecopPrec ::  PrecedenceMH @H  PrecedenceopLetteropLetter :: GenLanguageDef s u m -> ParsecT s u m CharH H 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 CharrJ :J 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]]K operatoroperator :: GenTokenParser s u m -> ParsecT s u m String]L #L 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 aM oneOfoneOf :: Stream s m Char => [Char] -> ParsecT s u m CharN _N 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 CharO O StreamsmCharParsecTsumCharWParses an octal digit (a character between '0' and '7'). Returns the parsed character. octaloctal :: GenTokenParser s u m -> ParsecT s u m IntegerP P 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 -> StringQ Q OccNameStringOccNametype OccName = PackedStringR nullnull ::  ByteString -> BoolkR VR  ByteStringBool0O(1) Test whether a ByteString is empty.  notStrict notStrict :: Q StrictR R QStrict NotStrict NotStrict :: Strict.S %S Strict notFollowedBy notFollowedBy :: (Stream s m t, Show t) => ParsecT s u m t -> ParsecT s u m ()T S 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
                     })
notElemnotElem :: Char ->  ByteString -> BoolV V Char ByteStringBool9O(n) notElem is the inverse of elem normalGEnormalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)tW MW ExpQExpQQ(,)GuardExpnormalGnormalG :: ExpQ -> GuardQW W ExpQGuardQNormalGNormalG :: Exp -> Guard$X X ExpGuardnormalCnormalC :: Name ->  [StrictTypeQ] -> ConQX X Name[] StrictTypeQConQNormalCNormalC :: Name ->  [StrictType] -> Con$Y Y Name[] StrictTypeConnormalBnormalB :: ExpQ -> BodyQ|Y lY ExpQBodyQNormalBNormalB :: Exp -> BodyY Y ExpBodynoneOfnoneOf :: Stream s m Char => [Char] -> ParsecT s u m CharwZ 8Z 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[ [ ErroraanoBindSnoBindS :: ExpQ -> StmtQ[ [ ExpQStmtQNoBindSNoBindS :: Exp -> StmtB\ 4\ ExpStmtnewtypeDnewtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQ] \ CxtQName[]NameConQ[]NameDecQNewtypeDNewtypeD :: 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)j_ Q_ aSTMTMVara9Create a TMVar which contains the supplied value.  newTChanIO newTChanIO ::  IO (TChan a)_ _ 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)-a a STMTChana1Build and returns a new instance of TChan newPos newPos ::  SourceName -> Line -> Column ->  SourcePosa a  SourceNameLineColumn SourcePosYCreate a new SourcePos with the given source name, line number and column number. newNamenewName :: String -> Q Nameb b StringQNamenewlinenewline :: Stream s m Char => ParsecT s u m Char;c  c StreamsmCharParsecTsumChar@Parses a newline character ('\n'). Returns a newline character. newErrorUnknownnewErrorUnknown ::  SourcePos ->  ParseErrorc c  SourcePos ParseErrornewErrorMessagenewErrorMessage :: Message ->  SourcePos ->  ParseErrord ld Message SourcePos ParseErrornewEmptyTMVarIOnewEmptyTMVarIO ::  IO (TMVar a)d d 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)2f f STMTMVara0Create a TMVar which is initially empty. nestedCommentsnestedComments :: GenLanguageDef s u m -> Boolf f GenLanguageDefsumBoolCSet to True if the language supports nested block comments. nestedCommentsnestedComments :: GenLanguageDef s u m -> Boolg g GenLanguageDefsumBoolCSet to True if the language supports nested block comments.  nestDepth nestDepth :: Int:h 4h Intnestnest :: Int -> Doc -> Doch h IntDocDocNested naturalOrFloatnaturalOrFloat :: GenTokenParser s u m -> %ParsecT s u m (Either Integer Double)ti 'i 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 Integer k j 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# ->  NameFlavourl ol Int# NameFlavour NameSpacedata  NameSpacel NameSNameS ::  NameFlavourm l  NameFlavourNameQNameQ :: ModName ->  NameFlavourim Pm ModName NameFlavour nameModule nameModule :: Name ->  Maybe Stringm m NameMaybeStringNameLNameL :: Int# ->  NameFlavour8n "n Int# NameFlavourNameIsdata NameIshn NameG NameG ::  NameSpace -> PkgName -> ModName ->  NameFlavour o n  NameSpacePkgNameModName NameFlavour NameFlavourdata  NameFlavourDo nameBasenameBase :: Name -> Stringo o NameStringNameName :: OccName ->  NameFlavour -> Namep o OccName NameFlavourNameNamedata NameFp  monthLength monthLength :: Bool -> Int -> Intp p BoolIntInt^the length of a given month in the Gregorian or Julian calendars. First arg is leap year flag monthAndDayToDayOfYear monthAndDayToDayOfYear :: Bool -> Int -> Int -> Intq q BoolIntIntIntgconvert month and day in the Gregorian or Julian calendars to day of year. First arg is leap year flag  mondrianDef mondrianDef :: LanguageDef strr ^r  LanguageDefst3The language definition for the language Mondrian. mondrianmondrian :: TokenParser str r  TokenParserst#A lexer for the mondrian language. mondayStartWeekmondayStartWeek :: Day ->  (Int, Int)s {s 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 mt  modString modString :: ModName -> StringNu :u ModNameStringModNametype ModName = PackedStringu modifymodify :: MonadState s m => (s -> s) -> m ()v u  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.  mkPkgName mkPkgName :: String -> PkgNamew w StringPkgName mkOccName mkOccName :: String -> OccName Uniq -> Namex x StringUniqNamemkNameLmkNameL :: String -> Uniq -> Namey y StringUniqName mkNameG_tc  mkNameG_tc :: String -> String -> String -> Namey y StringStringStringNamemkNamemkName :: String -> Namez y StringName mkModName mkModName :: String -> ModNamelz Xz StringModNameminimumminimum ::  ByteString -> Charz z  ByteStringCharBminimum returns the minimum value from a ByteString  messageString messageString :: Message -> String|{ h{ MessageString1Extract the message string from an error message  messageEq messageEq :: Message -> Message -> Bool)| | MessageMessageBoolmessageComparemessageCompare :: Message -> Message -> Ordering| | MessageMessageOrderingMessageMessage :: String -> Message} } StringMessageMessagedata MessageI} 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 ->  ParseError ׁ  ParseError ParseError ParseError maxPrecedence maxPrecedence :: IntF @ Intmaximummaximum ::  ByteString -> Char   ByteStringCharBmaximum returns the maximum value from a ByteString MatchQtype MatchQ = Q Match& match match :: PatQ -> BodyQ -> [DecQ] -> MatchQ  PatQBodyQ[]DecQMatchQMatch Match :: Pat -> Body -> [Dec] -> Match6  PatBody[]DecMatchMatchdata Matchd  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' bȆ  (,)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 bL  m(,)asn(,)bsStateTsmaStateTsnbSimilar to mapState  mapStateT mapStateT :: (m (a, s) -> n (b, s)) ->  StateT s m a ->  StateT s n b3  m(,)asn(,)bsStateTsmaStateTsnbSimilar to mapState 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
mapStatemapState :: ((a, s) -> (b, s)) ->  State s a ->  State s bV  (,)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 bΏ m m(,,)aswn(,,)bsw'RWSTrwsmaRWSTrw'snbmapRWSmapRWS :: ((a, s, w) -> (b, s, w')) ->  RWS r w s a ->  RWS r w' s b G (,,)asw(,,)bsw'RWSrwsaRWSrw'sbmapRWSmapRWS :: ((a, s, w) -> (b, s, w')) ->  RWS r w s a ->  RWS r w' s b^  (,,)asw(,,)bsw'RWSrwsaRWSrw'sb 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.  mapAccumL  mapAccumL :: (acc -> Char -> (acc, Char)) -> acc ->  ByteString -> (acc, ByteString)6  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. mapmap :: (Char -> Char) ->  ByteString ->  ByteStringܕ  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]C  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]љ  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 ̜ 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
...
lparenlparen :: Docn h DocA '(' character lowerlower :: Stream s m Char => ParsecT s u m Char Ҡ StreamsmCharParsecTsumChar_Parses a lower case character (a character between 'a' and 'z'). Returns the parsed character.  lookAhead lookAhead :: Stream s m t => ParsecT s u m a -> ParsecT s u m a ӡ StreamsmtParsecTsumaParsecTsumaDlookAhead p parses p without consuming any input. locallocal :: MonadReader r m => (r -> r) -> m a -> m a â  MonadReaderrmrrmamalitPlitP :: Lit -> PatQA 3 LitPatQLitPLitP :: Lit -> Pat  LitPatlitElitE :: Lit -> ExpQۣ ͣ LitExpQLitELitE :: Lit -> Exp'  LitExpLitdata LitQ listTlistT :: TypeQ  TypeQListTListT :: TypeǤ  TypelistPlistP :: [PatQ] -> PatQ!  []PatQPatQListPListP :: [Pat] -> Patw d []PatPatlistenslistens :: MonadWriter w m => (w -> b) -> m a -> m (a, b)"   MonadWriterwmwbmam(,)ablistenlisten :: MonadWriter w m => m a -> m (a, w) }  MonadWriterwmmam(,)awlistElistE :: [ExpQ] -> ExpQ  []ExpQExpQListEListE :: [Exp] -> Exp_ L []ExpExplineslines ::  ByteString ->  [ByteString]ѧ   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 = IntШ liftlift ::  Lift t => t -> Q Exp4  LiftttQExpLiftclass Lift tc 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 ح []DecQStmtQLetSLetS :: [Dec] -> StmtD 0 []DecStmtletEletE :: [DecQ] -> ExpQ -> ExpQ  []DecQExpQExpQLetELetE :: [Dec] -> Exp -> Exp  []DecExpExplengthlength ::  ByteString -> Int64| f  ByteStringInt64SO(n\c)/ length returns the length of a ByteString as an Int64 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 7lazyToStrictSTlazyToStrictST :: ST s a -> ST s a  STsaSTsa8Convert a lazy ST computation into a strict one. lastlast ::  ByteString -> Char9 $  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 >  StringStringStringBoolParsecTsumCharParsecTsumCharParsecTsumCharParsecTsumChar[]String[]StringBoolGenLanguageDefsum LanguageDeftype  LanguageDef st$ = GenLanguageDef String st Identityg lamElamE :: [PatQ] -> ExpQ -> ExpQշ  []PatQExpQExpQLamELamE :: [Pat] -> Exp -> Exp= % []PatExpExplam1Elam1E :: PatQ -> ExpQ -> ExpQ  PatQExpQExpQlabelslabels ::  Monad m => ParsecT s u m a -> [String] -> ParsecT s u m aj  MonadmParsecTsuma[]StringParsecTsumalabellabel ::  Monad m => ParsecT s u m a -> String -> ParsecT s u m a%  MonadmParsecTsumaStringParsecTsumajulianMonthLengthjulianMonthLength :: 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 sty e  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. iterateiterate :: (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 :: Strict  Strict isPrefixOf isPrefixOf ::  ByteString ->  ByteString -> Bool1   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˿  IntegerBoolHIs this year a leap year according to the proleptic Gregorian calendar?  isEmptyTMVar isEmptyTMVar :: TMVar a -> STM Bool k 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 BoolF * TChanaSTMBool;Returns True if the supplied TChan is empty. isEmptyisEmpty :: Doc ->  PprM Bool  DocPprMBool-Returns True if the document is empty  invariant invariant ::  ByteString -> Boolu `  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 v IntegerLitIntPrimLIntPrimL :: Integer -> Lit  IntegerLit intersperse intersperse :: Char ->  ByteString ->  ByteStringo N 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.  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. interactinteract :: (ByteString -> ByteString) -> IO ()3   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  IntegerLitIntegerLIntegerL :: Integer -> Lit  IntegerLitintegerinteger :: GenTokenParser s u m -> ParsecT s u m Integer V 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 -> Doc@ / IntegerDocintint :: Int -> Doc } IntDoc instanceD  instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQ  CxtQTypeQ[]DecQDecQ InstanceD  InstanceD :: Cxt -> Type -> [Dec] -> Dec  CxtType[]DecDecinitsinits ::  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. initinit ::  ByteString ->  ByteString   ByteString ByteStringSO(n\c)/ Return all the elements of a ByteString except the last one. InfoQtype InfoQ = Q InfoH Infodata Infot InfixRInfixR :: FixityDirection  FixityDirectioninfixP infixP :: PatQ -> Name -> PatQ -> PatQF + PatQNamePatQPatQInfixP InfixP :: Pat -> Name -> Pat -> Pat  PatNamePatPatInfixNInfixN :: FixityDirection  FixityDirectionInfixLInfixL :: FixityDirectiond R FixityDirectioninfixE infixE ::  Maybe ExpQ -> ExpQ ->  Maybe ExpQ -> ExpQ  MaybeExpQExpQMaybeExpQExpQInfixE InfixE ::  Maybe Exp -> Exp ->  Maybe Exp -> Exp o MaybeExpExpMaybeExpExpinfixC infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQX  Q(,)StrictTypeNameQ(,)StrictTypeConQInfixC InfixC ::  StrictType -> Name ->  StrictType -> Con   StrictTypeName StrictTypeConinfixApp infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQr W ExpQExpQExpQExpQInfixInfix :: GenParser tok st (a -> a -> a) -> Assoc -> Operator tok st a0   GenParsertokstaaaAssocOperatortokstaInfixInfix :: NameIsn e NameIsindexindex ::  ByteString -> Int64 -> Char   ByteStringInt64CharKO(1) ByteString index (subscript) operator, starting from 0.  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 -> Foreignw E CallconvSafetyStringNameTypeForeign identStart identStart :: GenLanguageDef s u m -> ParsecT s u m Char  GenLanguageDefsumParsecTsumCharoThis parser should accept any start characters of identifiers. For example letter <|> char "_".  identStart identStart :: GenLanguageDef s u m -> ParsecT s u m Char,  GenLanguageDefsumParsecTsumCharoThis parser should accept any start characters of identifiers. For example letter <|> char "_".  identLetter identLetter :: GenLanguageDef s u m -> ParsecT s u m Char@  GenLanguageDefsumParsecTsumCharvThis parser should accept any legal tail characters of identifiers. For example alphaNum <|> char "_".  identLetter identLetter :: GenLanguageDef s u m -> ParsecT s u m Char[ # GenLanguageDefsumParsecTsumCharvThis parser should accept any legal tail characters of identifiers. For example alphaNum <|> char "_".  identifier identifier :: GenTokenParser s u m -> ParsecT s u m Stringx > 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. hsephsep :: [Doc] -> Doc$  []DocDoc!List version of <+> hPuthPut :: Handle ->  ByteString -> IO ()  Handle ByteStringIO()<Outputs a ByteString to the specified Handle. hGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteString m 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.  hGetContents hGetContents :: Handle ->  IO ByteString  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. hGethGet :: 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  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. headhead ::  ByteString -> Char   ByteStringCharPO(1) Extract the first element of a ByteString, which must be non-empty. hcathcat :: [Doc] -> Docg T []DocDoc List version of <>  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 st   LanguageDefst2The language definition for the Haskell language. haskellhaskell :: TokenParser st r  TokenParserst"A lexer for the haskell language. hang hang :: Doc -> Int -> Doc -> Doc  DocIntDocDoc0
hang d1 n d2 = sep [d1, nest n d2]
GuardQtype GuardQ = Q Guard guardedBguardedB :: [Q (Guard, Exp)] -> BodyQ  []Q(,)GuardExpBodyQGuardedBGuardedB :: [(Guard, Exp)] -> Body{ Y [](,)GuardExpBodyGuarddata Guard groupBygroupBy :: (Char -> Char -> Bool) ->  ByteString ->  [ByteString]U  CharCharBool ByteString[] ByteStringKThe groupBy function is the non-overloaded version of group. groupgroup ::  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. gregorianPaschalMoongregorianPaschalMoon :: Integer -> Day  IntegerDayKGiven a year, find the Paschal full moon according to the Gregorian method gregorianEastergregorianEaster :: Integer -> Day  IntegerDay<Given a year, find Easter according to the Gregorian method globalglobal :: Name -> ExpQ_ P NameExpQgetStategetState ::  Monad m => ParsecT s u m u  MonadmParsecTsumu Returns the current user state. getsgets :: MonadState s m => (s -> a) -> m ao H  MonadStatesmsamaLGets specific component of the state, using a projection function supplied.  getPOSIXTime getPOSIXTime ::  IO POSIXTime  IO POSIXTime2Get the current POSIX time from the system clock.  getPosition getPosition ::  Monad m => ParsecT s u m SourcePos  MonadmParsecTsum SourcePos@Returns the current source position. See also SourcePos. getParserStategetParserState ::  Monad m => ParsecT s u m (State s u) v MonadmParsecTsumStatesu8Returns the full parser state as a State record. getInputgetInput ::  Monad m => ParsecT s u m sQ - MonadmParsecTsumsReturns the current input  getContents getContents ::  IO ByteString  IO ByteStringGgetContents. Equivalent to hGetContents stdin. Will read lazily getget :: MonadState s m => m sj M  MonadStatesmmsGenTokenParserdata GenTokenParser s u m 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)  PatQ(,)NameExpQPat GenParsertype  GenParser tok st = Parsec [tok] st  GenParsertype  GenParser t st = Parsec ByteString stR GenLanguageDefdata GenLanguageDef s u m 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 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. funDepfunDep :: [Name] -> [Name] -> FunDep  []Name[]NameFunDepFunDepFunDep :: [Name] -> [Name] -> FunDepR / []Name[]NameFunDepFunDepdata FunDep funDfunD :: Name ->  [ClauseQ] -> DecQ  Name[]ClauseQDecQFunDFunD :: Name -> [Clause] -> Decf J Name[]ClauseDecfsepfsep :: [Doc] -> Doc  []DocDoc "Paragraph fill" version of sep  fromWeekDate  fromWeekDate :: Integer -> Int -> Int -> Dayf K 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 -> RangeQ  ExpQExpQRangeQFromToRFromToR :: Exp -> Exp -> Range  ExpExpRangefromToEfromToE :: ExpQ -> ExpQ -> ExpQ l ExpQExpQExpQ fromThenToR  fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQ  ExpQExpQExpQRangeQ FromThenToR  FromThenToR :: Exp -> Exp -> Exp -> Range | ExpExpExpRange fromThenToE  fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ  ExpQExpQExpQExpQ fromThenR fromThenR :: ExpQ -> ExpQ -> RangeQ | ExpQExpQRangeQ FromThenR FromThenR :: Exp -> Exp -> Range  ExpExpRange fromThenE fromThenE :: ExpQ -> ExpQ -> ExpQq \ ExpQExpQExpQfromSundayStartWeek fromSundayStartWeek :: Integer -> Int -> Int -> Day   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 -> RangeQ\ K ExpQRangeQFromRFromR :: Exp -> Range  ExpRangefromOrdinalDatefromOrdinalDate :: Integer -> Int -> Day,  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 -> Day= " 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 -> Day  IntegerIntDayvconvert from ISO 8601 Ordinal Day format. Invalid day numbers will be clipped to the correct range (1 to 365 or 366).  fromJulian  fromJulian :: Integer -> Int -> Int -> Day  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. fromEfromE :: ExpQ -> ExpQ  ExpQExpQ fromChunks fromChunks ::  [ByteString] ->  ByteStringS 2 [] ByteString ByteStringUO(c) Convert a list of strict ByteString into a lazy ByteString forImpDforImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQh 8 CallconvSafetyStringNameTypeQDecQForeignDForeignD :: Foreign -> Dec  ForeignDecForeigndata Foreign forallT forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ a []NameCxtQTypeQTypeQForallT ForallT :: [Name] -> Cxt -> Type -> Type  []NameCxtTypeTypeforallC forallC :: [Name] -> CxtQ -> ConQ -> ConQ u []NameCxtQConQConQForallC ForallC :: [Name] -> Cxt -> Con -> Con  []NameCxtConCon foldrChunks  foldrChunks :: (ByteString -> a -> a) -> a ->  ByteString -> a   ByteStringaaa ByteStringaCConsume the chunks of a lazy ByteString with a natural right fold. foldr1foldr1 :: (Char -> Char -> Char) ->  ByteString -> Char t CharCharChar ByteStringCharfoldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty ByteStrings foldr 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.  foldlChunks  foldlChunks :: (a -> ByteString -> a) -> a ->  ByteString -> a-  a ByteStringaa ByteStringa_Consume the chunks of a lazy ByteString with a strict, tail-recursive, accumulating left fold. foldl1'foldl1' :: (Char -> Char -> Char) ->  ByteString -> Char$  CharCharChar ByteStringCharA'foldl1\'' is like foldl1, but strict in the accumulator. foldl1foldl1 :: (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. foldl' foldl' :: (a -> Char -> a) -> a ->  ByteString -> a  aCharaa ByteStringa8'foldl\'' is like foldl, but strict in the accumulator. foldl 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 -> Litd R 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  FloatDoc7fixSTfixST ::  (a -> ST s a) -> ST s ag G aSTsaSTsaAllow the result of a state transformer computation to be used (lazily) inside the computation. Note that if f is strict, fixST f = _|_. FixityDirectiondata FixityDirectionK FixityFixity :: Int -> FixityDirection -> Fixity  IntFixityDirectionFixityFixitydata Fixity  findIndices findIndices :: (Char -> Bool) ->  ByteString -> [Int64] o CharBool ByteString[]Int64The findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order.  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. findfind :: (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. filterfilter :: (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.  FieldPatQtype  FieldPatQ = Q FieldPat fieldPatfieldPat :: Name -> PatQ ->  FieldPatQ t NamePatQ FieldPatQFieldPattype FieldPat = (Name, Pat)  FieldExpQtype  FieldExpQ = Q FieldExp fieldExpfieldExp :: Name -> ExpQ ->  Q (Name, Exp) y NameExpQQ(,)NameExpFieldExptype FieldExp = (Name, Exp) fcatfcat :: [Doc] -> Doc7! $! []DocDoc "Paragraph fill" version of cat ExpQtype ExpQ = Q Exp! ExportF ExportF :: Callconv -> String -> Name -> Type -> Foreign7"  " CallconvStringNameTypeForeignExpectExpect :: String -> Message" " StringMessageExpdata Exp"  execWriterT execWriterT ::  Monad m =>  WriterT w m a -> m wL# !# MonadmWriterTwmamw execWriterT execWriterT ::  Monad m =>  WriterT w m a -> m w# # MonadmWriterTwmamw execWriter execWriter ::  Writer w a -> w?$ )$ Writerwaw execWriter execWriter ::  Writer w a -> w$ $ Writerwaw 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% % MonadmStateTsmasmsSimilar to execState  execState execState ::  State s a -> s -> s& i& 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}' e' 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)( ( 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)* ) RWSrwsars(,)swexecRWS execRWS ::  RWS r w s a -> r -> s -> (s, w)* x* RWSrwsars(,)sw 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 -> a}, e, 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 -> a- j- 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)/ K/ MonadmRWSTrwsmarsm(,)awevalRWS evalRWS ::  RWS r w s a -> r -> s -> (a, w)0 / RWSrwsars(,)awevalRWS evalRWS ::  RWS r w s a -> r -> s -> (a, w)0 0 RWSrwsars(,)awerrorPoserrorPos ::  ParseError ->  SourcePos1 1  ParseError SourcePos2Extracts the source position from the parse error  errorMessages errorMessages ::  ParseError ->  [Message]1 1  ParseError[]Message9Extracts the list of error messages from the parse error errorIsUnknownerrorIsUnknown ::  ParseError -> Boolt2 _2  ParseErrorBoolErrorclass Error a2 bAn exception to be thrown. An instance must redefine at least one of noMsg, strMsg. equalsequals :: DocA3 ;3 DocA '=' character eofeof :: (Stream s m t, Show t) => ParsecT s u m ()3 3 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]5 ,5 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]7 6 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
emptyDefemptyDef :: LanguageDef stH8 48  LanguageDefstemptyempty :: Doc8 z8 DocAn empty document emptyempty ::  ByteString8 8  ByteString(O(1) The empty ByteString EmptyEmpty ::  ByteStringF9 99  ByteString elemIndices elemIndices :: Char ->  ByteString -> [Int64]9 9 Char ByteString[]Int64O(n) The elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order.  elemIndex elemIndex :: Char ->  ByteString ->  Maybe Int64: : 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. elemelem :: Char ->  ByteString -> Bool>< #< Char ByteStringBooltO(n) elem is the ByteString membership predicate. This implementation uses memchr(3). dyndyn :: String -> Q Exp = < 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.  dropWhile dropWhile :: (Char -> Bool) ->  ByteString ->  ByteString ? > CharBool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs. dropdrop :: 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 -> LitrA `A RationalLit DoublePrimL DoublePrimL :: Rational -> LitA A RationalLitdoubledouble :: Double -> Doc,B B DoubleDocdotdot :: GenTokenParser s u m -> ParsecT s u m StringB B GenTokenParsersumParsecTsumStringpLexeme parser dot parses the character '.' and skips any trailing white space. Returns the string ".". doEdoE :: [StmtQ] -> ExpQC wC []StmtQExpQDoEDoE :: [Stmt] -> ExpC C []StmtExpDoctype Doc = PprM DocD digitdigit :: Stream s m Char => ParsecT s u m CharD lD StreamsmCharParsecTsumChar.Parses a digit. Returns the parsed character. diffAbsoluteTimediffAbsoluteTime ::  AbsoluteTime ->  AbsoluteTime -> DiffTimeqE HE  AbsoluteTime AbsoluteTimeDiffTimediffAbsoluteTime a b = a - b  defaultFixity defaultFixity :: FixityE E FixitydefaultChunkSizedefaultChunkSize :: Int*F $F Int:Currently set to 32k, less the memory management overhead DecQtype DecQ = Q DecF decimaldecimal :: GenTokenParser s u m -> ParsecT s u m Integer=G G GenTokenParsersumParsecTsumIntegerWParses a positive whole number in the decimal system. Returns the value of the number. Decdata DecG dayOfYearToMonthAndDaydayOfYearToMonthAndDay :: Bool -> Int ->  (Int, Int)WH 8H BoolInt(,)IntIntgconvert day of year in the Gregorian or Julian calendars to month and day. First arg is leap year flag DataNameDataName ::  NameSpaceI H  NameSpacedataDdataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQI I CxtQName[]Name[]ConQ[]NameDecQDataDDataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> DecJ PJ CxtName[]Name[]Con[]NameDecDataConI DataConI :: Name -> Type -> Name -> Fixity -> Info$K K NameTypeNameFixityInfocyclecycle ::  ByteString ->  ByteStringK sK  ByteString ByteStringcycle ties a finite ByteString into a circular one, or equivalently, the infinite repetition of the original ByteString. CxtQtype CxtQ = Q CxtDL cxtcxt :: [TypeQ] -> CxtQL L []TypeQCxtQCxttype Cxt = [Type]L  currentModule currentModule :: Q String&M M QString\currentModule gives you the name of the module in which this computation is spliced. countcount :: Stream s m t => Int -> ParsecT s u m a -> ParsecT s u m [a]KN M 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. countcount :: Char ->  ByteString -> Int64O uO 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. copycopy ::  ByteString ->  ByteStringP P  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. conTconT :: Name -> TypeQNR >R NameTypeQConTConT :: Name -> TypeR R NameTypecons'cons' :: Char ->  ByteString ->  ByteStringS R 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. conscons :: Char ->  ByteString ->  ByteStringU uU Char ByteString ByteString9O(1) cons is analogous to '(:)' for lists. ConQtype ConQ = Q ConV conPconP :: Name -> [PatQ] -> PatQsV XV Name[]PatQPatQConPConP :: Name -> [Pat] -> PatV V Name[]PatPatconEconE :: Name -> ExpQ-W W NameExpQConEConE :: Name -> Exp{W mW NameExpcondE condE :: ExpQ -> ExpQ -> ExpQ -> ExpQW W ExpQExpQExpQExpQCondE CondE :: Exp -> Exp -> Exp -> ExpoX XX ExpExpExpExp concatMap concatMap :: (Char -> ByteString) ->  ByteString ->  ByteStringY X Char ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results concatconcat ::  [ByteString] ->  ByteStringY Y [] ByteString ByteString/O(n) Concatenate a list of ByteStrings. Condata Con&Z compEcompE :: [StmtQ] -> ExpQZ lZ []StmtQExpQCompECompE :: [Stmt] -> ExpZ Z []StmtExp commentStart commentStart :: GenLanguageDef s u m -> Stringc[ =[ 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 -> Stringk\ E\ 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 -> Stringq] K] 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 -> Stringu^ O^ 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 -> Stringw_ Q_ 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 -> Stringy` S` 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]a ya 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]Ac b 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 Stringd Gd GenTokenParsersumParsecTsumStringrLexeme parser comma parses the character ',' and skips any trailing white space. Returns the string ",". commacomma :: Doc+e %e DocA ',' character combinecombine :: [([(Name, Name)], Pat)] -> ([(Name, Name)], [Pat])f e [](,)[](,)NameNamePat(,)[](,)NameName[]PatColumntype Column = Int9f coloncolon :: GenTokenParser s u m -> ParsecT s u m Stringf f GenTokenParsersumParsecTsumStringrLexeme parser colon parses the character ':' and skips any trailing white space. Returns the string ":". coloncolon :: Docg zg DocA ':' character ClauseQtype ClauseQ = Q Clauseg clause clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQgh  Body -> [Dec] -> Clauseh h []PatBody[]DecClauseClausedata Clause'i ClassOpI ClassOpI :: Name -> Type -> Name -> Fixity -> Infoi i NameTypeNameFixityInfoClassIClassI :: Dec -> Infoj  j DecInfoclassDclassD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQj j CxtQName[]Name[]FunDep[]DecQDecQClassDClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Deck ik CxtName[]Name[]FunDep[]DecDec chunkOverhead chunkOverhead :: Intk k IntFThe memory management overhead. Currently this is tuned for GHC only. chunkchunk ::  ByteString ->  ByteString ->  ByteStringl l  ByteString ByteString ByteStringHSmart constructor for Chunk. Guarantees the data type invariant. ChunkChunk ::  ByteString ->  ByteString ->  ByteStringm hm  ByteString ByteString ByteStringchoicechoice :: Stream s m t => [ParsecT s u m a] -> ParsecT s u m aFn m 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. checkInvariantcheckInvariant ::  ByteString ->  ByteStringZo ?o  ByteString ByteString,In a form that checks the invariant lazily.  CharParsertype  CharParser st = GenParser Char sto  charLiteral charLiteral :: GenTokenParser s u m -> ParsecT s u m Char|p Dp 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 -> Litq q CharLitCharLCharL :: Char -> LitBr 4r CharLitcharchar :: Stream s m Char => Char -> ParsecT s u m Charr r StreamsmCharCharParsecTsumCharchar c parses a single character c. Returns the parsed character (i.e. c).
semiColon  = char ';'
charchar :: Char -> Docs s CharDocchainr1chainr1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m (a -> a -> a) -> ParsecT s u m at It 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 av chainr 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 ax {x 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 ay| | 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 aZ~ *~  MonadWriterwmwwmamaCCallCCall :: Callconv~ ~ Callconv catchError catchError :: MonadError e m => m a ->  (e -> m a) -> m aC   MonadErroremmaemamacatcat :: [Doc] -> Doc  []DocDocEither hcat or vcat  caseSensitive caseSensitive :: GenLanguageDef s u m -> Bool0  GenLanguageDefsumBool6Set to True if the language is case sensitive.  caseSensitive caseSensitive :: GenLanguageDef s u m -> Bool ɀ GenLanguageDefsumBool6Set to True if the language is case sensitive. caseEcaseE :: ExpQ -> [MatchQ] -> ExpQ z ExpQ[]MatchQExpQCaseECaseE :: Exp -> [Match] -> Exp  Exp[]MatchExpCallconvdata Callconv9 callCCcallCC :: MonadCont m => ((a -> m b) -> m a) -> m a͂   MonadContmambmama 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  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 buildExpressionParserbuildExpressionParser :: OperatorTable tok st a -> GenParser tok st a -> GenParser tok st a ^  OperatorTabletoksta GenParsertoksta GenParsertokstabreakbreak :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)c ' 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 a~ 2 GenTokenParsersumParsecTsumaParsecTsuma{Lexeme parser brackets p parses p enclosed in brackets ('[' and ']'), returning the value of p. bracketsbrackets :: Doc -> DocM @ DocDoc Wrap document in [...] bracesbraces :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a4  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 BodyT Bodydata Body bindSbindS :: PatQ -> ExpQ -> StmtQ Ԋ PatQExpQStmtQBindSBindS :: Pat -> Exp -> StmtN ; PatExpStmtbindQbindQ :: Q a ->  (a -> Q b) -> Q bŋ  QaaQbQbbetween 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 o StreamsmtParsecTsumopenParsecTsumcloseParsecTsumaParsecTsumabetween open close p parses open, followed by p and close. Returns the value returned by p.
braces  = between (symbol "{") (symbol "}")
 AssocRight AssocRight :: Assoc  Assoc AssocNone AssocNone :: Assoc5 - Assoc AssocLeft AssocLeft :: Assocy q AssocAssocdata Assoc NThis data type specifies the associativity of operators: left, right or none. asPasP :: Name -> PatQ -> PatQY D NamePatQPatQAsPAsP :: Name -> Pat -> Pat  NamePatPatasksasks :: MonadReader r m => (r -> a) -> m a8   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 rL .  MonadReaderrmmrarrowTarrowT :: TypeQ  TypeQArrowTArrowT :: TypeƑ  Type arithSeqE arithSeqE :: RangeQ -> ExpQ$  RangeQExpQ ArithSeqE ArithSeqE :: Range -> Exp~ o RangeExpappTappT :: TypeQ -> TypeQ -> TypeQ Ғ TypeQTypeQTypeQAppTAppT :: Type -> Type -> TypeP ; TypeTypeTypeappsEappsE :: [ExpQ] -> ExpQ  []ExpQExpQAppliedApplied :: NameIs  NameIs appendFile appendFile :: FilePath ->  ByteString -> IO ()w T FilePath ByteStringIO()&Append a ByteString to a file. appendappend ::  ByteString ->  ByteString ->  ByteString+   ByteString ByteString ByteString&O(n\c)/ Append two ByteStrings appEappE :: ExpQ -> ExpQ -> ExpQ  ExpQExpQExpQAppEAppE :: Exp -> Exp -> Exp  ExpExpExpanyTokenanyToken :: (Stream s m t, Show t) => ParsecT s u m t u 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. anyany :: (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 aǙ { 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 Charך  StreamsmCharParsecTsumCharZParses a letter or digit (a character between '0' and '9'). Returns the parsed character. alphaalpha :: [(Name, Name)] -> Name -> ExpQ  [](,)NameNameNameExpQAloneAlone :: NameIs  NameIsallall :: (Char -> Bool) ->  ByteString -> Boolv S CharBool ByteStringBoolApplied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. addJulianYearsRollOveraddJulianYearsRollOver :: Integer -> Day -> Day r 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. addErrorMessageaddErrorMessage :: Message ->  ParseError ->  ParseErrorʡ  Message ParseError ParseErroraddAbsoluteTimeaddAbsoluteTime :: DiffTime ->  AbsoluteTime ->  AbsoluteTimen E DiffTime AbsoluteTime AbsoluteTimeaddAbsoluteTime a b = a + b  AbsoluteTimedata  AbsoluteTimeƢ 2AbsoluteTime is TAI, time as measured by a clock. <||> (<||>) :: 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 bV إ 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 aY  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 -> Doc3 ! DocDocDocBeside, separated by space <$?> (<$?>) :: Stream s Identity tok => (a -> b) -> (a, Parsec s st a) -> StreamPermParser s st bF  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 + 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. $+$ ($+$) :: Doc -> Doc -> Doc  DocDocDocAbove, without dovetailing. $$ ($$) :: Doc -> Doc -> Doc  DocDocDoc5Above; if there is no overlap it "dovetails" the two ~?= (~?=) :: (Eq a, Show a) => a -> a -> TestP - EqaShowaaaTest~? (~?) :: AssertionPredicable t => t -> String -> Test  AssertionPredicablettStringTest~=? (~=?) :: (Eq a, Show a) => a -> a -> Testm J 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 r  ZonedTimeTimeZonezonedTimeToUTCzonedTimeToUTC ::  ZonedTime -> UTCTime   ZonedTimeUTCTimezonedTimeToLocalTimezonedTimeToLocalTime ::  ZonedTime ->  LocalTime i  ZonedTime LocalTime ZonedTime ZonedTime ::  LocalTime -> TimeZone ->  ZonedTime   LocalTimeTimeZone ZonedTime ZonedTimedata  ZonedTimeD 'A local time together with a TimeZone. zipWith 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. zipWith 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. zipzip ::  ByteString ->  ByteString -> [(Word8, Word8)]Z $  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. zipzip ::  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  ZigZagMode ZigZagMode :: Mode` Y ModeWith zig-zag cuts yellowyellow :: String  Stringvxargs xargs :: Int -> ([String] -> IO ()) -> [String] -> [String] -> IO () < Int[]StringIO()[]String[]StringIO()bLike the unix xargs program. Useful for when we've got very long command lines that might overflow an OS limit on command line length and so you need to invoke a command multiple times to get all the args in. Use it with either of the rawSystem variants above. For example:
xargs (32*1024) (rawSystemExit verbosity) prog fixedArgs bigArgs
v writeUTF8File writeUTF8File :: FilePath -> String -> IO ()o P FilePathStringIO()tWrites a Unicode String as a UTF8 encoded text file. Uses writeFileAtomic, so provides the same guarantees. F writeSTRef writeSTRef ::  STRef s a -> a -> ST s ()g E STRefsaaSTs()1writeSampleVarwriteSampleVar ::  SampleVar a -> a -> IO ()   SampleVaraaIO()XWrite a value into the SampleVar, overwriting any previous value that was there. writePersistBuildConfigwritePersistBuildConfig :: FilePath -> LocalBuildInfo -> IO ()  FilePathLocalBuildInfoIO()\After running configure, output the LocalBuildInfo to the localBuildInfoFile. .writeList2ChanwriteList2Chan :: Chan a -> [a] -> IO ()  Chana[]aIO()0Write an entire list of items to a Chan. writeInstalledConfigwriteInstalledConfig :: FilePath -> PackageDescription -> LocalBuildInfo -> Bool -> Maybe FilePath -> IO ()&  FilePathPackageDescriptionLocalBuildInfoBoolMaybeFilePathIO()RRegister doesn't drop the register info file, it must be done in a separate step. vwriteFileAtomicwriteFileAtomic :: FilePath -> String -> IO ()  FilePathStringIO() Writes a file atomically. The file is either written sucessfully or an IO exception is raised and the original file is left unchanged.
  • Warning: On Windows this operation is very nearly but not quite atomic. See below.
On Posix it works by writing a temporary file and atomically renaming over the top any pre-existing target file with the temporary one. On Windows it is not possible to rename over an existing file so the target file has to be deleted before the temporary file is renamed to the target. Therefore there is a race condition between the existing file being removed and the temporary file being renamed. Another thread could write to the target or change the permission on the target directory between the deleting and renaming steps. An exception would be raised but the target file would either no longer exist or have the content as written by the other thread. On windows it is not possible to delete a file that is open by a process. This case will give an IO exception but the atomic property is not affected.  writeFile writeFile :: FilePath ->  ByteString -> IO ()  FilePath ByteStringIO()%Write a ByteString to a file.  writeFile writeFile :: FilePath ->  ByteString -> IO ()\ 9 FilePath ByteStringIO()%Write a ByteString to a file. . writeChan writeChan :: Chan a -> a -> IO ()  ChanaaIO() Write a value to a Chan. a writeArray  writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m ()  MArrayaemIxiaieiem()$Write an element in a mutable array ] writeArray  writeArray :: (MArray a e m, Ix i) => a i e -> i -> e -> m () t MArrayaemIxiaieiem()$Write an element in a mutable array vwrapTextwrapText :: String -> String1  StringStringGWraps text to the default line width. Existing newlines are preserved. vwrapLinewrapLine :: Int -> [String] ->  [[String]]  Int[]String[][]StringIWraps a list of words to a list of lines of words of a particular width. wordswords ::  ByteString ->  [ByteString]   ByteString[] ByteStringrwords breaks a ByteString up into a list of words, which were delimited by Chars representing white space. withVanillaLibwithVanillaLib :: LocalBuildInfo -> Bool  LocalBuildInfoBoolWhether to build normal libs. vwithUTF8FileContentswithUTF8FileContents :: FilePath -> (String -> IO a) -> IO aq H FilePathStringIOaIOa_Reads a UTF8 encoded text file as a Unicode String Same behaviour as withFileContents. v withTempFile  withTempFile :: FilePath -> String -> (FilePath -> Handle -> IO a) -> IO a _ FilePathStringFilePathHandleIOaIOa5Use a temporary filename that doesn't already exist. vwithTempDirectory withTempDirectory ::  Verbosity -> FilePath -> IO a -> IO a} S  VerbosityFilePathIOaIOaSUse a temporary directory. Use this exact given dir which must not already exist. cwithStorableArraywithStorableArray :: StorableArray i e -> (Ptr e -> IO a) -> IO a S  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.  withSharedLib withSharedLib :: LocalBuildInfo -> Bool  LocalBuildInfoBool*Whether to build shared versions of libs.  withReaderT withReaderT ::  (r' -> r) ->  ReaderT r m a -> ReaderT r' m a  r'rReaderTrmaReaderTr'ma withReader withReader ::  (r' -> r) ->  Reader r a ->  Reader r' a c r'rReaderraReaderr'a(A more general version of local.  withPrograms withPrograms :: LocalBuildInfo -> ProgramConfigurationL # LocalBuildInfoProgramConfiguration#Location and args for all programs  withProfLib withProfLib :: LocalBuildInfo -> Bool  LocalBuildInfoBool-Whether to build profiling versions of libs.  withProfExe withProfExe :: LocalBuildInfo -> Bool g LocalBuildInfoBool,Whether to build executables for profiling. withProcessHandle_withProcessHandle_ ::  ProcessHandle -> '(ProcessHandle__ -> IO ProcessHandle__) -> IO () F  ProcessHandleProcessHandle__IOProcessHandle__IO()withProcessHandlewithProcessHandle ::  ProcessHandle -> ,(ProcessHandle__ -> IO (ProcessHandle__, a)) -> IO aw (  ProcessHandleProcessHandle__IO(,)ProcessHandle__aIOaOwithPoolwithPool :: (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.  withPackageDB withPackageDB :: LocalBuildInfo ->  PackageDB  LocalBuildInfo PackageDB*What package database to use, global/user withOptimizationwithOptimization :: LocalBuildInfo -> OptimisationLevel  LocalBuildInfoOptimisationLevel3Whether to build with optimization (if available). -withMVarwithMVar :: MVar a ->  (a -> IO b) -> IO bj E MVaraaIObIObPwithMany 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  withGHCiLib withGHCiLib :: LocalBuildInfo -> Bool  LocalBuildInfoBool2Whether to build libs suitable for use with GHCi. withFilePathExceptionwithFilePathException :: FilePath -> IO a -> IO a  FilePathIOaIOavwithFileContentswithFileContents :: FilePath -> (String -> IO a) -> IO ae < FilePathStringIOaIOaGets the contents of a file, but guarantee that it gets closed. The file is read lazily but if it is not fully consumed by the action then the remaining input is truncated and the file is closed. 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 f 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 a bmramrContTrmaContTrmbwithContwithCont :: ((b -> r) -> a -> r) -> Cont r a -> Cont r bB  brarContraContrbwithCEnvironmentwithCEnvironment :: [(String, String)] -> (Ptr () -> IO a) -> IO a  [](,)StringStringPtr()IOaIOawithCAStringLenwithCAStringLen :: 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 av N 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 f 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 w Storablea[]aPtraIObIObtTemporarily store a list of storable values in memory (like Foreign.Marshal.Utils.with, but for multiple elements). Pwithwith :: 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. wildPwildP :: PatQ y PatQWildPWildP :: Pat  Patwidthwidth :: String -> HtmlAttr  StringHtmlAttrwidthwidth :: String -> HtmlAttrt _ StringHtmlAttrwidthwidth :: String -> HtmlAttr  StringHtmlAttrwidget widget :: String -> String ->  [HtmlAttr] -> Htmlj A StringString[]HtmlAttrHtmlwidget widget :: String -> String ->  [HtmlAttr] -> Html  StringString[]HtmlAttrHtmlwidget widget :: String -> String ->  [HtmlAttr] -> Html q StringString[]HtmlAttrHtml whiteSpace whiteSpace :: GenTokenParser s u m -> ParsecT s u m ()9  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 :: String  String whereIndent whereIndent :: PPHsMode -> Indent  PPHsModeIndent;indentation of the declarations in a where clause YWeakdata Weak vm ~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. vwarnwarn ::  Verbosity -> String -> IO ()d D  VerbosityStringIO()|Non fatal conditions that may be indicative of an error or problem. We display these at the normal verbosity level. 0 waitQSemN waitQSemN :: QSemN -> Int -> IO ()U < QSemNIntIO()4Wait for the specified quantity to become available /waitQSemwaitQSem :: QSem -> IO ()  QSemIO()$Wait for a unit to become available w2cw2c :: Word8 -> CharZ J Word8CharLConversion between Word8 and Char. Should compile to a no-op. vspacevspace :: Int -> HtmlAttr  IntHtmlAttr VRightCurly VRightCurly :: TokenH @ TokenNvoidvoid :: IO a -> IO ()  IOaIO()0Discard the return value of an IO action vlinkvlink :: String -> HtmlAttr.  StringHtmlAttruviewAsFieldDescrviewAsFieldDescr ::  OptionField a ->  FieldDescr a   OptionFielda FieldDescra~to view as a FieldDescr, we sort the list of interfaces (Req > Bool > Choice > Opt) and consider only the first one. versionversion :: String -> HtmlAttr  StringHtmlAttrvcatvcat :: [Doc] -> Doc  []DocDocList version of $$. varTvarT :: Name -> TypeQ_ O NameTypeQVarTVarT :: Name -> Type  NameTypeVarSymVarSym :: String -> Token   StringTokenVarStrictTypeQtype VarStrictTypeQ = Q VarStrictType]  varStrictType varStrictType :: Name ->  StrictTypeQ -> VarStrictTypeQ  Name StrictTypeQVarStrictTypeQvarPvarP :: Name -> PatQG 8 NamePatQVarPVarP :: Name -> Pat  NamePatVarIdVarId :: String -> Token  StringTokenvariablevariable :: Html -> HtmlE 6 HtmlHtmlvariablevariable :: Html -> Html  HtmlHtmlvariablevariable :: Html -> Html  HtmlHtmlVarI VarI :: Name -> Type ->  Maybe Dec -> Fixity -> Info m NameTypeMaybeDecFixityInfovarEvarE :: Name -> ExpQ  NameExpQVarEVarE :: Name -> Exp6 ( NameExpvaluevalue :: String -> HtmlAttr  StringHtmlAttrvaluevalue :: String -> HtmlAttr  StringHtmlAttrvaluevalue :: String -> HtmlAttrP ; StringHtmlAttrvalignvalign :: String -> HtmlAttr  StringHtmlAttrvalignvalign :: String -> HtmlAttr  StringHtmlAttrvalignvalign :: String -> HtmlAttrp [ StringHtmlAttrvalD valD :: PatQ -> BodyQ -> [DecQ] -> DecQ  PatQBodyQ[]DecQDecQValD ValD :: Pat -> Body -> [Dec] -> Dect V PatBody[]DecDecutcToZonedTimeutcToZonedTime :: TimeZone -> UTCTime ->  ZonedTime  TimeZoneUTCTime ZonedTimeutcToLocalZonedTimeutcToLocalZonedTime :: UTCTime ->  IO ZonedTime p UTCTimeIO ZonedTimeutcToLocalTimeOfDayutcToLocalTimeOfDay :: TimeZone ->  TimeOfDay -> (Integer, TimeOfDay)H  TimeZone TimeOfDay(,)Integer TimeOfDayPConvert a ToD in UTC to a ToD in some timezone, together with a day adjustment. utcToLocalTimeutcToLocalTime :: TimeZone -> UTCTime ->  LocalTime*   TimeZoneUTCTime LocalTime4show a UTC time in a given time zone as a LocalTime UTCTimeUTCTime :: Day -> DiffTime -> UTCTime  DayDiffTimeUTCTimeUTCTimedata UTCTime 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.  UTCTimeDiffTimeHthe time from midnight, 0 <= t < 86401s (because of leap-seconds) utctDayutctDay :: UTCTime -> Day  UTCTimeDaythe day utcutc :: TimeZone   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 -> an V 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
suserSpecifyPath userSpecifyPath :: String -> FilePath -> ProgramConfiguration -> ProgramConfiguration" s" StringFilePathProgramConfigurationProgramConfigurationUser-specify this path. Basically override any path information for this program in the configuration. If it's not a known program ignore it. suserSpecifyArgs userSpecifyArgs :: String ->  [ProgArg] -> ProgramConfiguration -> ProgramConfiguration&$ # String[]ProgArgProgramConfigurationProgramConfigurationUser-specify the arguments for this program. Basically override any args information for this program in the configuration. If it's not a known program, ignore it.. suserSpecifiedArgsuserSpecifiedArgs :: Program -> ProgramConfiguration ->  [ProgArg]% N% ProgramProgramConfiguration[]ProgArgs UserSpecified UserSpecified :: FilePath -> ProgramLocation% % FilePathProgramLocationHThe user gave the path to this program, eg. --ghc-path=/usr/bin/ghc-6.6 } UserPackageDB UserPackageDB ::  PackageDB& &  PackageDBsuserMaybeSpecifyPath userMaybeSpecifyPath :: String -> Maybe FilePath -> ProgramConfiguration -> ProgramConfiguration' H' StringMaybeFilePathProgramConfigurationProgramConfiguration~ UserHooks UserHooks :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO () -> IO (Maybe PackageDescription) -> [PPSuffixHandler] ->  [Program] -> Args ->  ConfigFlags ->  IO HookedBuildInfo ->  F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags ->  IO LocalBuildInfo -> Args ->  ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO () -> Args ->  BuildFlags -> IO HookedBuildInfo -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  BuildFlags -> IO () -> Args ->  BuildFlags -> PackageDescription -> LocalBuildInfo -> IO () ->  Args -> ! MakefileFlags -> "IO HookedBuildInfo -> #PackageDescription -> $LocalBuildInfo -> % UserHooks -> & MakefileFlags -> 'IO () -> (Args -> ) MakefileFlags -> *PackageDescription -> +LocalBuildInfo -> ,IO () -> -Args -> . CleanFlags -> /IO HookedBuildInfo -> 0PackageDescription5 5 }, ArgsBoolPackageDescriptionLocalBuildInfoIO()IOMaybePackageDescription[]PPSuffixHandler[]ProgramArgs ConfigFlagsIOHookedBuildInfo(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfoArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()Args BuildFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()Args BuildFlagsPackageDescriptionLocalBuildInfoIO()Args MakefileFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()Args MakefileFlagsPackageDescriptionLocalBuildInfoIO()Args CleanFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()Args CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args CopyFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO()Args CopyFlagsPackageDescriptionLocalBuildInfoIO()Args InstallFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()Args InstallFlagsPackageDescriptionLocalBuildInfoIO()Args SDistFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()Args SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoV2 2PackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args HscolourFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()Args HscolourFlagsPackageDescriptionLocalBuildInfoIO()Args HaddockFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()Args HaddockFlagsPackageDescriptionLocalBuildInfoIO() UserHooks -> 1Maybe LocalBuildInfo -> 2 UserHooks -> 3 CleanFlags -> 4IO () -> 5Args -> 6 CleanFlags -> 7PackageDescription -> 8Maybe LocalBuildInfo -> 9IO () -> :Args -> ; CopyFlags -> <IO HookedBuildInfo -> =PackageDescription -> >LocalBuildInfo -> ? UserHooks -> @ CopyFlags -> AIO () -> BArgs -> C CopyFlags -> DPackageDescription -> ELocalBuildInfo -> FIO () -> GArgs -> H InstallFlags -> IIO HookedBuildInfo -> JPackageDescription -> KLocalBuildInfo -> L UserHooks -> M InstallFlags -> NIO () -> OArgs -> P InstallFlags -> QPackageDescription -> RLocalBuildInfo -> SIO () -> TArgs -> U SDistFlags -> VIO HookedBuildInfo -> WPackageDescription -> XMaybe LocalBuildInfo -> Y UserHooks -> Z SDistFlags -> [IO () -> \Args -> ] SDistFlags -> ^PackageDescription -> _Maybe LocalBuildInfo -> `IO () -> aArgs -> b RegisterFlags9  -> cIO HookedBuildInfo -> dPackageDescription -> eLocalBuildInfo -> f UserHooks -> g RegisterFlags -> hIO () -> iArgs -> j RegisterFlags -> kPackageDescription -> lLocalBuildInfo -> mIO () -> nArgs -> o RegisterFlags -> pIO HookedBuildInfo -> qPackageDescription -> rLocalBuildInfo -> s UserHooks -> t RegisterFlags -> uIO () -> vArgs -> w RegisterFlags -> xPackageDescription -> yLocalBuildInfo -> zIO () -> {Args -> | HscolourFlags -> }IO HookedBuildInfo -> ~PackageDescription -> LocalBuildInfo ->  UserHooks ->  HscolourFlags -> IO () -> Args ->  HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO () -> Args ->  HaddockFlags -> IO HookedBuildInfo -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HaddockFlags -> IO () -> Args ->  HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()/>  ->  UserHooks~ UserHooksdata  UserHookss> @Hooks allow authors to add specific functionality before and after a command is run, and also to specify additional preprocessors.
  • WARNING: The hooks interface is under rather constant flux as we try to understand users needs. Setup files that depend on this interface may break in future releases.
 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)
usemapusemap :: String -> HtmlAttrA A StringHtmlAttrusemapusemap :: String -> HtmlAttrUB @B StringHtmlAttrusemapusemap :: String -> HtmlAttrB B StringHtmlAttruseAsCStringLenuseAsCStringLen ::  ByteString -> (CStringLen -> IO a) -> IO aaC 2C  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.  useAsCString useAsCString ::  ByteString -> (CString -> IO a) -> IO aD D  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). R usageInfo usageInfo :: String ->  [OptDescr a] -> String F E String[]OptDescraStringReturn a string describing the usage of a command, derived from the header (first argument) and the options described by the second argument. URLtype URL = StringF URLtype URL = StringG URLtype URL = String6G upperupper :: Stream s m Char => ParsecT s u m CharG G 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 ()H H MonadmuuParsecTsum()6An alias for modifyState for backwards compatibility. s updateProgram updateProgram :: ConfiguredProgram -> ProgramConfiguration -> ProgramConfigurationI wI ConfiguredProgramProgramConfigurationProgramConfiguration-Update a configured program in the database. updatePosStringupdatePosString ::  SourcePos -> String ->  SourcePoszJ YJ  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 ->  SourcePosK K  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)M M MonadmStatesuStatesuParsecTsumStatesuNupdateParserState f applies function f to the parser state. unzipunzip :: [(Word8, Word8)] -> (ByteString, ByteString)N N [](,)Word8Word8(,) ByteString ByteStringO(n) unzip transforms a list of pairs of bytes into a pair of ByteStrings. Note that this performs two pack operations. unzipunzip :: [(Char, Char)] -> (ByteString, ByteString)P O [](,)CharChar(,) ByteString ByteStringunzip transforms a list of pairs of Chars into a pair of ByteStrings. Note that this performs two pack operations. unwordsunwords ::  [ByteString] ->  ByteString Q P [] ByteString ByteStringSThe unwords function is analogous to the unlines function, on words. }unsupportedExtensionsunsupportedExtensions :: Compiler ->  [Extension] ->  [Extension]R Q Compiler[] Extension[] ExtensionCFor the given compiler, return the extensions it does not support. ] unsafeWrite  unsafeWrite :: (MArray a e m, Ix i) => a i e -> Int -> e -> m ()S R MArrayaemIxiaieIntem()unsafeUseAsCStringLenunsafeUseAsCStringLen ::  ByteString -> (CStringLen -> IO a) -> IO aS S  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.
unsafeUseAsCStringunsafeUseAsCString ::  ByteString -> (CString -> IO a) -> IO aW W  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.
]unsafeThawSTUArrayunsafeThawSTUArray :: Ix i =>  UArray i e -> ST s (STUArray s i e)#] \ IxiUArrayieSTsSTUArraysiea unsafeThaw unsafeThaw :: $(Ix i, IArray a e, MArray b e m) => a i e ->  m (b i e)] ] IxiIArrayaeMArraybemaiembie] unsafeThaw unsafeThaw :: $(Ix i, IArray a e, MArray b e m) => a i e ->  m (b i e)^ [^ IxiIArrayaeMArraybemaiembie unsafeTake unsafeTake :: Int ->  ByteString ->  ByteString-_  _ 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.  unsafeTail unsafeTail ::  ByteString ->  ByteStringN` 3`  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. 6 unsafeSTToIO unsafeSTToIO :: ST s a -> IO aa ua STsaIOa]unsafeReplaceUArrayunsafeReplaceUArray :: ((MArray (STUArray s) e (ST s), Ix i) =>  UArray i e ->  [(Int, e)] -> ST s (UArray i e)b =b MArraySTUArrayseSTsIxiUArrayie[](,)InteSTsUArrayie]unsafeReplaceSTunsafeReplaceST :: (IArray a e, Ix i) => a i e ->  [(Int, e)] -> ST s (STArray s i e)c @c IArrayaeIxiaie[](,)InteSTsSTArraysie] unsafeReplace unsafeReplace :: (IArray a e, Ix i) => a i e ->  [(Int, e)] -> a i ead d IArrayaeIxiaie[](,)Inteaie] unsafeRead unsafeRead :: (MArray a e m, Ix i) => a i e -> Int -> m e e d MArrayaemIxiaieIntme3unsafePerformIOunsafePerformIO :: IO a -> aoe `e 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! unsafePackMallocCStringunsafePackMallocCString :: CString ->  IO ByteStringm m 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. unsafePackCStringLenunsafePackCStringLen ::  CStringLen ->  IO ByteStringp ^p  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. unsafePackCStringFinalizer unsafePackCStringFinalizer ::  Ptr Word8 -> Int -> IO () ->  IO ByteString*s r 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. unsafePackCStringunsafePackCString :: CString ->  IO ByteStringGu )u 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. unsafePackAddressLenunsafePackAddressLen :: Int -> Addr# ->  IO ByteStringw w 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. unsafePackAddressunsafePackAddress :: Addr# ->  IO ByteStringz z 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). ]unsafeNewArraySTUArray_unsafeNewArraySTUArray_ :: Ix i => (i, i) -> (Int# -> Int#) -> ST s (STUArray s i e)~ 9 Ixi(,)iiInt#Int#STsSTUArraysie]unsafeNewArray_unsafeNewArray_ :: (MArray a e m, Ix i) => (i, i) ->  m (a i e)0  MArrayaemIxi(,)iimaie6 unsafeIOToST unsafeIOToST :: IO a -> ST s a  IOaSTsa6unsafeInterleaveSTunsafeInterleaveST :: ST s a -> ST s a  STsaSTsa3unsafeInterleaveIOunsafeInterleaveIO :: IO a -> IO a t IOaIOa unsafeIndex unsafeIndex ::  ByteString -> Int -> Word8   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.  unsafeHead unsafeHead ::  ByteString -> Word8e O  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. ]unsafeFreezeSTUArrayunsafeFreezeSTUArray :: STUArray s i e -> ST s (UArray i e)ل  STUArraysieSTsUArrayiea unsafeFreeze unsafeFreeze :: $(Ix i, MArray a e m, IArray b e) => a i e ->  m (b i e) T IxiMArrayaemIArraybeaiembie] unsafeFreeze unsafeFreeze :: $(Ix i, MArray a e m, IArray b e) => a i e ->  m (b i e)c  IxiMArrayaemIArraybeaiembiecunsafeForeignPtrToStorableArrayunsafeForeignPtrToStorableArray :: Ix i =>  ForeignPtr e -> (i, i) -> IO (StorableArray i e)U  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. unsafeFinalizeunsafeFinalize ::  ByteString -> IO ()   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.  unsafeDrop unsafeDrop :: Int ->  ByteString ->  ByteString  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.  unsafeCreate unsafeCreate :: Int -> (Ptr Word8 -> IO ()) ->  ByteString ً 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. ]unsafeAtunsafeAt :: (IArray a e, Ix i) => a i e -> Int -> e Z IArrayaeIxiaieInte]unsafeArrayUArray unsafeArrayUArray :: ((MArray (STUArray s) e (ST s), Ix i) => (i, i) ->  [(Int, e)] -> e -> ST s (UArray i e) > MArraySTUArrayseSTsIxi(,)ii[](,)InteeSTsUArrayie] unsafeArray unsafeArray :: (IArray a e, Ix i) => (i, i) ->  [(Int, e)] -> a i et + IArrayaeIxi(,)ii[](,)Inteaie]unsafeAccumUArray unsafeAccumUArray :: ((MArray (STUArray s) e (ST s), Ix i) => (e -> e' -> e) ->  UArray i e ->  [(Int, e')] -> ST s (UArray i e) ; MArraySTUArrayseSTsIxiee'eUArrayie[](,)Inte'STsUArrayie] unsafeAccumST  unsafeAccumST :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e ->  [(Int, e')] -> ST s (STArray s i e)ȑ b IArrayaeIxiee'eaie[](,)Inte'STsSTArraysie]unsafeAccumArrayUArray unsafeAccumArrayUArray :: ((MArray (STUArray s) e (ST s), Ix i) => (e -> e' -> e) -> e -> (i, i) ->  [(Int, e')] -> ST s (UArray i e)  MArraySTUArrayseSTsIxiee'ee(,)ii[](,)Inte'STsUArrayie]unsafeAccumArrayST unsafeAccumArrayST :: Ix i => (e -> e' -> e) -> e -> (i, i) ->  [(Int, e')] -> ST s (STArray s i e). ӓ Ixiee'ee(,)ii[](,)Inte'STsSTArraysie]unsafeAccumArray unsafeAccumArray :: (IArray a e, Ix i) => (e -> e' -> e) -> e -> (i, i) ->  [(Int, e')] -> a i e7 ޔ IArrayaeIxiee'ee(,)ii[](,)Inte'aie] unsafeAccum  unsafeAccum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e ->  [(Int, e')] -> a i e# ϕ IArrayaeIxiee'eaie[](,)Inte'aieUnsafeUnsafe :: Safetyc Z SafetymunregisterCommandunregisterCommand :: CommandUI RegisterFlagsޖ   CommandUI RegisterFlags unregister  unregister :: PackageDescription -> LocalBuildInfo ->  RegisterFlags -> IO () m PackageDescriptionLocalBuildInfo RegisterFlagsIO()~ unregHook unregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO () d  UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration. UnQualUnQual :: HsName -> HsQName[ G HsNameHsQNameunqualified name unpackunpack ::  ByteString -> [Word8]֙   ByteString[]Word89O(n) Converts a ByteString to a '[Word8]'. unpackunpack ::  ByteString -> [Char]w \  ByteString[]Char=O(n) Converts a ByteString to a String.  unordList unordList ::  HTML a => [a] -> Html%  HTMLa[]aHtml unordList unordList ::  HTML a => [a] -> Html y HTMLa[]aHtml unordList unordList ::  HTML a => [a] -> Html  HTMLa[]aHtmlunlinesunlines ::  [ByteString] ->  ByteString} \ [] ByteString ByteStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each. jUnliftedFFITypesUnliftedFFITypes ::  ExtensionN B  ExtensionjUnknownExtensionUnknownExtension :: String ->  Extensionĝ  String Extension unknownError unknownError ::  State s u ->  ParseError>  Statesu ParseError UniversalTimenewtype  UniversalTime 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_con_name unit_con_name :: HsQName  HsQNameunit_conunit_con :: HsExp۟ ӟ HsExpj UnicodeSyntax UnicodeSyntax ::  Extension/ #  ExtensionunGTunGT ::  GenericT' -> Data a w  GenericT'DataaunGQunGQ ::  GenericQ' r ->  GenericQ r ޠ  GenericQ'rGenericQrunGMunGM ::  GenericM' m -> Data ah J  GenericM'mDataa. 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  Generic'cGenericcunfoldrN unfoldrN :: Int -> (a -> Maybe (Char, a)) -> a -> (ByteString, Maybe a)p ( 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)
unfoldrunfoldr :: (a -> Maybe (Word8, a)) -> a ->  ByteString i 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. unfoldrunfoldr :: (a -> Maybe (Char, a)) -> a ->  ByteString  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 a| G 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 -> Messagew c StringMessage Underscore Underscore :: Token  Token underline underline :: Html -> Html  HtmlHtmljUndecidableInstancesUndecidableInstances ::  Extensiony m  Extensionunconsuncons :: Stream s m t => s -> m (Maybe (t, s)) ׭ StreamsmtsmMaybe(,)tsunconsuncons ::  ByteString -> Maybe (Word8, ByteString) k  ByteStringMaybe(,)Word8 ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty. unconsuncons ::  ByteString -> Maybe (Char, ByteString) U  ByteStringMaybe(,)Char ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty. j UnboxedTuples UnboxedTuples ::  Extension3 '  Extensionz Unambiguous Unambiguous :: a -> SearchResult a  a SearchResultaulistulist :: Html -> Html  HtmlHtmlulistulist :: Html -> HtmlF 7 HtmlHtmlulistulist :: Html -> Html  HtmlHtmldUArraydata 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). ]UArray UArray :: i -> i -> Int ->  ByteArray# ->  UArray i e  iiInt ByteArray#UArrayie]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 -> Info } NameTypeInfotySynD tySynD :: Name -> [Name] -> TypeQ -> DecQ  Name[]NameTypeQDecQTySynD TySynD :: Name -> [Name] -> Type -> Dec  Name[]NameTypeDecjTypeSynonymInstancesTypeSynonymInstances ::  Extension   ExtensionTypeQtype TypeQ = Q Type= j TypeOperators TypeOperators ::  Extension   Extensionj TypeFamilies TypeFamilies ::  Extension ׻  ExtensionTypedata Type  tyconUQname tyconUQname :: String -> Stringu b StringStringAGets the unqualified type constructor: drop *.*.*... before name  tyconModule tyconModule :: String -> String  StringStringAGets the module of a type constructor: take *.*.*... before name TyConITyConI :: Dec -> Info  DecInfotupPtupP :: [PatQ] -> PatQ  []PatQPatQTupPTupP :: [Pat] -> Pat[ H []PatPat tupleTypeName tupleTypeName :: Int -> Name  IntNametupleTtupleT :: Int -> TypeQ  IntTypeQTupleTTupleT :: Int -> Typea S 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 -> HsQName  IntHsQName tuple_con tuple_con :: Int -> HsExpO @ IntHsExptupEtupE :: [ExpQ] -> ExpQ  []ExpQExpQTupETupE :: [Exp] -> Exp  []ExpExptttt :: Html -> HtmlG 8 HtmlHtmltttt :: Html -> Html  HtmlHtmltttt :: Html -> Html  HtmlHtml- tryTakeMVar tryTakeMVar :: MVar a ->  IO (Maybe a)X 8 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 Bool  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. tryGetConfigStateFiletryGetConfigStateFile ::  Read a => FilePath -> IO (Either String a)n ; ReadaFilePathIOEitherStringatrytry :: Stream s m t => ParsecT s u m a -> ParsecT s u m a  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)+  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. triedtried :: Counts -> Int q CountsInttreeHtmltreeHtml :: [String] -> HtmlTree -> Html  []StringHtmlTreeHtml treeColors treeColors :: [String]S D []String transpose transpose ::  [ByteString] ->  [ByteString]  [] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument.  transpose transpose ::  [ByteString] ->  [ByteString]  [] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument.  translate translate :: String -> String{ h StringStringtrtr :: Html -> Html  HtmlHtmltrtr :: Html -> Html  HtmlHtmltrtr :: Html -> Html_ P HtmlHtmlvtoUTF8toUTF8 :: String -> String  StringStringctouchStorableArraytouchStorableArray :: StorableArray i e -> IO ()J &  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. toPathTemplatetoPathTemplate :: FilePath ->  PathTemplateZ ? FilePath PathTemplatePConvert a FilePath to a PathTemplate including any template vars. toModifiedJulianDaytoModifiedJulianDay :: Day -> Integer  DayIntegertokens tokens :: (Stream s m t, Eq t) => ([t] -> String) -> (SourcePos -> [t] -> SourcePos) -> [t] -> ParsecT s u m [t]D  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 0 StreamsmttString SourcePosts SourcePosMaybe SourcePostsuutMaybeaParsecTsuma tokenPrim tokenPrim :: Stream s m t => t -> String ->  SourcePos -> t -> s ->  SourcePos -> t -> Maybe a -> ParsecT s u m a  Streamsmt tString 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
 TokenParserX 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 Identity tokentoken :: Stream s Identity t => t -> String -> t ->  SourcePos -> t -> Maybe a ->  Parsec s u a t 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] -> Htmlj M HTMLa[]aHtmltoHtmlFromListtoHtmlFromList ::  HTML a => [a] -> Html  HTMLa[]aHtmltoHtmlFromListtoHtmlFromList ::  HTML a => [a] -> Html` C HTMLa[]aHtmltoHtmltoHtml ::  HTML a => a -> Html  HTMLaaHtmltoHtmltoHtml ::  HTML a => a -> Html&  HTMLaaHtmltoHtmltoHtml ::  HTML a => a -> Html r HTMLaaHtml 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).  toForeignPtr toForeignPtr ::  ByteString -> (ForeignPtr Word8, Int, Int)&   ByteString(,,) ForeignPtrWord8IntInt7O(1) Deconstruct a ForeignPtr from a ByteString mtoFlagtoFlag :: a -> Flag a  aFlagatodSectodSec ::  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 -> Ints `  TimeOfDayInt range 0 - 23 toConstrtoConstr ::  Data a => a -> Constr  DataaaConstrtoChunkstoChunks ::  ByteString ->  [ByteString]c B  ByteString[] ByteStringUO(n) Convert a lazy ByteString into a list of strict ByteString PtoBooltoBool ::  Num a => a -> Bool  NumaaBool?Convert a Boolean in numeric representation to a Haskell value titletitle :: String -> HtmlAttr  StringHtmlAttrtitletitle :: String -> HtmlAttr  StringHtmlAttrtitletitle :: String -> HtmlAttrr ] 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 -> Stringb M TimeZoneStringAThe name of the zone, typically a three- or four-letter acronym. timeZoneMinutestimeZoneMinutes :: TimeZone -> Int  TimeZoneIntdThe number of minutes offset from UTC. Positive means local time will be later in the day than UTC. TimeZone TimeZone :: Int -> Bool -> String -> TimeZone  IntBoolStringTimeZoneTimeZonedata TimeZone5 lA TimeZone is a whole number of minutes offset from UTC, together with a name and a "just for summer" flag. timeToTimeOfDaytimeToTimeOfDay :: DiffTime ->  TimeOfDay  DiffTime TimeOfDaycGet a TimeOfDay given a time since midnight. Time more than 24h will be converted to leap-seconds. timeOfDayToTimetimeOfDayToTime ::  TimeOfDay -> DiffTime   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 p PatQPatQTildePTildeP :: Pat -> Pat  PatPatTildeTilde :: Token  TokenN throwIfNull throwIfNull :: String ->  IO (Ptr a) ->  IO (Ptr a) x StringIOPtraIOPtraGuards against null pointers N throwIfNeg_ throwIfNeg_ :: (Ord a, Num a) =>  (a -> String) -> IO a -> IO ()r ; OrdaNumaaStringIOaIO()2Like throwIfNeg, but discarding the result N throwIfNeg throwIfNeg :: (Ord a, Num a) =>  (a -> String) -> IO a -> IO aR  OrdaNumaaStringIOaIOa&Guards against negative result values NthrowIf_ throwIf_ ::  (a -> Bool) ->  (a -> String) -> IO a -> IO ()  aBoolaStringIOaIO()/Like throwIf, but discarding the result NthrowIfthrowIf :: a -> Bool -> a -> String -> IO a -> IO a  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. MthrowErrnoPathIfNull throwErrnoPathIfNull :: String -> FilePath ->  IO (Ptr a) ->  IO (Ptr a) i StringFilePathIOPtraIOPtraTas throwErrnoIfNull, but exceptions include the given path when appropriate. MthrowErrnoPathIfMinus1_ throwErrnoPathIfMinus1_ ::  Num a => String -> FilePath -> IO a -> IO ()  NumaStringFilePathIOaIO()Was throwErrnoIfMinus1_, but exceptions include the given path when appropriate. MthrowErrnoPathIfMinus1 throwErrnoPathIfMinus1 ::  Num a => String -> FilePath -> IO a -> IO a  NumaStringFilePathIOaIOaVas throwErrnoIfMinus1, but exceptions include the given path when appropriate. MthrowErrnoPathIf_ throwErrnoPathIf_ ::  (a -> Bool) -> String -> FilePath -> IO a -> IO ()  aBoolStringFilePathIOaIO()Qas throwErrnoIf_, but exceptions include the given path when appropriate. MthrowErrnoPathIf throwErrnoPathIf ::  (a -> Bool) -> String -> FilePath -> IO a -> IO a  aBoolStringFilePathIOaIOaPas throwErrnoIf, but exceptions include the given path when appropriate. MthrowErrnoPaththrowErrnoPath :: String -> FilePath -> IO a  StringFilePathIOaNas throwErrno, but exceptions include the given path when appropriate. MthrowErrnoIfRetryMayBlock_ throwErrnoIfRetryMayBlock_ ::  (a -> Bool) -> String -> IO a -> IO b -> IO ()  aBoolStringIOaIObIO()>as throwErrnoIfRetryMayBlock, but discards the result. MthrowErrnoIfRetryMayBlockthrowErrnoIfRetryMayBlock :: 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. MthrowErrnoIfRetry_ throwErrnoIfRetry_ ::  (a -> Bool) -> String -> IO a -> IO ()b 9 aBoolStringIOaIO()6as throwErrnoIfRetry, but discards the result. MthrowErrnoIfRetry throwErrnoIfRetry ::  (a -> Bool) -> String -> IO a -> IO aD  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. MthrowErrnoIfNullRetryMayBlock throwErrnoIfNullRetryMayBlock :: String ->  IO (Ptr a) -> IO b ->  IO (Ptr a)  StringIOPtraIObIOPtraMas throwErrnoIfNullRetry, but checks for operations that would block. MthrowErrnoIfNullRetrythrowErrnoIfNullRetry :: String ->  IO (Ptr a) ->  IO (Ptr a)  StringIOPtraIOPtraThrow an IOError corresponding to the current value of getErrno if the IO action returns nullPtr, but retry in case of an interrupted operation. MthrowErrnoIfNullthrowErrnoIfNull :: String ->  IO (Ptr a) ->  IO (Ptr a)  StringIOPtraIOPtra~Throw an IOError corresponding to the current value of getErrno if the IO action returns nullPtr. M throwErrnoIfMinus1RetryMayBlock_  throwErrnoIfMinus1RetryMayBlock_ ::  Num a => String -> IO a -> IO b -> IO ()e 4 NumaStringIOaIObIO()Das throwErrnoIfMinus1RetryMayBlock, but discards the result. MthrowErrnoIfMinus1RetryMayBlock throwErrnoIfMinus1RetryMayBlock ::  Num a => String -> IO a -> IO b -> IO a{ K NumaStringIOaIObIOaOas throwErrnoIfMinus1Retry, but checks for operations that would block. MthrowErrnoIfMinus1Retry_throwErrnoIfMinus1Retry_ ::  Num a => String -> IO a -> IO ()w O NumaStringIOaIO()7as throwErrnoIfMinus1, but discards the result. MthrowErrnoIfMinus1RetrythrowErrnoIfMinus1Retry ::  Num a => String -> IO a -> IO aW 0 NumaStringIOaIOaThrow 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. MthrowErrnoIfMinus1_throwErrnoIfMinus1_ ::  Num a => String -> IO a -> IO ()  NumaStringIOaIO()7as throwErrnoIfMinus1, but discards the result. MthrowErrnoIfMinus1throwErrnoIfMinus1 ::  Num a => String -> IO a -> IO a a NumaStringIOaIOaThrow an IOError corresponding to the current value of getErrno if the IO action returns a result of -1. M throwErrnoIf_  throwErrnoIf_ ::  (a -> Bool) -> String -> IO a -> IO ()  aBoolStringIOaIO()^as throwErrnoIf, but discards the result of the IO action after error handling. M throwErrnoIf  throwErrnoIf :: a -> Bool -> String -> IO a -> IO a  aBoolStringIOaIOaThrow an IOError corresponding to the current value of getErrno if the result value of the IO action meets the given predicate. M throwErrno throwErrno :: String -> IO a  StringIOaOThrow an IOError corresponding to the current value of getErrno.  Threadsafe Threadsafe :: SafetyH ? Safetythetypethetype :: String -> HtmlAttr  StringHtmlAttrthetypethetype :: String -> HtmlAttr   StringHtmlAttrthetypethetype :: String -> HtmlAttrn Y StringHtmlAttrthetitlethetitle :: Html -> Html  HtmlHtmlthetitlethetitle :: Html -> Html  HtmlHtmlthetitlethetitle :: Html -> Htmlv g HtmlHtmlthestylethestyle :: String -> HtmlAttr  StringHtmlAttrthestylethestyle :: String -> HtmlAttr> ) StringHtmlAttrthestylethestyle :: String -> HtmlAttr  StringHtmlAttrthespanthespan :: Html -> Html  HtmlHtmlthespanthespan :: Html -> HtmlN ? HtmlHtmlthespanthespan :: Html -> Html  HtmlHtmlthemenuthemenu :: Html -> Html  HtmlHtmlthemapthemap :: Html -> HtmlN ? HtmlHtmlthemapthemap :: Html -> Html  HtmlHtmlthemapthemap :: Html -> Html  HtmlHtmlthelinkthelink :: Html -> HtmlL = HtmlHtmlthelinkthelink :: Html -> Html  HtmlHtmlthelinkthelink :: Html -> Html  HtmlHtmlthehtmlthehtml :: Html -> HtmlN ? HtmlHtmlthehtmlthehtml :: Html -> Html  HtmlHtmlthehtmlthehtml :: Html -> Html  HtmlHtmltheforthefor :: String -> HtmlAttrZ! E! StringHtmlAttrtheforthefor :: String -> HtmlAttr! ! StringHtmlAttrtheforthefor :: String -> HtmlAttr" " StringHtmlAttrthedivthediv :: Html -> Htmln" _" HtmlHtmlthedivthediv :: Html -> Html" " HtmlHtmlthedivthediv :: Html -> Html# # HtmlHtmlthecodethecode :: Html -> Htmll# ]# HtmlHtmlthecodethecode :: Html -> Html# # HtmlHtmlthecodethecode :: Html -> Html$  $ HtmlHtmltheclasstheclass :: String -> HtmlAttr|$ g$ StringHtmlAttrtheclasstheclass :: String -> HtmlAttr$ $ StringHtmlAttrtheclasstheclass :: String -> HtmlAttrD% /% StringHtmlAttrthebasethebase :: Html% {% Htmlthebasethebase :: Html% % Htmlthebasethebase :: Html% % Htmltheadthead :: Html -> HtmlP& A& HtmlHtmltheadthead :: Html -> Html& & HtmlHtmltheadthead :: Html -> Html& & HtmlHtml] thawSTUArray thawSTUArray :: Ix i =>  UArray i e -> ST s (STUArray s i e)' d' IxiUArrayieSTsSTUArraysieathawthaw :: $(Ix i, IArray a e, MArray b e m) => a i e ->  m (b i e)S(  ( IxiIArrayaeMArraybemaiembieConverts an immutable array (any instance of IArray) into a mutable array (any instance of MArray) by taking a complete copy of it. ]thawthaw :: $(Ix i, IArray a e, MArray b e m) => a i e ->  m (b i e)) P) IxiIArrayaeMArraybemaiembieConverts an immutable array (any instance of IArray) into a mutable array (any instance of MArray) by taking a complete copy of it. thth :: Html -> Htmlx* i* HtmlHtmlthth :: Html -> Html* * HtmlHtmlthth :: Html -> Html+ + HtmlHtmltfoottfoot :: Html -> Htmlb+ S+ HtmlHtmltfoottfoot :: Html -> Html+ + HtmlHtmltfoottfoot :: Html -> Html, + HtmlHtml textfield textfield :: String -> Htmld, S, StringHtml textfield textfield :: String -> Html, , StringHtml textfield textfield :: String -> Html - - StringHtml TextDetailsdata  TextDetailsZ- textareatextarea :: Html -> Html- - HtmlHtmltextareatextarea :: Html -> Html . - HtmlHtmltextareatextarea :: Html -> Htmlb. S. HtmlHtmltexttext :: String -> HtmlAttr. . StringHtmlAttrtexttext :: String -> Doc/ / StringDocA 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. m testVerbosity testVerbosity ::  TestFlags -> Flag Verbosity*1  1  TestFlagsFlag Verbosity TestResultdata  TestResultb1  TestOptions  TestOptions :: Int -> Int -> Bool ->  TestOptions1 1 IntIntBool TestOptions TestOptionsdata  TestOptions02 TestOk TestOk :: String -> Int ->  [[String]] ->  TestResult2 2 StringInt[][]String TestResultTestListTestList :: [Test] -> Test23 3 []TestTest TestLabel TestLabel :: String -> Test -> Test3 3 StringTestTestm TestFlags TestFlags ::  Flag FilePath -> Flag Verbosity ->  TestFlagsL4 4 FlagFilePathFlag Verbosity TestFlagsm TestFlagsdata  TestFlags4  TestFailed TestFailed :: [String] -> Int ->  TestResult 5 4 []StringInt TestResult TestExausted  TestExausted :: String -> Int ->  [[String]] ->  TestResult5 5 StringInt[][]String TestResultm testDistPref testDistPref ::  TestFlags ->  Flag FilePath76 6  TestFlagsFlagFilePathm testCommand testCommand :: CommandUI TestFlags6 6  CommandUI TestFlags testCasePaths testCasePaths :: Test -> [Path]7 6 Test[]Path testCaseCount testCaseCount :: Test -> Inth7 Z7 TestIntTestCaseTestCase ::  Assertion -> Test7 7  AssertionTest TestAborted TestAborted ::  Exception ->  TestResult>8 $8  Exception TestResultTestableclass Testable tu8 testtest :: Testable t => t -> Test8 8 TestablettTestTestdata Test9 terminalAppearanceterminalAppearance :: String -> String|9 i9 StringStringjTemplateHaskellTemplateHaskell ::  Extension9 9  Extensiontealteal :: String: : Stringtdtd :: Html -> Html\: M: HtmlHtmltdtd :: Html -> Html: : HtmlHtmltdtd :: Html -> Html: : HtmlHtmltbodytbody :: Html -> HtmlF; 7; HtmlHtmltbodytbody :: Html -> Html; ; HtmlHtmltbodytbody :: Html -> Html; ; HtmlHtmls tarProgram tarProgram :: Program4< *< Programtargettarget :: String -> HtmlAttr< < StringHtmlAttr 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.  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.
 takeFileName takeFileName :: FilePath -> FilePathB B FilePathFilePathGet the file name.
takeFileName "test/" == ""
takeFileName x == snd (splitFileName x)
takeFileName (replaceFileName x "fred") == "fred"
takeFileName (combine x "fred") == "fred"
isRelative (takeFileName (makeValid x))
 takeFileName takeFileName :: FilePath -> FilePathD D FilePathFilePathGet the file name.
takeFileName "test/" == ""
takeFileName x == snd (splitFileName x)
takeFileName (replaceFileName x "fred") == "fred"
takeFileName (combine x "fred") == "fred"
isRelative (takeFileName (makeValid x))
takeExtensionstakeExtensions :: FilePath -> StringqE \E FilePathStringGet all extensions takeExtensionstakeExtensions :: FilePath -> StringE E FilePathStringGet all extensions  takeExtension takeExtension :: FilePath -> StringuF `F FilePathStringGet the extension of a file, returns "" for no extension, .ext otherwise.
takeExtension x == snd (splitExtension x)
takeExtension (addExtension x "ext") == ".ext"
takeExtension (replaceExtension x "ext") == ".ext"
 takeExtension takeExtension :: FilePath -> StringG G FilePathStringGet the extension of a file, returns "" for no extension, .ext otherwise.
takeExtension x == snd (splitExtension x)
takeExtension (addExtension x "ext") == ".ext"
takeExtension (replaceExtension x "ext") == ".ext"
 takeDrive takeDrive :: FilePath -> FilePath9I "I FilePathFilePathOGet the drive from a filepath.
takeDrive x == fst (splitDrive x)
 takeDrive takeDrive :: FilePath -> FilePathI I FilePathFilePathOGet the drive from a filepath.
takeDrive x == fst (splitDrive x)
 takeDirectory takeDirectory :: FilePath -> FilePathJ J FilePathFilePath2Get the directory name, move up one level.
Posix:    takeDirectory "/foo/bar/baz" == "/foo/bar"
Posix:    takeDirectory "/foo/bar/baz/" == "/foo/bar/baz"
Windows:  takeDirectory "foo\\bar" == "foo"
Windows:  takeDirectory "foo\\bar\\\\" == "foo\\bar"
Windows:  takeDirectory "C:\\" == "C:\\"
 takeDirectory takeDirectory :: FilePath -> FilePathWL @L FilePathFilePath2Get the directory name, move up one level.
Posix:    takeDirectory "/foo/bar/baz" == "/foo/bar"
Posix:    takeDirectory "/foo/bar/baz/" == "/foo/bar/baz"
Windows:  takeDirectory "foo\\bar" == "foo"
Windows:  takeDirectory "foo\\bar\\\\" == "foo\\bar"
Windows:  takeDirectory "C:\\" == "C:\\"
 takeBaseName takeBaseName :: FilePath -> StringM M 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"
 takeBaseName takeBaseName :: FilePath -> String{O fO 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"
taketake :: Int64 ->  ByteString ->  ByteStringQ P 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. taketake :: Int ->  ByteString ->  ByteStringPR 0R Int 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 ::  ByteString ->  [ByteString]~S ]S  ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. tailstails ::  ByteString ->  [ByteString]ET $T  ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. tailtail ::  ByteString ->  ByteStringU T  ByteString ByteStringZO(1) Extract the elements after the head of a ByteString, which must be non-empty. tailtail ::  ByteString ->  ByteStringU U  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 -> HtmlV V StringHtmlHtml*Constructs an element with a custom name. tagtag :: String -> Html -> HtmlXW AW StringHtmlHtml*Constructs an element with a custom name. tagtag :: String -> Html -> HtmlW W StringHtmlHtml*Constructs an element with a custom name. tabletable :: Html -> HtmlfX WX HtmlHtmltabletable :: Html -> HtmlX X HtmlHtmltabletable :: Html -> Html Y X HtmlHtmltabtab :: Stream s m Char => ParsecT s u m CharY ZY StreamsmCharParsecTsumChar8Parses a tab character ('\t'). Returns a tab character. sysUnExpectErrorsysUnExpectError :: String ->  SourcePos ->  Reply s u abZ :Z String SourcePosReplysua SysUnExpect SysUnExpect :: String -> MessageZ Z StringMessage synthesize  synthesize :: s ->  (t -> s -> s) -> GenericQ (s -> t) ->  GenericQ t[ P[ stssGenericQstGenericQtBottom-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!] \ GenTokenParsersumStringParsecTsumString`Lexeme parser symbol s parses string s and skips trailing white space. "SymbolSymbol :: String -> Lexeme] ] StringLexeme4Haskell symbol, e.g. >>, :% -swapMVarswapMVar :: MVar a -> a -> IO a^ i^ MVaraaIOaTake 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 -> Html_ _ HtmlHtmlsupsup :: Html -> Html` ` HtmlHtmlsupsup :: Html -> Htmla` R` HtmlHtmlsubstPathTemplate substPathTemplate :: PackageDescription -> LocalBuildInfo ->  PathTemplate -> FilePath?a a PackageDescriptionLocalBuildInfo PathTemplateFilePathsubstPathTemplatesubstPathTemplate :: &[(PathTemplateVariable, PathTemplate)] ->  PathTemplate ->  PathTemplate,b a [](,)PathTemplateVariable PathTemplate PathTemplate PathTemplatesubmitsubmit :: String -> String -> Htmlb b StringStringHtmlsubmitsubmit :: String -> String -> Htmlc b StringStringHtmlsubmitsubmit :: String -> String -> Htmlc ic StringStringHtmlsubsub :: Html -> Htmlc c HtmlHtmlsubsub :: Html -> Htmld d HtmlHtmlsubsub :: Html -> Htmlld ]d HtmlHtmlstylestyle :: Html -> Htmld d HtmlHtmlstylestyle :: Html -> Htmle e HtmlHtmlstylestyle :: Html -> Htmlbe Se HtmlHtmlstylestyle :: Stylee e StylePThe default style (mode=PageMode, lineLength=100, ribbonsPerLine=1.5). Style Style :: Mode -> Int -> Float -> Stylenf Rf ModeIntFloatStyleStyledata Stylef A rendering style. bSTUArraydata STUArray s i af A 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. ]STUArray STUArray :: i -> i -> Int -> MutableByteArray# s -> STUArray s i akj 0j iiIntMutableByteArray#sSTUArraysia]STUArraydata STUArray s i aj A 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. 6stToIOstToIO :: ST RealWorld a -> IO am m ST 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 -> HtmlKo  Htmlo o HtmlHtmlstrongstrong :: Html -> Htmlo o HtmlHtmls stripProgram stripProgram :: ProgramAp 7p Program stripExes stripExes :: LocalBuildInfo -> Boolp p LocalBuildInfoBool,Whether to strip executables during install  StringTok StringTok :: String -> Token;q )q StringTokenstringToHtmlStringstringToHtmlString :: String -> Stringq q StringString.Processing Strings into Html friendly things.  stringToHtml stringToHtml :: String -> HtmlAr 0r StringHtmlhConvert a String to Html, converting characters that need to be escaped to HTML entities.  stringToHtml stringToHtml :: String -> Html s r StringHtmlhConvert a String to Html, converting characters that need to be escaped to HTML entities.  stringToHtml stringToHtml :: String -> Htmls s StringHtmlhConvert a String to Html, converting characters that need to be escaped to HTML entities.  StringRep StringRep :: DataRept t DataRep stringLiteral stringLiteral :: GenTokenParser s u m -> ParsecT s u m String6u t 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 -> Litv v StringLitStringLStringL :: String -> Litw v StringLitstringEstringE :: String -> ExpQ_w Nw StringExpQ StringConstr StringConstr :: String ->  ConstrRepw w String ConstrRep stringstring :: String ->  ReadP String8x x StringReadPString)Parses and returns the specified string. stringstring :: Stream s m Char => String -> ParsecT s u m Stringy x StreamsmCharStringParsecTsumStringstring s parses a sequence of characters given by s. Returns the parsed string (i.e. s).
divOrMod    =   string "div" 
            <|> string "mod"
"StringString :: String -> Lexeme'z z StringLexeme)String literal, with escapes interpreted strikestrike :: Html -> Htmlz z HtmlHtml StrictTypeQtype  StrictTypeQ = Q StrictTypez  strictType strictType :: Q Strict -> TypeQ ->  StrictTypeQ|{ X{ QStrictTypeQ StrictTypeQStrictdata Strict{ FSTRefdata STRef s a{ {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 a| The 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. StreamStream :: FDTypeh~ _~ FDTypestrAttrstrAttr :: String -> String -> HtmlAttr~ ~ StringStringHtmlAttrstrAttrstrAttr :: String -> String -> HtmlAttr` C StringStringHtmlAttrstrAttrstrAttr :: String -> String -> HtmlAttr  StringStringHtmlAttrStrategytype Strategy a = a -> Done vA strategy takes a value and returns a Done value to indicate that the specifed evaluation has been performed. StrStr :: String ->  TextDetails ހ String TextDetailsc StorableArraydata  StorableArray i e8 The array type StmtQtype StmtQ = Q Stmt Stmtdata Stmt #stepstep ::  ReadPrec a ->  ReadPrec a  ReadPrecaReadPreca)Increases the precedence context by one. stdCallstdCall :: Callconv ~ CallconvStdCallStdCall :: Callconvς Ă Callconv stateUser stateUser ::  State s u -> u1  StatesuustatePosstatePos ::  State s u ->  SourcePos  Statesu SourcePos stateInput stateInput ::  State s u -> s  StatesusState State :: s ->  SourcePos -> u ->  State s u l s SourcePosuStatesuStatedata State s u StateState :: Path -> Counts -> State/  PathCountsStateStatedata State]  startToken startToken :: Lex a ()  Lexa()startstart :: Int -> HtmlAttr  IntHtmlAttrjStandaloneDerivingStandaloneDeriving ::  Extensionc W  ExtensionX StableNamedata  StableName a iAn 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.
st_sizest_size ::  Ptr CStat -> IO Int64t V PtrCStatIOInt64st_mtimest_mtime ::  Ptr CStat -> IO CTime Ƌ PtrCStatIOCTimest_modest_mode ::  Ptr CStat -> IO CModeR 4 PtrCStatIOCModest_inost_ino ::  Ptr CStat -> IO CIno  PtrCStatIOCInost_devst_dev ::  Ptr CStat -> IO CDev&  PtrCStatIOCDev6STdata ST s aR The 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 b o aStrategybA 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. srcPrefsrcPref :: FilePath -> FilePath  FilePathFilePathSrcLoc SrcLoc :: String -> Int -> Int -> SrcLocC & StringIntIntSrcLocSrcLocdata SrcLocs A position in the source. srcLinesrcLine :: SrcLoc -> Int Ւ SrcLocInt srcFilename srcFilename :: SrcLoc -> StringK 8 SrcLocString srcColumn srcColumn :: SrcLoc -> Int  SrcLocIntsrcsrc :: String -> HtmlAttr  StringHtmlAttrsrcsrc :: String -> HtmlAttr[ F StringHtmlAttrsrcsrc :: String -> HtmlAttr  StringHtmlAttrsquaressquares :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a~ 2 GenTokenParsersumParsecTsumaParsecTsuma!DEPRECATED: Use brackets.  splitWith splitWith :: (Word8 -> Bool) ->  ByteString ->  [ByteString]C  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') []        == []
 splitWith splitWith :: (Char -> Bool) ->  ByteString ->  [ByteString]R # 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[]HsTypesplitSearchPathsplitSearchPath :: String ->  [FilePath]  String[]FilePathTake a string, split it on the searchPathSeparator character.
Windows: splitSearchPath "File1;File2;File3" == ["File1","File2","File3"]
Posix:   splitSearchPath "File1:File2:File3" == ["File1","File2","File3"]
splitSearchPathsplitSearchPath :: String ->  [FilePath]  String[]FilePathTake a string, split it on the searchPathSeparator character.
Windows: splitSearchPath "File1;File2;File3" == ["File1","File2","File3"]
Posix:   splitSearchPath "File1:File2:File3" == ["File1","File2","File3"]
 splitPath splitPath :: FilePath ->  [FilePath]c F 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"]
 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"]
 splitObjs splitObjs :: LocalBuildInfo -> BoolŠ  LocalBuildInfoBool'Use -split-objs with GHC, if available  splitFileName splitFileName :: FilePath -> (String, String)s O FilePath(,)StringStringSplit a filename into directory and file. combine is the inverse.
uncurry (++) (splitFileName x) == x
uncurry combine (splitFileName (makeValid x)) == (makeValid x)
splitFileName "file/bob.txt" == ("file/", "bob.txt")
splitFileName "file/" == ("file/", "")
splitFileName "bob" == ("", "bob")
Posix:   splitFileName "/" == ("/","")
Windows: splitFileName "c:" == ("c:","")
 splitFileName splitFileName :: FilePath -> (String, String) _ FilePath(,)StringStringSplit a filename into directory and file. combine is the inverse.
uncurry (++) (splitFileName x) == x
uncurry combine (splitFileName (makeValid x)) == (makeValid x)
splitFileName "file/bob.txt" == ("file/", "bob.txt")
splitFileName "file/" == ("file/", "")
splitFileName "bob" == ("", "bob")
Posix:   splitFileName "/" == ("/","")
Windows: splitFileName "c:" == ("c:","")
splitExtensionssplitExtensions :: FilePath -> (FilePath, String) u FilePath(,)FilePathStringZSplit on all extensions
splitExtensions "file.tar.gz" == ("file",".tar.gz")
splitExtensionssplitExtensions :: FilePath -> (FilePath, String) ^ FilePath(,)FilePathStringZSplit on all extensions
splitExtensions "file.tar.gz" == ("file",".tar.gz")
splitExtensionsplitExtension :: FilePath -> (String, String)g C 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/","")
splitExtensionsplitExtension :: 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/","")
 splitDrive splitDrive :: FilePath -> (FilePath, FilePath)  FilePath(,)FilePathFilePathSplit 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 "\\\\?\\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")
 splitDrive splitDrive :: FilePath -> (FilePath, FilePath)$  FilePath(,)FilePathFilePathSplit 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 "\\\\?\\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")
splitDirectoriessplitDirectories :: FilePath ->  [FilePath] g FilePath[]FilePath!Just as splitPath, but don't add the trailing slashes to each element.
splitDirectories "test/file" == ["test","file"]
splitDirectories "/test/file" == ["/","test","file"]
joinPath (splitDirectories (makeValid x)) `equalFilePath` makeValid x
splitDirectories "" == []
splitDirectoriessplitDirectories :: FilePath ->  [FilePath]%  FilePath[]FilePath!Just as splitPath, but don't add the trailing slashes to each element.
splitDirectories "test/file" == ["test","file"]
splitDirectories "/test/file" == ["/","test","file"]
joinPath (splitDirectories (makeValid x)) `equalFilePath` makeValid x
splitDirectories "" == []
splitAtsplitAt :: Int64 ->  ByteString -> (ByteString, ByteString)  Int64 ByteString(,) ByteString ByteStringlO(n\c)/ splitAt n xs is equivalent to (take n xs, drop n xs). splitAtsplitAt :: Int ->  ByteString -> (ByteString, ByteString) ɷ Int ByteString(,) ByteString ByteStringiO(1) splitAt n xs is equivalent to (take n xs, drop n xs). splitsplit :: Word8 ->  ByteString ->  [ByteString] Ǹ 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. splitsplit :: Char ->  ByteString ->  [ByteString]b ; 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. }SpecificPackageDBSpecificPackageDB :: FilePath ->  PackageDBɽ  FilePath PackageDBSpecialSpecial ::  HsSpecialCon -> HsQName5   HsSpecialConHsQName)built-in constructor with special syntax sparkingsparking :: a -> Done -> a  aDoneaEvaluates 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 b  aStrategybA 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. spanEndspanEnd :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)B  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) 
spanspan :: (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) spanspan :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)H  CharBool ByteString(,) ByteString ByteStringspan p xs breaks the ByteString into two segments. It is equivalent to (takeWhile p xs, dropWhile p xs) spacingspacing :: PPHsMode -> Bool5 " 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 :: Htmlf _ HtmlNon-breaking space.  spaceHtml spaceHtml :: Html  HtmlNon-breaking space.  spaceHtml spaceHtml :: Html  HtmlNon-breaking space. spacespace :: Doc^ X 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  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.  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.  sourceName sourceName ::  SourcePos ->  SourceName   SourcePos SourceName8Extracts the name of the source from a source position.  SourceNametype  SourceName = StringN  SourceNametype  SourceName = String  sourceLine sourceLine ::  SourcePos -> Line   SourcePosLine1Extracts the line number from a source position.  sourceLine sourceLine ::  SourcePos -> Line z  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. sortsort ::  ByteString ->  ByteStringi N  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 snocsnoc ::  ByteString -> Word8 ->  ByteString   ByteStringWord8 ByteString?O(n\c)/ Append a byte to the end of a ByteString snocsnoc ::  ByteString -> Char ->  ByteString| [  ByteStringChar ByteStringvO(n) Append a Char to the end of a ByteString. Similar to cons, this function performs a memcpy. snapshotVersionsnapshotVersion ::  CalendarTime -> Version -> Version g  CalendarTimeVersionVersionZModifies a Version by appending a snapshot number corresponding to the given date. vsmartCopySourcessmartCopySources ::  Verbosity ->  [FilePath] -> FilePath -> [String] -> [String] -> IO ()   Verbosity[]FilePathFilePath[]String[]StringIO()Copy the source files into the right directory. Looks in the build prefix for files that look like the input modules, based on the input search suffixes. It copies the files into the target directory. smallsmall :: Html -> Html  HtmlHtmlsmallsmall :: Html -> HtmlP A HtmlHtmlsmallsmall :: Html -> Html  HtmlHtml  skipSpaces skipSpaces :: ReadP ()  ReadP()Skips all whitespace.   skipMany1 skipMany1 :: ReadP a -> ReadP ()u Y ReadPaReadP(),Like many1, but discards the result.  skipMany1 skipMany1 :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()X  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
 sizeof_stat sizeof_stat :: Int  Intsizesize :: String -> HtmlAttr/  StringHtmlAttrsizesize :: String -> HtmlAttr v StringHtmlAttrsizesize :: String -> HtmlAttr  StringHtmlAttr singleton singleton :: Word8 ->  ByteStringO 9 Word8 ByteString<O(1) Convert a Word8 into a ByteString  singleton singleton :: Char ->  ByteString  Char ByteString;O(1) Convert a Char into a ByteString  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. s simpleProgram simpleProgram :: String -> ProgramD 0 StringProgramMake a simple named program. By default we'll just search for it in the path and not try to find the version name. You can override these behaviours if necessary, eg:
simpleProgram "foo" { programFindLocation = ... , programFindVersion ... }
silversilver :: String | StringsigPsigP :: PatQ -> TypeQ -> PatQ  PatQTypeQPatQSigPSigP :: Pat -> Type -> PatO < PatTypePat0 signalQSemN signalQSemN :: QSemN -> Int -> IO ()  QSemNIntIO()ESignal that a given quantity is now available from the QSemN. / signalQSem signalQSem :: QSem -> IO ()n [ QSemIO()3Signal that a unit of the QSem is available sigEsigE :: ExpQ -> TypeQ -> ExpQ  ExpQTypeQExpQSigESigE :: Exp -> Type -> Expk X ExpTypeExpsigDsigD :: Name -> TypeQ -> DecQ  NameTypeQDecQSigDSigD :: Name -> Type -> Dec7 # NameTypeDec] showsIArray showsIArray :: &(IArray a e, Ix i, Show i, Show e) => Int -> a i e -> ShowS  IArrayaeIxiShowiShoweIntaieShowSshowPathshowPath :: Path -> Stringb Q PathStringuShowOrParseArgsdata ShowOrParseArgs 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 -> 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. showHtmlshowHtml ::  HTML html => html -> String  HTMLhtmlhtmlStringOutput 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 -> Stringz [ HTMLhtmlhtmlStringOutput 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] -> String o StringStringStringStringString[]MessageString showCounts showCounts :: Counts -> String  CountsString showConstr showConstr :: Constr -> Stringy f ConstrString"Gets the string for a constructor }showCompilerIdshowCompilerId :: Compiler -> String  CompilerStringuShowArgsShowArgs :: ShowOrParseArgsa O ShowOrParseArgsshapeshape :: String -> HtmlAttr  StringHtmlAttrshapeshape :: String -> HtmlAttr  StringHtmlAttrshapeshape :: String -> HtmlAttr{ f StringHtmlAttrsforcesforce ::  NFData a => a -> b -> b  NFDataaabbuSFlagstype SFlags = [Char]' "Short command line option strings  setupWrapper  setupWrapper :: FilePath -> [String] -> Maybe FilePath -> IO ()  FilePath[]StringMaybeFilePathIO()v setupMessage  setupMessage ::  Verbosity -> String -> PackageIdentifier -> IO ()   VerbosityStringPackageIdentifierIO()setStatesetState ::  Monad m => u -> ParsecT s u m ()E  MonadmuParsecTsum()3An alias for putState for backwards compatibility.  setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePos   SourcePos SourceName SourcePosSet the name of the source.  setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePos   SourcePos SourceName SourcePosSet the name of the source.  setSourceLine setSourceLine ::  SourcePos -> Line ->  SourcePosl M  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 ->  SourcePos   SourcePosColumn SourcePos,Set the column number of a source position. setSourceColumnsetSourceColumn ::  SourcePos -> Column ->  SourcePos   SourcePosColumn SourcePos,Set the column number of a source position.  setPosition setPosition ::  Monad m =>  SourcePos -> ParsecT s u m ()i 7 Monadm SourcePosParsecTsum()KsetPosition pos sets the current source position to pos. setParserStatesetParserState ::  Monad m =>  State s u -> ParsecT s u m (State s u)o . 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.  setErrorPos setErrorPos ::  SourcePos ->  ParseError ->  ParseErrory S  SourcePos ParseError ParseErrorsetErrorMessagesetErrorMessage :: Message ->  ParseError ->  ParseError  Message ParseError ParseErrorsetEchosetEcho :: FD -> Bool -> IO () i FDBoolIO() setCooked setCooked :: FD -> Bool -> IO ()  FDBoolIO()setBOLsetBOL :: Lex a ()9 * Lexa()set_console_echoset_console_echo :: CInt -> CInt -> IO CInt  CIntCIntIOCIntset_console_bufferingset_console_buffering :: CInt -> CInt -> IO CIntQ 6 CIntCIntIOCInt 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]c 4 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] } StreamsmtParsecTsumaParsecTsumsepParsecTsum[]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]  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  []DocDoc#Either hsep or vcat. semiSep1semiSep1 :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m [a] 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 :: Token  Tokensemisemi :: Doc   DocA ';' 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 :: HtmlAttr} r HtmlAttrselectedselected :: HtmlAttr  HtmlAttrselectedselected :: HtmlAttr   HtmlAttrselectselect :: Html -> Htmla R HtmlHtmlselectselect :: Html -> Html  HtmlHtmlselectselect :: Html -> Html   HtmlHtmlsectionRsectionR :: ExpQ -> ExpQ -> ExpQw b ExpQExpQExpQsectionLsectionL :: ExpQ -> ExpQ -> ExpQ  ExpQExpQExpQsecondsToDiffTimesecondsToDiffTime :: Integer -> DiffTime] G IntegerDiffTimeICreate a DiffTime which represents an integral number of seconds. z SearchResultdata  SearchResult a searchPathSeparatorsearchPathSeparator :: Char: 3 CharThe character that is used to separate the entries in the $PATH environment variable.
Windows: searchPathSeparator == ';'
Posix:   searchPathSeparator == ':'
searchPathSeparatorsearchPathSeparator :: Char< 5 CharThe character that is used to separate the entries in the $PATH environment variable.
Windows: searchPathSeparator == ';'
Posix:   searchPathSeparator == ':'
zsearchByNameSubstringsearchByNameSubstring :: Package pkg => PackageIndex pkg -> String -> [pkg] y Packagepkg PackageIndexpkgString[]pkg~Does a case-insensitive substring search by package name. That is, all packages that contain the given string in their name. z searchByName searchByName :: Package pkg => PackageIndex pkg -> String -> SearchResult [pkg]   Packagepkg PackageIndexpkgString SearchResult[]pkg'Does a case-insensitive search by package name. If there is only one package that compares case-insentiviely to this name then the search is unambiguous and we get back all versions of that package. If several match case-insentiviely but one matches exactly then it is also unambiguous. If however several match case-insentiviely and none match exactly then we have an ambiguous result, and we get back all the versions of all the packages. The list of ambiguous results is split by exact package name. So it is a non-empty list of non-empty lists. msDistVerbositysDistVerbosity ::  SDistFlags -> Flag Verbosity   SDistFlagsFlag Verbositym sDistVerbose sDistVerbose ::  SDistFlags ->  Verbosity-   SDistFlags Verbositym sDistSnapshot sDistSnapshot ::  SDistFlags ->  Flag Bool   SDistFlagsFlagBool~ sDistHook sDistHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  SDistFlags -> IO () b  UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()<Over-ride this hook to get different behavior during sdist. m SDistFlags  SDistFlags ::  Flag Bool ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  SDistFlags  FlagBoolFlagFilePath VerbosityFlag Verbosity SDistFlagsm SDistFlagsdata  SDistFlags! /Flags to sdist: (snapshot, verbosity) m sDistDistPref sDistDistPref ::  SDistFlags ->  Flag FilePath! !  SDistFlagsFlagFilePathm sdistCommand sdistCommand :: CommandUI SDistFlags<" ""  CommandUI SDistFlagssdistsdist :: PackageDescription -> Maybe LocalBuildInfo ->  SDistFlags -> FilePath -> FilePath -> [PPSuffixHandler] -> IO ()z#  # PackageDescriptionMaybeLocalBuildInfo SDistFlagsFilePathFilePath[]PPSuffixHandlerIO()Create a source distribution.  scrolling scrolling :: String -> HtmlAttr# # StringHtmlAttr scrolling scrolling :: String -> HtmlAttrd$ O$ StringHtmlAttrscriptscript :: Html -> Html$ $ HtmlHtmlscriptscript :: Html -> Html % $ HtmlHtmlscriptscript :: Html -> Html`% Q% HtmlHtml scratchDir scratchDir :: LocalBuildInfo -> FilePath% % LocalBuildInfoFilePath+Where to put the result of the Hugs build. jScopedTypeVariablesScopedTypeVariables ::  Extensionc& W&  Extensionscanr1scanr1 :: (Char -> Char -> Char) ->  ByteString ->  ByteString' & CharCharChar ByteString ByteStringPscanr1 is a variant of scanr that has no starting value argument. scanr scanr :: (Char -> Char -> Char) -> Char ->  ByteString ->  ByteString ( ' CharCharCharChar ByteString ByteString*scanr is the right-to-left dual of scanl. scanl1scanl1 :: (Char -> Char -> Char) ->  ByteString ->  ByteString( ( CharCharChar ByteString ByteStringscanl1 is a variant of scanl that has no starting value argument:
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
scanl scanl :: (Word8 -> Word8 -> Word8) -> Word8 ->  ByteString ->  ByteString"* ) Word8Word8Word8Word8 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.
scanl 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:
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 CharR- 2- CharBoolReadPCharRConsumes and returns the next character, if it satisfies the specified predicate. satisfysatisfy :: Stream s m Char => (Char -> Bool) -> ParsecT s u m CharW. . StreamsmCharCharBoolParsecTsumCharThe parser satisfy f succeeds for any character for which the supplied function f returns True. Returns the character that is actually parsed. 1 SampleVartype  SampleVar a = MVar (Int, MVar a)N/ 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 -> Html1 1 HtmlHtmlsamplesample :: Html -> HtmlB2 32 HtmlHtmlsamplesample :: Html -> Html2 2 HtmlHtmlSafetydata Safety2 ] safeRangeSize safeRangeSize :: Ix i => (i, i) -> Int@3 "3 Ixi(,)iiInt] safeIndex  safeIndex :: Ix i => (i, i) -> Int -> i -> Int3 3 Ixi(,)iiIntiIntsafesafe :: Safety4  4 SafetySafeSafe :: SafetyN4 E4 Safetys_issocks_issock :: CMode -> Bool4 4 CModeBools_isregs_isreg :: CMode -> Bool5 4 CModeBools_isfifos_isfifo :: CMode -> BoolZ5 J5 CModeBools_isdirs_isdir :: CMode -> Bool5 5 CModeBools_ischrs_ischr :: CMode -> Bool 6 5 CModeBools_isblks_isblk :: CMode -> Boolb6 R6 CModeBoolrwhnfrwhnf ::  Strategy a6 6 Strategya/Reduces its argument to weak head normal form.  runTestTT runTestTT :: Test ->  IO CountsA7 *7 TestIOCounts runTestText runTestText ::  PutText st -> Test -> IO (Counts, st)7 7 PutTextstTestIO(,)CountsstrunTests runTests :: String ->  TestOptions -> [TestOptions -> IO TestResult] -> IO ()8 o8 String TestOptions[] TestOptionsIO TestResultIO()=Prints a one line summary of various tests with common theme ~runTestsrunTests ::  UserHooks -> Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()9 9  UserHooksArgsBoolPackageDescriptionLocalBuildInfoIO()Used for ./setup test b runSTUArray runSTUArray :: Ix i => ST s (STUArray s i e) ->  UArray i e: q: 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. b 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. 6runSTrunST :: ST s a -> a= = 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. runSimplePreProcessor runSimplePreProcessor ::  PreProcessor -> FilePath -> FilePath ->  Verbosity -> IO ()Y? ?  PreProcessorFilePathFilePath VerbosityIO() runReaderT runReaderT ::  ReaderT r m a -> r -> m a? ? ReaderTrmarma runReader runReader ::  Reader r a -> r -> aQ@ 8@ 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 aA A QuasimQamarunPT runPT :: Stream s m t => ParsecT s u m a -> u ->  SourceName -> s -> m (Either ParseError a)B BB StreamsmtParsecTsumau SourceNamesmEither ParseErrorarunPreProcessor runPreProcessor ::  PreProcessor -> (FilePath, FilePath) -> (FilePath, FilePath) ->  Verbosity -> IO ()C TC  PreProcessor(,)FilePathFilePath(,)FilePathFilePath VerbosityIO()runParserWithMode runParserWithMode ::  ParseMode -> P a -> String ->  ParseResult ajD :D  ParseModePaString ParseResulta runParserT  runParserT :: Stream s m t => ParsecT s u m a -> u ->  SourceName -> s -> m (Either ParseError a)rE E 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 aHH G 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 aJ J PaString ParseResulta runParsecT runParsecT :: ParsecT s u m a ->  State s u -> m (Consumed (m (Reply s u a)))K K ParsecTsumaStatesumConsumedmReplysuarunP runP :: Stream s Identity t =>  Parsec s u a -> u ->  SourceName -> s -> Either ParseError aL pL StreamsIdentitytParsecsuau SourceNamesEither ParseErrorarunListTrunListT ::  ListT m a -> m [a]:M M ListTmam[]arunIOrunIO :: IO a -> Q aM |M 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 -> aO mO Identityaa runErrorT runErrorT ::  ErrorT e m a -> m (Either e a) P O ErrorTemamEitherearunContTrunContT ::  ContT r m a ->  (a -> m r) -> m rP oP ContTrmaamrmrrunContrunCont :: Cont r a -> (a -> r) -> rQ P ContraarrRuns 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).
runrun :: Testable a => a ->  TestOptions ->  IO TestResultR vR Testableaa TestOptionsIO TestResult\Run the test. Here we use the same random number each time, so we get reproducable results! rulesrules :: String -> HtmlAttrdS OS StringHtmlAttrrulesrules :: String -> HtmlAttrS S StringHtmlAttrrulesrules :: String -> HtmlAttr T  T StringHtmlAttrrparenrparen :: DocZT TT DocA ')' character rowspanrowspan :: Int -> HtmlAttrT T IntHtmlAttrrowspanrowspan :: Int -> HtmlAttr"U U IntHtmlAttrrowspanrowspan :: Int -> HtmlAttr~U lU IntHtmlAttrrowsrows :: String -> HtmlAttrU U StringHtmlAttrrowsrows :: String -> HtmlAttr6V !V StringHtmlAttrrowsrows :: String -> HtmlAttrV }V StringHtmlAttrrnfrnf ::  NFData a =>  Strategy aV V NFDataaStrategya RightSquare RightSquare :: Token8W 0W Token RightParen RightParen :: Token~W vW Token RightCurly RightCurly :: TokenW W Token RightArrow RightArrow :: Token X X TokenribbonsPerLineribbonsPerLine :: Style -> FloatrX aX StyleFloat&Ratio of ribbon length to line length zreverseDependencyClosurereverseDependencyClosure :: PackageFixedDeps pkg => PackageIndex pkg -> [PackageIdentifier] -> [PackageIdentifier]Y SY PackageFixedDepspkg PackageIndexpkg[]PackageIdentifier[]PackageIdentifierTakes the transative closure of the packages reverse dependencies. reversereverse ::  ByteString ->  ByteStringZ Z  ByteString ByteString]O(n) reverse xs returns the elements of xs in reverse order. reversereverse ::  ByteString ->  ByteString[ f[  ByteString ByteStringiO(n) reverse xs efficiently returns the elements of xs in reverse order. revrev :: String -> HtmlAttrD\ /\ StringHtmlAttrrevrev :: String -> HtmlAttr\ \ StringHtmlAttrrevrev :: String -> HtmlAttr\ \ StringHtmlAttrR ReturnInOrder ReturnInOrder :: String -> a ->  ArgOrder a}] `] StringaArgOrderawrap non-options into options *returnreturn ::  Monad m => a -> m a^ ] MonadmamajRestrictedTypeSynonymsRestrictedTypeSynonyms ::  Extensiong^ [^  ExtensionM resetErrno resetErrno :: IO ()^ ^ IO()?Reset the current thread's errno value to eOK. resetreset :: String -> String -> Html__ F_ StringStringHtmlresetreset :: String -> String -> Html_ _ StringStringHtmlresetreset :: String -> String -> Html?` &` StringStringHtml#resetreset ::  ReadPrec a ->  ReadPrec a` ` ReadPrecaReadPreca'Resets the precedence context to zero. reservedOpNamesreservedOpNames :: GenLanguageDef s u m -> [String]ma Aa GenLanguageDefsum[]String The list of reserved operators.  reservedOp reservedOp :: GenTokenParser s u m -> String -> ParsecT s u m ()Fb b 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]c c GenLanguageDefsum[]String"The list of reserved identifiers. reservedreserved :: GenTokenParser s u m -> String -> ParsecT s u m ()d Nd 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. srequireProgram requireProgram ::  Verbosity -> Program ->  VersionRange -> ProgramConfiguration -> ,IO (ConfiguredProgram, ProgramConfiguration)f 8f  VerbosityProgram VersionRangeProgramConfigurationIO(,)ConfiguredProgramProgramConfigurationaCheck that a program is configured and available to be run. Additionally check that the version of the program number is suitable. For example AnyVersion or orLaterVersion (Version [1,0] []) It raises an exception if the program could not be configured or the version is unsuitable, otherwise it returns the configured program. R RequireOrder RequireOrder ::  ArgOrder aah Qh ArgOrdera,no option processing after first non-option ureqArg' reqArg' ::  Monoid b => ArgPlaceHolder ->  (String -> b) -> (b -> [String]) -> #MkOptDescr (a -> b) (b -> a -> a) ai =i MonoidbArgPlaceHolderStringbb[]String MkOptDescrabbaaa*(String -> a) variant of reqArg ureqArg reqArg ::  Monoid b => ArgPlaceHolder -> ReadE b -> (b -> [String]) -> #MkOptDescr (a -> b) (b -> a -> a) aj sj MonoidbArgPlaceHolderReadEbb[]String MkOptDescrabbaaa/Create a string-valued command line interface. RReqArg ReqArg :: String -> a -> String ->  ArgDescr ak qk StringaStringArgDescraoption requires argument uReqArgReqArg ::  Description -> OptFlags -> ArgPlaceHolder -> ReadE (a -> a) -> a -> [String] ->  OptDescr al jl  DescriptionOptFlagsArgPlaceHolderReadEaaa[]StringOptDescra ReportStarttype  ReportStart us = State -> us -> IO usm  ReportProblemtype  ReportProblem us! = String -> State -> us -> IO usm reportreport :: Bool -> String -> Q ()m m BoolStringQ()Replydata Reply s u a$n  replicate replicate :: Int64 -> Word8 ->  ByteStringn n Int64Word8 ByteString{O(n) replicate n x is a ByteString of length n with x the value of every element.  replicate replicate :: Int -> Char ->  ByteStringo o 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) replaceFileNamereplaceFileName :: FilePath -> String -> FilePath%q q FilePathStringFilePathjSet the filename.
replaceFileName (makeValid x) (takeFileName (makeValid x)) == makeValid x
replaceFileNamereplaceFileName :: FilePath -> String -> FilePathr r FilePathStringFilePathjSet the filename.
replaceFileName (makeValid x) (takeFileName (makeValid x)) == makeValid x
replaceExtensionreplaceExtension :: FilePath -> String -> FilePaths r FilePathStringFilePath@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"
replaceExtensionreplaceExtension :: FilePath -> String -> FilePatht t FilePathStringFilePath@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"
replaceDirectoryreplaceDirectory :: FilePath -> String -> FilePathv v FilePathStringFilePathwSet the directory, keeping the filename the same.
replaceDirectory x (takeDirectory x) `equalFilePath` x
replaceDirectoryreplaceDirectory :: FilePath -> String -> FilePathw w FilePathStringFilePathwSet 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)Yy x MArrayaeIOIxi IOToDiffArrayaie[](,)InteIO IOToDiffArrayaiereplaceBaseNamereplaceBaseName :: FilePath -> String -> FilePathy y FilePathStringFilePathSet 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
replaceBaseNamereplaceBaseName :: FilePath -> String -> FilePathh{ I{ FilePathStringFilePathSet 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
repeatrepeat :: Word8 ->  ByteString| | Word8 ByteString`repeat x is an infinite ByteString, with x the value of every element.  repConstr repConstr :: DataType ->  ConstrRep -> Constr} } DataType ConstrRepConstr,Look up a constructor by its representation  renderStyle renderStyle :: Style -> Doc -> StringC~ ,~ StyleDocString9Render the document as a string using a specified style. renderHtmlWithLanguagerenderHtmlWithLanguage ::  HTML html => String -> html -> String)  HTMLhtmlStringhtmlStringROutputs indented XHTML. Because space matters in HTML, the output is quite messy. renderHtmlFragmentrenderHtmlFragment ::  HTML html => html -> String  HTMLhtmlhtmlStringRender 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 -> String2  HTMLhtmlhtmlStringRender 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 -> String^ ? HTMLhtmlhtmlStringRender 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 -> Stringz [ HTMLhtmlhtmlStringQOutputs indented HTML. Because space matters in HTML, the output is quite messy.  renderHtml renderHtml ::  HTML html => html -> StringF ' HTMLhtmlhtmlStringQOutputs indented HTML. Because space matters in HTML, the output is quite messy.  renderHtml renderHtml ::  HTML html => html -> String  HTMLhtmlhtmlStringQOutputs indented HTML. Because space matters in HTML, the output is quite messy. renderrender :: Doc -> String  DocStringARenders the document as a string using the default style. removeRegScriptsremoveRegScripts :: IO ()O D IO()removeInstalledConfigremoveInstalledConfig :: FilePath -> IO ()Ά  FilePathIO()jRelaxedPolyRecRelaxedPolyRec ::  Extension$   Extensionrelrel :: String -> HtmlAttr~ i StringHtmlAttrrelrel :: String -> HtmlAttr؇ Ç StringHtmlAttrrelrel :: String -> HtmlAttr2  StringHtmlAttrreifyreify :: Name -> Q Info w NameQInfo8reify looks up information about the Name m regVerbosity regVerbosity ::  RegisterFlags -> Flag VerbosityL '  RegisterFlagsFlag Verbositym regVerbose regVerbose ::  RegisterFlags ->  Verbosityĉ   RegisterFlags Verbosity RegularFile RegularFile :: FDType  FDTypem regPackageDB regPackageDB ::  RegisterFlags -> Flag PackageDB r  RegisterFlagsFlag PackageDBm RegisterFlags RegisterFlags :: Flag PackageDB ->  Flag Bool -> Flag (Maybe FilePath) ->  Flag Bool ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  RegisterFlags  Flag PackageDBFlagBoolFlagMaybeFilePathFlagBoolFlagFilePath VerbosityFlag Verbosity RegisterFlagsm RegisterFlagsdata  RegisterFlagsZ dFlags to register and unregister: (user package, gen-script, in-place, verbosity) mregisterCommandregisterCommand :: CommandUI RegisterFlags5   CommandUI RegisterFlagsregister register :: PackageDescription -> LocalBuildInfo ->  RegisterFlags -> IO ()  PackageDescriptionLocalBuildInfo RegisterFlagsIO()m regInPlace regInPlace ::  RegisterFlags ->  Flag Bool{ [  RegisterFlagsFlagBool~regHookregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO () .  UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration. m regGenScript regGenScript ::  RegisterFlags ->  Flag BoolF &  RegisterFlagsFlagBoolm regGenPkgConf regGenPkgConf ::  RegisterFlags -> Flag (Maybe FilePath)   RegisterFlagsFlagMaybeFilePathm regDistPref regDistPref ::  RegisterFlags ->  Flag FilePathe A  RegisterFlagsFlagFilePathredred :: String  Stringj RecursiveDo RecursiveDo ::  Extension   ExtensionrecUpdErecUpdE :: ExpQ -> [Q (Name, Exp)] -> ExpQ} Q ExpQ[]Q(,)NameExpExpQRecUpdERecUpdE :: Exp ->  [FieldExp] -> Exp ؒ Exp[]FieldExpExprecPrecP :: Name ->  [FieldPatQ] -> PatQm M Name[] FieldPatQPatQRecPRecP :: Name ->  [FieldPat] -> Pat Ó Name[]FieldPatPatrecoverQrecoverQ :: MonadPlus m => r -> GenericQ (m r) -> GenericQ (m r) Z  MonadPlusmrGenericQmrGenericQmr8Recover from the failure of monadic query by a constant  recoverMp recoverMp :: MonadPlus m =>  GenericM m ->  GenericM mg 6  MonadPlusmGenericMmGenericMm?Recover from the failure of monadic transformation by identity recoverrecover :: Q a -> Q a -> Q a  QaQaQajRecordWildCardsRecordWildCards ::  Extensionm a  Extensionj RecordPuns RecordPuns ::  Extension   ExtensionrecConErecConE :: Name -> [Q (Name, Exp)] -> ExpQI  Name[]Q(,)NameExpExpQRecConERecConE :: Name ->  [FieldExp] -> Exp×  Name[]FieldExpExprecCrecC :: Name -> [VarStrictTypeQ] -> ConQE  Name[]VarStrictTypeQConQRecCRecC :: Name -> [VarStrictType] -> ConØ  Name[] VarStrictTypeCon reallocBytes reallocBytes :: Ptr a -> Int ->  IO (Ptr a)L * 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)a 0 StorableaPtraIntIOPtraLAdjust the size of an array including an extra position for the end marker.  reallocArray reallocArray :: Storable a => Ptr a -> Int ->  IO (Ptr a)S " StorableaPtraIntIOPtraAdjust the size of an array reallocrealloc :: Storable b => Ptr a ->  IO (Ptr b) ˝ StorablebPtraIOPtrbResize 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. v readUTF8File readUTF8File :: FilePath ->  IO String h FilePathIOStringaReads a UTF8 encoded text file as a Unicode String Reads lazily using ordinary readFile. readTime readTime :: ParseTime t =>  TimeLocale -> String -> String -> t c  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. F readSTRef readSTRef ::  STRef s a -> ST s a r STRefsaSTsa readsTime readsTime :: ParseTime t =>  TimeLocale -> String -> ReadS t8   ParseTimet TimeLocaleStringReadStLParse a time value given a format string. See parseTime for details. 1 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 aä  IntReadSaReadPreca  readS_to_P readS_to_P :: ReadS a -> ReadP a1  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 aΧ  ReadPrecaIntReadSa# readPrec_to_P readPrec_to_P ::  ReadPrec a -> Int -> ReadP a\ 9 ReadPrecaIntReadPa#ReadPrecdata ReadPrec a   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 aZ 5 IntReadPaReadPreca ReadPdata ReadP a hReadPtype ReadP r a = ReadP aȪ -readMVarreadMVar :: MVar a -> IO a*  MVaraIOaThis is a combination of takeMVar and putMVar; ie. it takes the value from the MVar, puts it back, and also returns it. "readIntP readIntP ::  Num a => a -> (Char -> Bool) ->  (Char -> Int) -> ReadP as < NumaaCharBoolCharIntReadPa 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. readIntreadInt ::  ByteString -> Maybe (Int, ByteString)u E  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. readFilereadFile :: FilePath ->  IO ByteString  FilePathIO ByteStringsRead an entire file lazily into a ByteString. The Handle will be held open until EOF is encountered. readFilereadFile :: FilePath ->  IO ByteString } FilePathIO 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 aC dThe reader monad transformer. Can be used to add environment reading functionality to other monads. ReaderReader :: r -> a ->  Reader r a  raReaderraReadernewtype Reader r aL 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. readdirreaddir :: Ptr CDir -> Ptr (Ptr CDirent) -> IO CIntR  PtrCDirPtrPtrCDirentIOCInt^ readDiffArray readDiffArray :: (MArray a e IO, Ix i) => IOToDiffArray a i e -> Int -> IO e$ ܵ MArrayaeIOIxi IOToDiffArrayaieIntIOe~readDescreadDesc ::  UserHooks -> IO (Maybe PackageDescription)   UserHooksIOMaybePackageDescriptionRead the description file "readDecPreadDecP ::  Num a => ReadP a2  NumaReadPa readConstr readConstr :: DataType -> String ->  Maybe Constr÷  DataTypeStringMaybeConstr"Lookup a constructor via a string .readChanreadChan :: Chan a -> IO aG 0 ChanaIOa*Read the next value from the Chan. a readArray readArray :: (MArray a e m, Ix i) => a i e -> i -> m e  MArrayaemIxiaieime%Read an element from a mutable array ] readArray readArray :: (MArray a e m, Ix i) => a i e -> i -> m e  MArrayaemIxiaieime%Read an element from a mutable array rbrackrbrack :: Doc? 9 DocA ']' character rbracerbrace :: Doc  DocA '}' character vrawSystemStdout' rawSystemStdout' ::  Verbosity -> FilePath -> [String] -> IO (String, ExitCode)u 0  VerbosityFilePath[]StringIO(,)StringExitCodevrawSystemStdout rawSystemStdout ::  Verbosity -> FilePath -> [String] ->  IO String2   VerbosityFilePath[]StringIOStringSRun a command and return its output. The output is assumed to be encoded as UTF8. srawSystemProgramStdoutConf rawSystemProgramStdoutConf ::  Verbosity -> Program -> ProgramConfiguration ->  [ProgArg] ->  IO String D  VerbosityProgramProgramConfiguration[]ProgArgIOStringELooks up the given program in the program configuration and runs it. srawSystemProgramStdout rawSystemProgramStdout ::  Verbosity -> ConfiguredProgram ->  [ProgArg] ->  IO String t  VerbosityConfiguredProgram[]ProgArgIOString7Runs the given configured program and gets the output. srawSystemProgramConf rawSystemProgramConf ::  Verbosity -> Program -> ProgramConfiguration ->  [ProgArg] -> IO ()޿   VerbosityProgramProgramConfiguration[]ProgArgIO()ELooks up the given program in the program configuration and runs it. srawSystemProgram rawSystemProgram ::  Verbosity -> ConfiguredProgram ->  [ProgArg] -> IO ()   VerbosityConfiguredProgram[]ProgArgIO()#Runs the given configured program. v rawSystemExit  rawSystemExit ::  Verbosity -> FilePath -> [String] -> IO ()   VerbosityFilePath[]StringIO() RawDevice RawDevice :: FDType  FDType rationalL rationalL :: Rational -> Lith V RationalLit RationalL RationalL :: Rational -> Lit  RationalLitrationalrational :: Rational -> Doc&  RationalDoc(
rational n = text (show n)
"RatRat :: Rational -> Lexeme  RationalLexemeFloating point literal s ranlibProgram ranlibProgram :: Program  Programj RankNTypes RankNTypes ::  Extension] Q  Extensionj Rank2Types Rank2Types ::  Extension   ExtensionRangeQtype RangeQ = Q Range Rangedata Range radioradio :: String -> String -> Html l StringStringHtmlradioradio :: String -> String -> Html  StringStringHtmlradioradio :: String -> String -> Htmle L StringStringHtmlr0r0 ::  Strategy a  Strategya/Performs no evaluation of its argument. QVarSymQVarSym :: (String, String) -> TokenL + (,)StringStringTokenQVarIdQVarId :: (String, String) -> Token  (,)StringStringTokenquotesquotes :: Doc -> Doc  DocDoc Wrap document in '...' quotequote :: Html -> Html r HtmlHtmlquotequote :: Html -> Html  HtmlHtmlquotequote :: Html -> Html%  HtmlHtmlQualQual :: Module -> HsName -> HsQName } ModuleHsNameHsQName"name qualified with a module name 0QSemNdata QSemN A 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) -> Token ^ (,)StringStringTokenQConIdQConId :: (String, String) -> Token  (,)StringStringTokenQdata Q a putTextToShowSputTextToShowS ::  PutText ShowS{ h PutTextShowSputTextToHandleputTextToHandle :: Handle -> Bool ->  PutText Int  HandleBoolPutTextIntPutTextPutText :: String -> Bool -> st -> IO st -> st ->  PutText st  StringBoolstIOststPutTextstPutTextdata PutText st putStrLnputStrLn ::  ByteString -> IO ()h O  ByteStringIO()7Write a ByteString to stdout, appending a newline byte putStrLnputStrLn ::  ByteString -> IO ()   ByteStringIO()7Write a ByteString to stdout, appending a newline byte putStrputStr ::  ByteString -> IO ()   ByteStringIO()Write a ByteString to stdout putStrputStr ::  ByteString -> IO ()&   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 ()t Y MVaraaIO()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.
pushCurrentContextpushCurrentContext :: P ()N D P() pushContextL pushContextL ::  LexContext -> Lex a ()   LexContextLexa()purplepurple :: String  String punctuate punctuate :: Doc -> [Doc] -> [Doc] b Doc[]Doc[]Doc`
punctuate p [d1, ... dn] = [d1 <> p, d2 <> p, ... dn-1 <> p, dn]
"PuncPunc :: String -> Lexeme8 % StringLexeme=Punctuation or reserved symbol, e.g. (, :: ptextptext :: String -> Doc  StringDoc4An obsolete function, now identical to text. PStrPStr :: String ->  TextDetails_ G String TextDetailsPS PS :: ForeignPtr Word8 -> Int -> Int ->  ByteString   ForeignPtrWord8IntInt ByteString progSuffix progSuffix :: LocalBuildInfo ->  PathTemplatez Y LocalBuildInfo PathTemplate/Suffix to be appended to installed executables sprogramVersionprogramVersion :: ConfiguredProgram ->  Maybe Version<  ConfiguredProgramMaybeVersion-The version of this program, if it is known. s programPath programPath :: ConfiguredProgram -> FilePath  ConfiguredProgramFilePath'The full path of a configured program. s programName programName :: Program -> Stringx d ProgramString(The simple name of the program, eg. ghc sprogramLocationprogramLocation :: ConfiguredProgram -> ProgramLocation6  ConfiguredProgramProgramLocation7Location of the program. eg. /usr/bin/ghc-6.4 sProgramLocationdata ProgramLocation Where a program was found. Also tells us whether it's specifed by user or not. This includes not just the path, but the program as well. s programId programId :: ConfiguredProgram -> String  ConfiguredProgramStringJust the name again sprogramFindVersion programFindVersion :: Program ->  Verbosity -> FilePath -> IO (Maybe Version) [ Program VerbosityFilePathIOMaybeVersionTry to find the version of the program. For many programs this is not possible or is not necessary so it's ok to return Nothing. sprogramFindLocationprogramFindLocation :: Program ->  Verbosity -> IO (Maybe FilePath)  Program VerbosityIOMaybeFilePathqA function to search for the program if it's location was not specified by the user. Usually this will just be a sProgramConfigurationdata ProgramConfiguration The configuration is a collection of information about programs. It contains information both about configured programs and also about programs that we are yet to configure. The idea is that we start from a collection of unconfigured programs and one by one we try to configure them at which point we move them into the configured collection. For unconfigured programs we record not just the Program but also any user-provided arguments and location for the program. s programArgs programArgs :: ConfiguredProgram ->  [ProgArg]  ConfiguredProgram[]ProgArgDefault command-line args for this program. These flags will appear first on the command line, so they can be overridden by subsequent flags. sProgramProgram :: String ->  Verbosity -> IO (Maybe FilePath) ->  Verbosity -> FilePath -> IO (Maybe Version) -> Program > String VerbosityIOMaybeFilePath VerbosityFilePathIOMaybeVersionProgramsProgramdata Program .Represents a program which can be configured.  progPrefix progPrefix :: LocalBuildInfo ->  PathTemplate b LocalBuildInfo PathTemplate0Prefix to be prepended to installed executables progdirprogdir :: InstallDirs dir -> dir   InstallDirsdirdirsProgArgtype ProgArg = String]  ProcessIDtype  ProcessID = CPid ProcessHandle__data ProcessHandle__ A handle to a process, which can be used to wait for termination of the process using waitForProcess. None of the process-creation functions in this library wait for termination: they all return a ProcessHandle which may be used to wait for the process later.  ProcessHandle ProcessHandle :: MVar ProcessHandle__ ->  ProcessHandle V MVarProcessHandle__ ProcessHandle ProcessHandlenewtype  ProcessHandle ProcessGroupIDtype ProcessGroupID = CPid printPackageProblemsprintPackageProblems ::  Verbosity -> PackageDescription -> IO ()   VerbosityPackageDescriptionIO() PrimTyConI  PrimTyConI :: Name -> Int -> Bool -> InfoB ( NameIntBoolInfo primHtmlChar primHtmlChar :: String -> Html  StringHtml primHtmlChar primHtmlChar :: String -> Html  StringHtml primHtmlChar primHtmlChar :: String -> Htmln ] StringHtmlprimHtmlprimHtml :: 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 -> Html  StringHtmlThis is not processed for special chars. use stringToHtml or lineToHtml instead, for user strings, because they understand special chars, like <. ~preUnreg preUnreg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfo0   UserHooksArgs RegisterFlagsIOHookedBuildInfo&Hook to run before unregister command 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 -> String p PrettyaaString<pretty-print with the default style and defaultMode. prettyHtmlFragmentprettyHtmlFragment ::  HTML html => html -> StringR 3 HTMLhtmlhtmlStringfRender 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 -> StringC $ HTMLhtmlhtmlStringfRender 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 -> String4  HTMLhtmlhtmlStringfRender 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 -> 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.  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.  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 ah jThings that can be pretty-printed, including all the syntactic objects in Language.Haskell.Syntax. ~preSDist preSDist ::  UserHooks -> Args ->  SDistFlags -> IO HookedBuildInfo T  UserHooksArgs SDistFlagsIOHookedBuildInfoHHook to run before sdist command. Second arg indicates verbosity level. ~preReg preReg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfo T  UserHooksArgs RegisterFlagsIOHookedBuildInfo$Hook to run before register command preprocessSourcespreprocessSources :: PackageDescription -> LocalBuildInfo -> Bool ->  Verbosity -> [PPSuffixHandler] -> IO () x PackageDescriptionLocalBuildInfoBool Verbosity[]PPSuffixHandlerIO()nApply preprocessors to the sources from hsSourceDirs, to obtain a Haskell source file for each module.  PreProcessor PreProcessor :: Bool -> (FilePath, FilePath) -> (FilePath, FilePath) ->  Verbosity -> IO () ->  PreProcessor` Bool(,)FilePathFilePath(,)FilePathFilePath VerbosityIO() PreProcessor PreProcessordata  PreProcessorMThe interface to a preprocessor, which may be implemented using an external program, but need not be. The arguments are the name of the input file, the name of the output file and a verbosity level. Here is a simple example that merely prepends a comment to the given source file:
ppTestHandler :: PreProcessor
ppTestHandler =
  PreProcessor {
    platformIndependent = True,
    runPreProcessor = mkSimplePreProcessor $ \inFile outFile verbosity ->
      do info verbosity (inFile++" has been preprocessed to "++outFile)
         stuff <- readFile inFile
         writeFile outFile ("-- preprocessed as a test\n\n" ++ stuff)
         return ExitSuccess
We split the input and output file names into a base directory and the rest of the file name. The input base dir is the path in the list of search dirs that this file was found in. The output base dir is the build dir where all the generated source files are put. The reason for splitting it up this way is that some pre-processors don't simply generate one output .hs file from one input file but have dependencies on other genereated files (notably c2hs, where building one .hs file may require reading other .chi files, and then compiling the .hs file may require reading a generated .h file). In these cases the generated files need to embed relative path names to each other (eg the generated .hs file mentions the .h file in the FFI imports). This path must be relative to the base directory where the genereated files are located, it cannot be relative to the top level of the build tree because the compilers do not look for .h files relative to there, ie we do not use "-I .", instead we use "-I dist/build" (or whatever dist dir has been set by the user) Most pre-processors do not care of course, so mkSimplePreProcessor and runSimplePreProcessor functions handle the simple case.  prepareTree prepareTree ::  Verbosity -> PackageDescription -> Maybe LocalBuildInfo -> FilePath -> FilePath -> [PPSuffixHandler] ->  IO FilePath=  VerbosityPackageDescriptionMaybeLocalBuildInfoFilePathFilePath[]PPSuffixHandlerIOFilePath*Prepare a directory tree of source files. prepareSnapshotTreeprepareSnapshotTree ::  Verbosity -> PackageDescription -> Maybe LocalBuildInfo -> FilePath -> FilePath -> [PPSuffixHandler] ->  CalendarTime ->  IO FilePath m  VerbosityPackageDescriptionMaybeLocalBuildInfoFilePathFilePath[]PPSuffixHandler CalendarTimeIOFilePathUPrepare a directory tree of source files for a snapshot version with the given date. ~ preMakefile  preMakefile ::  UserHooks -> Args ->  MakefileFlags -> IO HookedBuildInfo   UserHooksArgs MakefileFlagsIOHookedBuildInfoKHook to run before makefile command. Second arg indicates verbosity level. ~preInst preInst ::  UserHooks -> Args ->  InstallFlags -> IO HookedBuildInfo   UserHooksArgs InstallFlagsIOHookedBuildInfo#Hook to run before install command ~ preHscolour  preHscolour ::  UserHooks -> Args ->  HscolourFlags -> IO HookedBuildInfo   UserHooksArgs HscolourFlagsIOHookedBuildInfoKHook to run before hscolour command. Second arg indicates verbosity level. ~ preHaddock  preHaddock ::  UserHooks -> Args ->  HaddockFlags -> IO HookedBuildInfo UserHooksArgs HaddockFlagsIOHookedBuildInfoJHook to run before haddock command. Second arg indicates verbosity level.  PrefixVar PrefixVar :: PathTemplateVariablePathTemplateVariable#The $prefix path variable prefixRelativeInstallDirsprefixRelativeInstallDirs :: PackageDescription -> LocalBuildInfo -> InstallDirs (Maybe FilePath)PackageDescriptionLocalBuildInfo InstallDirsMaybeFilePath%See prefixRelativeInstallDirs prefixRelativeInstallDirs prefixRelativeInstallDirs :: PackageIdentifier ->  CompilerId -> InstallDirTemplates -> InstallDirs (Maybe FilePath) PackageIdentifier CompilerIdInstallDirTemplates InstallDirsMaybeFilePathCheck which of the paths are relative to the installation $prefix. If any of the paths are not relative, ie they are absolute paths, then it prevents us from making a relocatable package (also known as a "prefix independent" package). prefixprefix :: InstallDirs dir -> dirbF InstallDirsdirdirPrefixPrefix :: ParsecT s u m (a -> a) -> Operator s u m aParsecTsumaaOperatorsumaPrefixPrefix :: Fixity<3Fixity~preCopy preCopy ::  UserHooks -> Args ->  CopyFlags -> IO HookedBuildInfo UserHooksArgs CopyFlagsIOHookedBuildInfo Hook to run before copy command ~preConf preConf ::  UserHooks -> Args ->  ConfigFlags -> IO HookedBuildInfo UserHooksArgs ConfigFlagsIOHookedBuildInfo%Hook to run before configure command ~preClean preClean ::  UserHooks -> Args ->  CleanFlags -> IO HookedBuildInfoq UserHooksArgs CleanFlagsIOHookedBuildInfoHHook to run before clean command. Second arg indicates verbosity level. #precprec :: Prec ->  ReadPrec a ->  ReadPrec atMPrecReadPrecaReadPreca(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 = Intg~preBuild preBuild ::  UserHooks -> Args ->  BuildFlags -> IO HookedBuildInfo  UserHooksArgs BuildFlagsIOHookedBuildInfoHHook to run before build command. Second arg indicates verbosity level. prepre :: Html -> HtmlHtmlHtmlprepre :: Html -> HtmlHtmlHtmlprepre :: Html -> HtmlRCHtmlHtmlppUnlitppUnlit ::  PreProcessor PreProcessorPPSuffixHandlertype PPSuffixHandler8 = (String, BuildInfo -> LocalBuildInfo -> PreProcessor)gA preprocessor for turning non-Haskell files with the given extension into plain Haskell source files.  ppSuffixes ppSuffixes :: [PPSuffixHandler] -> [String] []PPSuffixHandler[]String?Convenience function; get the suffixes of these preprocessors.  PPSemiColon PPSemiColon :: PPLayoutPPLayoutclassical layout made explicit pprPatpprPat ::  Precedence -> Pat -> Doc' PrecedencePatDoc pprParendType pprParendType :: Type -> DocyTypeDocpprLitpprLit ::  Precedence -> Lit -> Doc PrecedenceLitDocpprintpprint ::  Ppr a => a -> String^FPpraaStringpprExppprExp ::  Precedence -> Exp -> Doc PrecedenceExpDocppr_listppr_list ::  Ppr a => [a] -> Doc; Ppra[]aDocpprppr ::  Ppr a => a -> DocPpraaDocPprclass Ppr a PPOffsideRule PPOffsideRule :: PPLayout  PPLayoutclassical layout  PPNoLayout PPNoLayout :: PPLayoutp e PPLayouteverything 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 -> PPHsMode">" IndentIndentIndentIndentIndentIndentBoolPPLayoutBoolBoolPPHsModePPHsModedata PPHsMode"tPretty-printing parameters. Note: the onsideIndent must be positive and less than all other indents. ppHsc2hsppHsc2hs ::  BuildInfo -> LocalBuildInfo ->  PreProcessor## BuildInfoLocalBuildInfo PreProcessorppHappyppHappy ::  BuildInfo -> LocalBuildInfo ->  PreProcessoru$I$ BuildInfoLocalBuildInfo PreProcessor ppGreenCard ppGreenCard ::  BuildInfo -> LocalBuildInfo ->  PreProcessor%$ BuildInfoLocalBuildInfo PreProcessorppCpp' ppCpp' :: [String] ->  BuildInfo -> LocalBuildInfo ->  PreProcessor%%[]String BuildInfoLocalBuildInfo PreProcessorppCppppCpp ::  BuildInfo -> LocalBuildInfo ->  PreProcessorg&;& BuildInfoLocalBuildInfo PreProcessorppC2hsppC2hs ::  BuildInfo -> LocalBuildInfo ->  PreProcessor&& BuildInfoLocalBuildInfo PreProcessorppAlexppAlex ::  BuildInfo -> LocalBuildInfo ->  PreProcessor'k' BuildInfoLocalBuildInfo PreProcessor~ postUnreg postUnreg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()(I( UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()%Hook to run after unregister command ~ postSDist postSDist ::  UserHooks -> Args ->  SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ())t) UserHooksArgs SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after sdist command. Second arg indicates verbosity level. ~postRegpostReg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()+* UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()#Hook to run after register command ~ postMakefile postMakefile ::  UserHooks -> Args ->  MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()=,+ UserHooksArgs MakefileFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after makefile command. Second arg indicates verbosity level. ~postInstpostInst ::  UserHooks -> Args ->  InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()-6- UserHooksArgs InstallFlagsPackageDescriptionLocalBuildInfoIO()cHook to run after install command. postInst should be run on the target, not on the build machine. ~ postHscolour postHscolour ::  UserHooks -> Args ->  HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO ().. UserHooksArgs HscolourFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after hscolour command. Second arg indicates verbosity level. ~ postHaddock postHaddock ::  UserHooks -> Args ->  HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()A0/ UserHooksArgs HaddockFlagsPackageDescriptionLocalBuildInfoIO()IHook to run after haddock command. Second arg indicates verbosity level. PostfixPostfix :: ParsecT s u m (a -> a) -> Operator s u m a&10ParsecTsumaaOperatorsuma~postCopypostCopy ::  UserHooks -> Args ->  CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()21 UserHooksArgs CopyFlagsPackageDescriptionLocalBuildInfoIO()Hook to run after copy command ~postConfpostConf ::  UserHooks -> Args ->  ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ();32 UserHooksArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()$Hook to run after configure command ~ postClean postClean ::  UserHooks -> Args ->  CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()k44 UserHooksArgs CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after clean command. Second arg indicates verbosity level. ~ postBuild postBuild ::  UserHooks -> Args ->  BuildFlags -> PackageDescription -> LocalBuildInfo -> IO ()5a5 UserHooksArgs BuildFlagsPackageDescriptionLocalBuildInfoIO()GHook to run after build command. Second arg indicates verbosity level.  popContextL popContextL :: String -> Lex a ()d6K6StringLexa() popContext popContext :: P ()66P()OpooledReallocBytes pooledReallocBytes :: Pool -> Ptr a -> Int ->  IO (Ptr a)V7.7PoolPtraIntIOPtraFAdjust the storage area for an element in the pool to the given size. OpooledReallocArray0 pooledReallocArray0 :: Storable a => Pool -> Ptr a -> Int ->  IO (Ptr a)f8/8StorableaPoolPtraIntIOPtraBAdjust the size of an array with an end marker in the given pool. OpooledReallocArray pooledReallocArray :: Storable a => Pool -> Ptr a -> Int ->  IO (Ptr a)p999StorableaPoolPtraIntIOPtra/Adjust the size of an array in the given pool. O pooledRealloc pooledRealloc :: Storable a => Pool -> Ptr a ->  IO (Ptr a)I::StorableaPoolPtraIOPtra[Adjust the storage area for an element in the pool to the given size of the required type. OpooledNewArray0 pooledNewArray0 :: Storable a => Pool -> a -> [a] ->  IO (Ptr a)_;+;StorableaPoola[]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. OpooledNewArraypooledNewArray :: Storable a => Pool -> [a] ->  IO (Ptr a)<h<StorableaPool[]aIOPtrafAllocate consecutive storage for a list of values in the given pool and marshal these values into it. O pooledNew pooledNew :: Storable a => Pool -> a ->  IO (Ptr a)=k=StorableaPoolaIOPtraXAllocate storage for a value in the given pool and marshal the value into this storage. OpooledMallocBytespooledMallocBytes :: Pool -> Int ->  IO (Ptr a)|>^>PoolIntIOPtra;Allocate the given number of bytes of storage in the pool. OpooledMallocArray0pooledMallocArray0 :: Storable a => Pool -> Int ->  IO (Ptr a)d?7?StorableaPoolIntIOPtraAllocate 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. OpooledMallocArraypooledMallocArray :: Storable a => Pool -> Int ->  IO (Ptr a)@x@StorableaPoolIntIOPtraRAllocate storage for the given number of elements of a storable type in the pool. O pooledMalloc pooledMalloc :: Storable a => Pool ->  IO (Ptr a)A\AStorableaPoolIOPtraAllocate 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. OPooldata PoollBA memory pool. jPolymorphicComponentsPolymorphicComponents ::  ExtensionBB Extension pokeArray0  pokeArray0 :: Storable a => a -> Ptr a -> [a] -> IO ()CXCStorableaaPtra[]aIO()aWrite the list elements consecutive into memory and terminate them with the given marker element  pokeArray pokeArray :: Storable a => Ptr a -> [a] -> IO ()DUDStorableaPtra[]aIO()0Write the list elements consecutive into memory platformIndependentplatformIndependent ::  PreProcessor -> Bool2EE PreProcessorBool PkgVerVar PkgVerVar :: PathTemplateVariableE}EPathTemplateVariable4The $version package version path variable  PkgNameVar PkgNameVar :: PathTemplateVariable,FFPathTemplateVariable-The $pkg package name path variable PkgIdVarPkgIdVar :: PathTemplateVariableFFPathTemplateVariableBThe $pkgid package Id path variable, eg foo-1.0  pkgDescrFile pkgDescrFile :: LocalBuildInfo -> Maybe FilePathG`GLocalBuildInfoMaybeFilePath6the filename containing the .cabal file, if available spkgConfigProgrampkgConfigProgram :: ProgramHHProgrampicosecondsToDiffTimepicosecondsToDiffTime :: Integer -> DiffTimeH|HIntegerDiffTime7Create a DiffTime from a number of picoseconds. PHANDLEtype PHANDLE = Word32I#pfailpfail ::  ReadPrec aOI?IReadPrecaAlways fails.  pfailpfail :: ReadP aIIReadPaAlways fails. permutepermute :: Stream s Identity tok => StreamPermParser s st a ->  Parsec s st a{J*JStreamsIdentitytokStreamPermParsersstaParsecsstaThe 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)
RPermutePermute ::  ArgOrder aLLArgOrdera+freely intersperse options and non-options  PermParsertype  PermParser tok st a = StreamPermParser String st a+M?Provided for backwards compatibility. The tok type is ignored. permissionErrorTypepermissionErrorType ::  IOErrorTypeMM 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))NN AssertionIOMaybe(,)BoolString performTest performTest :: ReportStart us -> ReportProblem us -> ReportProblem us -> us -> Test -> IO (Counts, us)PO ReportStartus ReportProblemus ReportProblemususTestIO(,)CountsuspeekCWStringLenpeekCWStringLen ::  CWStringLen ->  IO StringPvP CWStringLenIOStringDMarshal a C wide string with explicit length into a Haskell string.  peekCWString peekCWString :: CWString ->  IO StringMQ2QCWStringIOString>Marshal a NUL terminated C wide string into a Haskell string. peekCStringLenpeekCStringLen ::  CStringLen ->  IO StringRQ CStringLenIOString?Marshal a C string with explicit length into a Haskell string.  peekCString peekCString :: CString ->  IO StringRRCStringIOString9Marshal a NUL terminated C string into a Haskell string. peekCAStringLenpeekCAStringLen ::  CStringLen ->  IO StringpSSS CStringLenIOString?Marshal a C string with explicit length into a Haskell string.  peekCAString peekCAString :: CString ->  IO String"TTCStringIOString9Marshal a NUL terminated C string into a Haskell string.  peekArray0 peekArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO [a]UTStorableaEqaaPtraIO[]aHConvert an array terminated by the given end marker into a Haskell list  peekArray peekArray :: Storable a => Int -> Ptr a -> IO [a]UUStorableaIntPtraIO[]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. jPatternSignaturesPatternSignatures ::  Extension"WW Extensionj PatternGuards PatternGuards ::  ExtensionvWjW ExtensionPatQtype PatQ = Q PatWPathTemplateVariabledata PathTemplateVariableW PathTemplatedata  PathTemplate4XnAn abstract path, posibly containing variables that need to be substituted for to get a real FilePath. pathSeparatorspathSeparators :: [Char]XX[]CharThe list of all possible separators.
Windows: pathSeparators == ['\\', '/']
Posix:   pathSeparators == ['/']
pathSeparator `elem` pathSeparators
pathSeparatorspathSeparators :: [Char]YY[]CharThe list of all possible separators.
Windows: pathSeparators == ['\\', '/']
Posix:   pathSeparators == ['/']
pathSeparator `elem` pathSeparators
 pathSeparator pathSeparator :: CharZZCharThe 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
 pathSeparator pathSeparator :: Char\ \CharThe 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 -> PathV]F]StatePathPathtype Path = [Node]]patGEpatGE :: [StmtQ] -> ExpQ -> Q (Guard, Exp)^][]StmtQExpQQ(,)GuardExppatGpatG :: [StmtQ] -> GuardQy^a^[]StmtQGuardQPatGPatG :: [Stmt] -> Guard^^[]StmtGuardPatdata Pat^passwordpassword :: String -> HtmlY_H_StringHtmlpasswordpassword :: String -> Html__StringHtmlpasswordpassword :: String -> Html``StringHtml parZipWith  parZipWith ::  Strategy c ->  (a -> b -> c) -> [a] -> [b] -> [c]``Strategycabc[]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)aaStrategyaStrategybStrategycStrategy(,,)abc@Apply three strategies to the elements of a triple in parallel.  partition partition :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)bbWord8Bool 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)
 parseTime  parseTime :: ParseTime t =>  TimeLocale -> String -> String -> Maybe tdd ParseTimet TimeLocaleStringStringMaybet{Parses a time value given a format string. Supports the same %-codes as formatTime. Leading and trailing whitespace is accepted. Some variations in the input are accepted:
  • %z accepts any of -HHMM or -HH:MM.
  • %Z accepts any string of upper case letters, or any of the formats accepted by %z.
 ParseTimeclass  ParseTime tofNThe 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 ()g@gStreamsIdentitytShowaParsecs()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 ahzhMonadmParsecTsumaparserZero 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 a!jiMonadmaParsecTsuma parserPlus parserPlus ::  Monad m => ParsecT s u m a -> ParsecT s u m a -> ParsecT s u m ajjMonadmParsecTsumaParsecTsumaParsecTsuma parserFail parserFail ::  Monad m => String -> ParsecT s u m akckMonadmStringParsecTsuma ParseResultdata  ParseResult akThe result of a parse.  ParseResultdata  ParseResult a lThe result of a parse.  parserBind parserBind ::  Monad m => ParsecT s u m a -> (a -> ParsecT s u m b) -> ParsecT s u m b mlMonadmParsecTsumaaParsecTsumbParsecTsumbParsertype Parser = Parsec String ()emParsertype Parser = Parsec ByteString ()mParseOkParseOk :: a ->  ParseResult anma ParseResulta'The parse succeeded, yielding a value. ParseOkParseOk :: a ->  ParseResult anna ParseResulta'The parse succeeded, yielding a value. parseModuleWithModeparseModuleWithMode ::  ParseMode -> String -> ParseResult HsModule{oLo ParseModeString ParseResultHsModuleFParse of a string, which should contain a complete Haskell 98 module.  parseModule parseModule :: String -> ParseResult HsModuleFp"pString ParseResultHsModuleFParse of a string, which should contain a complete Haskell 98 module.  ParseMode ParseMode :: String ->  ParseModeppString ParseMode ParseModedata  ParseMode*qbStatic parameters governing a parse. More to come later, e.g. literate mode, language extensions.  ParseMode ParseMode :: String ->  ParseModeqqString ParseMode ParseModedata  ParseMode*rbStatic parameters governing a parse. More to come later, e.g. literate mode, language extensions.  parseFromFile parseFromFile :: Parser a -> String -> IO (Either ParseError a)@s sParseraStringIOEither 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)unuParseraStringIOEither 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 -> Stringww ParseModeString'original name of the file being parsed  parseFilename parseFilename ::  ParseMode -> Stringrx\x ParseModeString'original name of the file being parsed  ParseFailed ParseFailed :: SrcLoc -> String ->  ParseResult a*yySrcLocString ParseResultaJThe parse failed at the specified source location, with an error message.  ParseFailed ParseFailed :: SrcLoc -> String ->  ParseResult azySrcLocString ParseResultaJThe parse failed at the specified source location, with an error message.  ParseErrordata  ParseErrorz>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 aG~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 bMonadmabParsecTsumaParsecTsumbParsectype Parsec s u = ParsecT s u Identityu ParseArgs ParseArgs :: ShowOrParseArgsq_ShowOrParseArgsparse 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]] -> StmtQy\[][]StmtQStmtQParSParS :: [[Stmt]] -> Stmtك[][]StmtStmtparPairparPair ::  Strategy a ->  Strategy b -> Strategy (a, b)GStrategyaStrategybStrategy(,)ab<Apply two strategies to the elements of a pair in parallel. parMap parMap ::  Strategy b -> (a -> b) -> [a] -> [b]V*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]sGIntStrategyaStrategy[]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]·IntegralbbStrategyaStrategy[]aKApplies a strategy to the first n elements of a list in parallel.  parListChunk parListChunk :: Int ->  Strategy a ->  Strategy [a]IntStrategyaStrategy[]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]?StrategyaStrategy[]a;Applies a strategy to every element of a list in parallel.  parFlatMap  parFlatMap ::  Strategy [b] ->  (a -> [b]) -> [a] -> [b]+Strategy[]ba[]b[]a[]bxUses parMap to apply a list-valued function to each element of a list in parallel, and concatenates the results. parensparens :: Doc -> DocDocDoc Wrap document in (...) parensparens :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m aڌGenTokenParsersumParsecTsumaParsecTsumanLexeme parser parens p parses p enclosed in parenthesis, returning the value of p.  parBuffer  parBuffer :: Int ->  Strategy a -> [a] -> [a]ߍIntStrategya[]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)3IxbStrategyaStrategyArrayba:Apply a strategy to all elements of an array in parallel. paramparam :: HtmlHtmlparamparam :: HtmlڐHtmlparamparam :: HtmlHtmljParallelListCompParallelListComp ::  Extensionui Extension paragraph paragraph :: Html -> HtmlϑHtmlHtml paragraph paragraph :: Html -> Html)HtmlHtml paragraph paragraph :: Html -> HtmltHtmlHtmlPageModePageMode :: ModeÒModeNormal packCStringLenpackCStringLen ::  CStringLen ->  IO ByteStringO. 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.  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. z PackageIndexdata Package pkg =>  PackageIndex pkgThe collection of information about packages from one or more PackageDBs. It can be searched effeciently by package name and version. {PackageDistSuspiciousPackageDistSuspicious :: String ->  PackageCheck& String PackageCheck!An issue that might not be a problem for the package author but might be annoying or determental when the package is distributed to users. We should encourage distributed packages to be free from these issues, but occasionally there are justifiable reasons so we cannot ban them entirely. {PackageDistInexcusablePackageDistInexcusable :: String ->  PackageCheckϘString PackageCheckAn issue that is ok in the author's environment but is almost certain to be a portability problem for other environments. We can quite legitimately refuse to publicly distribute packages with these problems.  packageDeps packageDeps :: LocalBuildInfo -> [PackageIdentifier]3LocalBuildInfo[]PackageIdentifierWhich packages we depend on, exactly. The PackageDescription specifies a set of build dependencies that must be satisfied in terms of version ranges. This field fixes those dependencies to the specific versions available on this machine for this compiler. } PackageDBdata  PackageDBwnSome compilers have a notion of a database of available packages. For some there is just one global db of packages, other compilers support a per-user or an arbitrary db specified at some location in the file system. This can be used to build isloated environments of packages, for example to build a collection of related packages without installing them globally. { PackageCheckdata  PackageCheck!,Results of some kind of failed package check. There are a range of severities, from merely dubious to totally insane. All of them come with a human readable explanation. In future we may augment them with more machine readable explanations, for example to help an IDE suggest automatic corrections. {PackageBuildWarningPackageBuildWarning :: String ->  PackageCheckϞString PackageCheckA problem that is likely to affect building the package, or an issue that we'd like every package author to be aware of, even if the package is never distributed. {PackageBuildImpossiblePackageBuildImpossible :: String ->  PackageCheckString PackageCheckThis package description is no good. There's no way it's going to build sensibly. This should give an error at configure time. packpack :: [Word8] ->  ByteStringߠà[]Word8 ByteString:O(n) Convert a '[Word8]' into a ByteString. packpack :: String ->  ByteStringybString ByteStringO(n) Convert a String into a ByteString For applications with large numbers of string literals, pack can be a bottleneck. pp :: Html -> HtmlSDHtmlHtmlSame as paragraph. pp :: Html -> HtmlHtmlHtmlSame as paragraph. pp :: Html -> Html HtmlHtmlSame as paragraph. Pdata P a]Monad for parsing jOverloadedStringsOverloadedStrings ::  Extensionˣ ExtensionjOverlappingInstancesOverlappingInstances ::  Extension-! ExtensionorElseorElse :: Maybe a -> Maybe a -> Maybe aMaybeaMaybeaMaybeaLeft-biased choice on maybies ordListordList ::  HTML a => [a] -> Html= HTMLa[]aHtmlordListordList ::  HTML a => [a] -> HtmlHTMLa[]aHtmlordListordList ::  HTML a => [a] -> HtmlHTMLa[]aHtmlOrdGAMMAtype OrdGAMMA = Poly OrdGAMMA_^OrdBETAtype OrdBETA = Poly OrdBETA_OrdALPHAtype OrdALPHA = Poly OrdALPHA_moptionVerbosityoptionVerbosity :: (flags -> Flag Verbosity) -> "(Flag Verbosity -> flags -> flags) -> OptionField flagsflagsFlag VerbosityFlag Verbosityflagsflags OptionFieldflagsu optionName optionName ::  OptionField a -> NameY> OptionFieldaName 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. u OptionField OptionField :: Name ->  [OptDescr a] ->  OptionField aQName[]OptDescra OptionFieldau OptionFielddata  OptionField a?We usually have a datatype for storing configuration values, where every field stores a configuration option, and the user sets the value either via command line flags or a configuration file. An individual OptionField models such a field, and we usually build a list of options associated to a configuration datatype. u optionDescr optionDescr ::  OptionField a ->  [OptDescr a]\ OptionFielda[]OptDescra optionaloptional :: ReadP a -> ReadP ()֬ReadPaReadP()Qoptional p optionally parses p and always returns (). optionaloptional :: Stream s m t => ParsecT s u m a -> ParsecT s u m ()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 :: Html -> HtmlHtmlHtmloptionoption :: Html -> HtmlZKHtmlHtmloptionoption :: Html -> HtmlHtmlHtml optionoption :: a -> ReadP a -> ReadP a$aReadPaReadPacoption 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 aFStreamsmtaParsecTsumaParsecTsuma2option 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) 
                        })
uoptionoption :: SFlags -> LFlags ->  Description -> get -> set -> MkOptDescr get set a ->  OptionField a/SFlagsLFlags Descriptiongetset MkOptDescrgetseta OptionFieldaxCreate an option taking a single OptDescr. No explicit Name is given for the Option, the name is the first LFlag given. ROption Option :: [Char] -> [String] ->  ArgDescr a -> String ->  OptDescr aʴ[]Char[]StringArgDescraStringOptDescra}OptimisationLeveldata OptimisationLevelSome compilers support optimising. Some have different levels. For compliers that do not the level is just capped to the level they do support. optgroupoptgroup :: Html -> HtmlHtmlHtmloptgroupoptgroup :: Html -> HtmlPAHtmlHtmloptgroupoptgroup :: Html -> HtmlHtmlHtmluOptFlagstype OptFlags = (SFlags, LFlags)ROptDescrdata OptDescr a'Each 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
uOptDescrdata OptDescr a`aAn OptionField takes one or more OptDescrs, describing the command line interface for the field. uoptArg' optArg' ::  Monoid b => ArgPlaceHolder -> (Maybe String -> b) -> (b -> [Maybe String]) -> #MkOptDescr (a -> b) (b -> a -> a) a}MonoidbArgPlaceHolderMaybeStringbb[]MaybeString MkOptDescrabbaaa*(String -> a) variant of optArg uoptArg optArg ::  Monoid b => ArgPlaceHolder -> ReadE b -> b -> (b -> [Maybe String]) -> #MkOptDescr (a -> b) (b -> a -> a) aGغMonoidbArgPlaceHolderReadEbbb[]MaybeString MkOptDescrabbaaaDCreate a string-valued command line interface with a default value. ROptArg OptArg ::  Maybe String -> a -> String ->  ArgDescr a+MaybeStringaStringArgDescraoptional argument uOptArgOptArg ::  Description -> OptFlags -> ArgPlaceHolder -> ReadE (a -> a) -> a -> a -> a -> [Maybe String] ->  OptDescr a  DescriptionOptFlagsArgPlaceHolderReadEaaaaa[]MaybeStringOptDescraopStartopStart :: GenLanguageDef s u m -> ParsecT s u m CharGenLanguageDefsumParsecTsumCharzThis parser should accept any start characters of operators. For example oneOf ":!#$%&*+./<=>?@\\^|-~" opLetteropLetter :: GenLanguageDef s u m -> ParsecT s u m Char8GenLanguageDefsumParsecTsumCharThis 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]]~An 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 StringGenTokenParsersumParsecTsumString_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 aThis 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.  OpenHandle OpenHandle :: PHANDLE -> ProcessHandle__PHANDLEProcessHandle__ onsideIndent onsideIndent :: PPHsMode -> Indent=(PPHsModeIndentIindentation added for continuation lines that would otherwise be offside oneOfoneOf :: Stream s m Char => [Char] -> ParsecT s u m Char+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"
 OneLineMode OneLineMode :: Mode4-ModeAll on one line oliveolive :: StringyStringolistolist :: Html -> HtmlHtmlHtmlolistolist :: Html -> Html&HtmlHtmlolistolist :: Html -> HtmlxiHtmlHtmlOk Ok :: a ->  State s u ->  ParseError ->  Reply s u aaStatesu ParseErrorReplysuaoctDigitoctDigit :: Stream s m Char => ParsecT s u m CharqStreamsmCharParsecTsumCharWParses 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.  objExtension objExtension :: StringjaStringExtension for object files. For GHC and NHC the extension is "o". Hugs uses either "o" or "obj" depending on the used C compiler. objectobject :: Html -> Html[LHtmlHtmlobjectobject :: Html -> HtmlHtmlHtmlobjectobject :: Html -> HtmlHtmlHtmlo_WRONLYo_WRONLY :: CIntC<CInto_TRUNCo_TRUNC :: CIntzCInto_RDWRo_RDWR :: CIntCInto_RDONLYo_RDONLY :: CIntCInt o_NONBLOCK o_NONBLOCK :: CIntA:CInto_NOCTTYo_NOCTTY :: CIntzCInto_EXCLo_EXCL :: CIntCInto_CREATo_CREAT :: CIntCInto_BINARYo_BINARY :: CInt;4CInto_APPENDo_APPEND :: CInt{tCInt] numElements numElements :: (IArray a e, Ix i) => a i e -> Int IArrayaeIxiaieIntnullForeignPtrnullForeignPtr :: ForeignPtr Word8s] ForeignPtrWord86The 0 pointer. Used to indicate the empty Bytestring. nullnull ::  ByteString -> Bool ByteStringBool0O(1) Test whether a ByteString is empty. nullnull ::  ByteString -> Bool| ByteStringBool0O(1) Test whether a ByteString is empty. nowrapnowrap :: HtmlAttrHtmlAttr notStrict notStrict :: Q StrictRDQStrict NotStrict NotStrict :: StrictStrictvnoticenotice ::  Verbosity -> String -> IO () VerbosityStringIO()Useful status messages. We display these at the normal verbosity level. This is for the ordinary helpful status messages that users see. Just enough information to know that things are working but not floods of detail.  notFollowedBy notFollowedBy :: (Stream s m t, Show t) => ParsecT s u m t -> ParsecT s u m ()}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
                     })
notElemnotElem :: Word8 ->  ByteString -> Bool~bWord8 ByteStringBool9O(n) notElem is the inverse of elem notElemnotElem :: Char ->  ByteString -> Bool/Char ByteStringBool9O(n) notElem is the inverse of elem noshadenoshade :: HtmlAttrHtmlAttrnoscriptnoscript :: Html -> HtmlHtmlHtmlnoscriptnoscript :: Html -> Html^OHtmlHtmlnoscriptnoscript :: Html -> HtmlHtmlHtml}NormalOptimisationNormalOptimisation :: OptimisationLevel$OptimisationLevel normalise normalise :: FilePath -> FilePathwFilePathFilePathvNormalise 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 normalise :: FilePath -> FilePathnWFilePathFilePathvNormalise 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"
normalGEnormalGE :: ExpQ -> ExpQ -> Q (Guard, Exp)nGExpQExpQQ(,)GuardExpnormalGnormalG :: ExpQ -> GuardQExpQGuardQNormalGNormalG :: Exp -> GuardExpGuardnormalCnormalC :: Name ->  [StrictTypeQ] -> ConQ~Name[] StrictTypeQConQNormalCNormalC :: Name ->  [StrictType] -> ConName[] StrictTypeConnormalBnormalB :: ExpQ -> BodyQvfExpQBodyQNormalBNormalB :: Exp -> BodyExpBodynoresizenoresize :: HtmlAttrHtmlAttrnoresizenoresize :: HtmlAttrZOHtmlAttrNoRepNoRep :: DataRepDataRep}NoOptimisationNoOptimisation :: OptimisationLevelOptimisationLevelnoneOfnoneOf :: Stream s m Char => [Char] -> ParsecT s u m CharhStreamsmChar[]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"
zNoneNone :: SearchResult a SearchResultajNoMonoPatBindsNoMonoPatBinds ::  Extension  ExtensionjNoMonomorphismRestrictionNoMonomorphismRestriction ::  Extension ExtensionNominalDiffTimedata NominalDiffTimeHThis is a length of time, as measured by UTC. Conversion functions will treat it as seconds. It has an accuracy 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. NoLayoutNoLayout ::  LexContextbU LexContextjNoImplicitPreludeNoImplicitPrelude ::  Extension ExtensionnoHtmlnoHtml :: HtmlHtmlAn empty piece of HTML. noHtmlnoHtml :: HtmlNGHtmlAn empty piece of HTML. noHtmlnoHtml :: HtmlHtmlAn empty piece of HTML. nohrefnohref :: HtmlAttrHtmlAttrnohrefnohref :: HtmlAttrB7HtmlAttrnohrefnohref :: HtmlAttr{HtmlAttrnoframesnoframes :: Html -> HtmlHtmlHtmlnoframesnoframes :: Html -> Html6'HtmlHtmlmNoFlagNoFlag :: Flag aymFlagau noExtraFlags noExtraFlags :: [String] -> IO ()[]StringIO()Utility function, many commands do not accept additional flags. This action fails with a helpful error message if the user supplies any extra. Nodedata Nodem NoCopyDest NoCopyDest :: CopyDestCopyDest NoCopyDest NoCopyDest :: CopyDest=2CopyDestnoBindSnoBindS :: ExpQ -> StmtQExpQStmtQNoBindSNoBindS :: Exp -> StmtExpStmtunoArgnoArg :: (Eq b, Monoid b) => b -> #MkOptDescr (a -> b) (b -> a -> a) a\EqbMonoidbb MkOptDescrabbaaaRNoArgNoArg :: a ->  ArgDescr aaArgDescrano argument expected  no_of_tests no_of_tests ::  TestOptions -> Intva TestOptionsIntnumber of tests to run. s nhcProgram nhcProgram :: ProgramProgramNFDataclass NFData a newtypeDnewtypeD :: CxtQ -> Name -> [Name] -> ConQ -> [Name] -> DecQCxtQName[]NameConQ[]NameDecQNewtypeDNewtypeD :: Cxt -> Name -> [Name] -> Con -> [Name] -> DecUCxtName[]NameCon[]NameDecFnewSTRefnewSTRef :: a -> ST s (STRef s a)aSTsSTRefsa1 newSampleVar newSampleVar :: a -> IO (SampleVar a)kOaIO SampleVara0Build a SampleVar with an initial value. 0newQSemNnewQSemN :: Int -> IO QSemNIntIOQSemN;Build a new QSemN with a supplied initial quantity. /newQSemnewQSem :: Int -> IO QSemIntIOQSemBuild a new QSem newPos newPos ::  SourceName -> Line -> Column ->  SourcePosF SourceNameLineColumn SourcePosYCreate a new SourcePos with the given source name, line number and column number. OnewPoolnewPool :: IO PoolIOPoolAllocate a fresh memory pool. newNamenewName :: String -> Q NameeOStringQName-newMVarnewMVar :: a ->  IO (MVar a)aIOMVara9Create an MVar which contains the supplied value. a 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. ] 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 CharCStreamsmCharParsecTsumChar@Parses a newline character ('\n'). Returns a newline character. newErrorUnknownnewErrorUnknown ::  SourcePos ->  ParseError SourcePos ParseErrornewErrorMessagenewErrorMessage :: Message ->  SourcePos ->  ParseErrortMessage SourcePos ParseError1newEmptySampleVarnewEmptySampleVar :: IO (SampleVar a)IO SampleVara%Build a new, empty, SampleVar - newEmptyMVar newEmptyMVar ::  IO (MVar a)rIOMVara0Create an MVar which is initially empty. ^ newDiffArray newDiffArray :: (MArray a e IO, Ix i) => (i, i) ->  [(Int, e)] -> IO (IOToDiffArray a i e)JMArrayaeIOIxi(,)ii[](,)InteIO IOToDiffArrayaienewCWStringLennewCWStringLen :: 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 CWStringStringIOCWString.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.
.newChannewChan ::  IO (Chan a)E3IOChana1Build and returns a new instance of Chan. newCAStringLennewCAStringLen :: String ->  IO CStringLenStringIO 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 CStringjPStringIOCString$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.
a newArray_ newArray_ :: (MArray a e m, Ix i) => (i, i) ->  m (a i e)4MArrayaemIxi(,)iimaieBuilds a new array, with every element initialised to an undefined value. In a monadic context in which operations must be deterministic (e.g. the ST monad), the array elements are initialised to a fixed but undefined value, such as zero. a newArray_ newArray_ :: (MArray a e m, Ix i) => (i, i) ->  m (a i e)MArrayaemIxi(,)iimaie] newArray_ newArray_ :: (MArray a e m, Ix i) => (i, i) ->  m (a i e)o 3 MArrayaemIxi(,)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). anewArraynewArray :: (MArray a e m, Ix i) => (i, i) -> e ->  m (a i e)t 5 MArrayaemIxi(,)iiemaieJBuilds a new array, with every element initialised to the supplied value. anewArraynewArray :: (MArray a e m, Ix i) => (i, i) -> e ->  m (a i e)r 3 MArrayaemIxi(,)iiemaie]newArraynewArray :: (MArray a e m, Ix i) => (i, i) -> e ->  m (a i e)& MArrayaemIxi(,)iiemaiePnewnew :: Storable a => a ->  IO (Ptr a)vStorableaaIOPtra}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 -> Bool}GenLanguageDefsumBoolCSet to True if the language supports nested block comments. nestnest :: Int -> Doc -> DocD2IntDocDocNest (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 :: StringMDStringnaturalOrFloatnaturalOrFloat :: GenTokenParser s u m -> %ParsecT s u m (Either Integer Double) 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 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 String@&NameMaybeStringjNamedFieldPunsNamedFieldPuns ::  Extension ExtensionnameBasenameBase :: Name -> StringNameStringnamename :: String -> HtmlAttrN9StringHtmlAttrnamename :: String -> HtmlAttrStringHtmlAttrnamename :: String -> HtmlAttrStringHtmlAttrNamedata Name2uNametype Name = Stringi-MVardata MVar aAn 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 StringCharBoolReadPStringBParses the first one or more characters satisfying the predicate.  munchmunch :: (Char -> Bool) ->  ReadP String{YCharBoolReadPStringCParses the first zero or more characters satisfying the predicate. multiplemultiple :: HtmlAttrHtmlAttrmultiplemultiple :: HtmlAttrNCHtmlAttrmultiplemultiple :: HtmlAttrHtmlAttrjMultiParamTypeClassesMultiParamTypeClasses ::  Extension Extensionu multiOption  multiOption :: Name -> get -> set -> [get -> set -> OptDescr a] ->  OptionField aNamegetset[]getsetOptDescra OptionFieldaCreate an option taking several OptDescrs. You will have to give the flags and description individually to the OptDescr constructor. P 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 st"" TokenParserst#A lexer for the mondrian language.  MonadTransclass  MonadTrans t"MonadIOclass  Monad m => MonadIO m3#,MonadFixclass  Monad m => MonadFix mu#Monads 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. *Monadclass 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. ModuleModule :: String -> Module**StringModuleModulenewtype Module*The name of a Haskell module.  ModJulianDate ModJulianDate :: Rational ->  UniversalTimej+N+Rational UniversalTimeF modifySTRef modifySTRef ::  STRef s a -> (a -> a) -> ST s ()++STRefsaaaSTs() modifyState modifyState ::  Monad m => (u -> u) -> ParsecT s u m (),f,MonadmuuParsecTsum() 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 ()1. .MVaraaIOaIO()- modifyMVar modifyMVar :: MVar a -> (a -> IO (a, b)) -> IO b..MVaraaIO(,)abIOb modifyIOError modifyIOError :: (IOError -> IOError) -> IO a -> IO ag/>/IOErrorIOErrorIOaIOaVCatch any IOError that occurs in the computation and throw a modified version. ModifiedJulianDayModifiedJulianDay :: Integer -> Day+00IntegerDaymodemode :: Style -> Mode}0m0StyleModeThe rendering mode Modedata Mode0Rendering mode. Y mkWeakPtr mkWeakPtr :: k ->  Maybe (IO ()) ->  IO (Weak k)^141kMaybeIO()IOWeakkA specialised version of mkWeak, where the key and the value are the same object:
mkWeakPtr key finalizer = mkWeak key key finalizer
Y mkWeakPair  mkWeakPair :: k -> v ->  Maybe (IO ()) -> IO (Weak (k, v))2t2kvMaybeIO()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. YmkWeak mkWeak :: k -> v ->  Maybe (IO ()) ->  IO (Weak v)u4H4kvMaybeIO()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 -> a5p5TypeableaTypeablebbbaa\Make a generic transformation; start from a type-specific case; preserve the term otherwise  mkStringType mkStringType :: String -> DataTypeg6R6StringDataType"Constructs the String type mkStringConstrmkStringConstr :: DataType -> String -> Constr76DataTypeStringConstrmkSimplePreProcessor mkSimplePreProcessor :: ,(FilePath -> FilePath -> Verbosity -> IO ()) -> (FilePath, FilePath) -> (FilePath, FilePath) ->  Verbosity -> IO ()k87FilePathFilePath VerbosityIO()(,)FilePathFilePath(,)FilePathFilePath VerbosityIO()mkSharedLibNamemkSharedLibName :: PackageIdentifier ->  CompilerId -> String98PackageIdentifier CompilerIdStringmkRecConstrOrUpdatemkRecConstrOrUpdate :: HsExp -> [HsFieldUpdate] -> P HsExp99HsExp[] HsFieldUpdatePHsExpmkRmkR :: )(MonadPlus m, Typeable a, Typeable b) => m b -> m aa: : 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 -> rl;:;TypeableaTypeablebrbrarSMake a generic query; start from a type-specific case; return a constant otherwise  mkProfLibName mkProfLibName :: PackageIdentifier -> String?<!<PackageIdentifierStringmkProcessHandlemkProcessHandle :: PHANDLE -> IO ProcessHandle<<PHANDLEIO ProcessHandleu MkOptDescrtype  MkOptDescr get set a> = SFlags -> LFlags -> Description -> get -> set -> OptDescr aH= mkNorepType mkNorepType :: String -> DataType==StringDataType;Constructs a non-representation for a non-presentable type mkNamemkName :: String -> NameE>4>StringNamemkMpmkMp :: )(MonadPlus m, Typeable a, Typeable b) =>  (b -> m b) -> a -> m a ?> 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 a:@?MonadmTypeableaTypeablebbmbamacMake a generic monadic transformation; start from a type-specific case; resort to return otherwise  mkLibName mkLibName :: PackageIdentifier -> StringA@PackageIdentifierString mkIOError  mkIOError ::  IOErrorType -> String ->  Maybe Handle -> Maybe FilePath -> IOErrorAA 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.  mkIntType mkIntType :: String -> DataType7C"CStringDataTypeConstructs the Int type  mkIntConstr mkIntConstr :: DataType -> Integer -> ConstrCCDataTypeIntegerConstr mkFloatType mkFloatType :: String -> DataTypeFD1DStringDataType!Constructs the Float type  mkFloatConstr mkFloatConstr :: DataType -> Double -> ConstrDDDataTypeDoubleConstrmkdirmkdir :: CString -> CInt -> IO CIntfEHECStringCIntIOCInt mkDataType mkDataType :: String -> [Constr] -> DataTypeEEString[]ConstrDataType!Constructs an algebraic datatype  mkDataDir  mkDataDir :: PackageDescription -> LocalBuildInfo -> CopyDest -> FilePathFFPackageDescriptionLocalBuildInfoCopyDestFilePathmkConstr mkConstr :: DataType -> String -> [String] -> Fixity -> ConstrG^GDataTypeString[]StringFixityConstrConstructs a constructor minutesToTimeZoneminutesToTimeZone :: Int -> TimeZoneHHIntTimeZoneACreate a nameless non-summer timezone for this number of minutes MinusMinus :: TokenHHToken#minPrecminPrec :: PrecHHPrecminimumminimum ::  ByteString -> Word89I#I ByteStringWord8NO(n) minimum returns the minimum value from a ByteString minimumminimum ::  ByteString -> CharII ByteStringCharBminimum returns the minimum value from a ByteString midnightmidnight ::  TimeOfDayuJiJ TimeOfDay Hour zero middaymidday ::  TimeOfDayJJ TimeOfDay Hour twelve ,mfixmfix :: MonadFix m =>  (a -> m a) -> m aLK%KMonadFixmamamamethodmethod :: String -> HtmlAttrKKStringHtmlAttrmethodmethod :: String -> HtmlAttr LKStringHtmlAttrmethodmethod :: String -> HtmlAttrlLWLStringHtmlAttrmetameta :: HtmlLLHtmlmetameta :: HtmlLLHtmlmetameta :: HtmlM MHtml messageString messageString :: Message -> StringMlMMessageString1Extract the message string from an error message MessageMessage :: String -> MessageNMStringMessageMessagedata MessageCNThis 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 aSR ParseErrorReplysuaReplysua mergeError mergeError ::  ParseError ->  ParseError ->  ParseErrorSS ParseError ParseError ParseErrorzmergemerge :: Package pkg => PackageIndex pkg -> PackageIndex pkg -> PackageIndex pkg~T,TPackagepkg PackageIndexpkg PackageIndexpkg PackageIndexpkguMerge two indexes. Packages from the second mask packages of the same exact name (case-sensitively) from the first. menumenu :: String -> [Html] -> HtmleUHUString[]HtmlHtmlmenumenu :: String -> [Html] -> HtmlUUString[]HtmlHtmlmenumenu :: String -> [Html] -> HtmlIV,VString[]HtmlHtmlmemset memset ::  Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8)VVPtrWord8Word8CSizeIOPtrWord8] memcpy_thaw  memcpy_thaw :: MutableByteArray# s ->  ByteArray# -> CSize ->  IO (Ptr a)W}WMutableByteArray#s ByteArray#CSizeIOPtramemcpy_ptr_baoff memcpy_ptr_baoff :: Ptr a ->  RawBuffer -> CInt -> CSize ->  IO (Ptr ())XRXPtra RawBufferCIntCSizeIOPtr()] memcpy_freeze  memcpy_freeze :: MutableByteArray# s -> MutableByteArray# s -> CSize ->  IO (Ptr a)jY YMutableByteArray#sMutableByteArray#sCSizeIOPtramemcpy memcpy ::  Ptr Word8 ->  Ptr Word8 -> CSize -> IO () ZYPtrWord8PtrWord8CSizeIO()memcmp memcmp ::  Ptr Word8 ->  Ptr Word8 -> CSize -> IO CIntZ~ZPtrWord8PtrWord8CSizeIOCIntmemchr memchr ::  Ptr Word8 -> Word8 -> CSize -> IO (Ptr Word8)Y[&[PtrWord8Word8CSizeIOPtrWord8P maybeWith  maybeWith :: (a -> (Ptr b -> IO c) -> IO c) -> Maybe a -> (Ptr b -> IO c) -> IO c<\[aPtrbIOcIOcMaybeaPtrbIOcIOcConverts a withXXX combinator into one marshalling a value wrapped into a Maybe, using nullPtr to represent Nothing. P maybePeek maybePeek :: (Ptr a -> IO b) -> Ptr a ->  IO (Maybe b)r]>]PtraIObPtraIOMaybeb]Convert a peek combinator into a one returning Nothing if applied to a nullPtr PmaybeNewmaybeNew :: (a -> IO (Ptr a)) -> Maybe a ->  IO (Ptr a)r^>^aIOPtraMaybeaIOPtraAllocate storage and marshall a storable value wrapped into a Maybe maybeGetPersistBuildConfigmaybeGetPersistBuildConfig :: FilePath -> IO (Maybe LocalBuildInfo)__FilePathIOMaybeLocalBuildInfo+Try to read the localBuildInfoFile. v maybeExit maybeExit ::  IO ExitCode -> IO ()V`9`IOExitCodeIO() maxPrecedence maxPrecedence :: Int``Int maxlength maxlength :: Int -> HtmlAttr``IntHtmlAttr maxlength maxlength :: Int -> HtmlAttr^aLaIntHtmlAttr maxlength maxlength :: Int -> HtmlAttraaIntHtmlAttr}MaximumOptimisationMaximumOptimisation :: OptimisationLevel.bbOptimisationLevelmaximummaximum ::  ByteString -> Word8b|b ByteStringWord8NO(n) maximum returns the maximum value from a ByteString maximummaximum ::  ByteString -> CharBc-c ByteStringCharBmaximum returns the maximum value from a ByteString maxConstrIndexmaxConstrIndex :: DataType -> ConIndexccDataTypeConIndex<Gets the maximum constructor index of an algebraic datatype MatchQtype MatchQ = Q Matchpdmatch match :: PatQ -> BodyQ -> [DecQ] -> MatchQddPatQBodyQ[]DecQMatchQMatch Match :: Pat -> Body -> [Dec] -> Matche`ePatBody[]DecMatchMatchdata MatcheaMArrayclass  Monad m => MArray a e me!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. ]MArrayclass  Monad m => MArray a e mSh!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 :: StringjjString marginwidth marginwidth :: Int -> HtmlAttrkkIntHtmlAttr marginwidth marginwidth :: Int -> HtmlAttr|kjkIntHtmlAttr marginheight marginheight :: Int -> HtmlAttrkkIntHtmlAttr marginheight marginheight :: Int -> HtmlAttrHl6lIntHtmlAttr mapReaderT mapReaderT ::  (m a -> n b) ->  ReaderT w m a ->  ReaderT w n bllmanbReaderTwmaReaderTwnb mapReader mapReader :: (a -> b) ->  Reader r a ->  Reader r bmgmabReaderraReaderrbmapListTmapListT :: (m [a] -> n [b]) ->  ListT m a ->  ListT n b@nnm[]an[]bListTmaListTnba mapIndices  mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e ->  m (a i e)/onMArrayaemIxiIxj(,)iiijajemaiefConstructs a new array derived from the original array by applying a function to each of the indices. ] mapIndices  mapIndices :: (MArray a e m, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e ->  m (a i e)p,pMArrayaemIxiIxj(,)iiijajemaiefConstructs a new array derived from the original array by applying a function to each of the indices.  mapErrorT mapErrorT :: #(m (Either e a) -> n (Either e' b)) ->  ErrorT e m a ->  ErrorT e' n bquqmEithereanEithere'bErrorTemaErrorTe'nbmapContTmapContT ::  (m r -> m r) ->  ContT r m a ->  ContT r m atr;rmrmrContTrmaContTrmamapContmapCont :: (r -> r) -> Cont r a -> Cont r arrrrContraContraamapArraymapArray :: '(MArray a e' m, MArray a e m, Ix i) =>  (e' -> e) -> a i e' ->  m (a i e)ssMArrayae'mMArrayaemIxie'eaie'maiegConstructs a new array derived from the original array by applying a function to each of the elements. ]mapArraymapArray :: '(MArray a e' m, MArray a e m, Ix i) =>  (e' -> e) -> a i e' ->  m (a i e)-utMArrayae'mMArrayaemIxie'eaie'maiegConstructs a new array derived from the original array by applying a function to each of the elements.  mapAccumR  mapAccumR :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)xv+vaccWord8(,)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.  mapAccumR  mapAccumR :: (acc -> Char -> (acc, Char)) -> acc ->  ByteString -> (acc, ByteString)px%xaccChar(,)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.  mapAccumL  mapAccumL :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)lzzaccWord8(,)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.  mapAccumL  mapAccumL :: (acc -> Char -> (acc, Char)) -> acc ->  ByteString -> (acc, ByteString)d||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. mapmap :: (Word8 -> Word8) ->  ByteString ->  ByteString~}Word8Word8 ByteString ByteStringwO(n) map f xs is the ByteString obtained by applying f to each element of xs. mapmap :: (Char -> Char) ->  ByteString ->  ByteString ~CharChar 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];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.  manyAccum manyAccum :: Stream s m t => (a -> [a] -> [a]) -> ParsecT s u m a -> ParsecT s u m [a]hStreamsmta[]a[]aParsecTsumaParsecTsum[]a many1many1 :: 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]sStreamsmtParsecTsumaParsecTsum[]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]dž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]eStreamsmtParsecTsumaParsecTsum[]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)
                }
mandirmandir :: InstallDirs dir -> dir8 InstallDirsdirdirmallocByteStringmallocByteString :: Int -> IO (ForeignPtr a)IntIO ForeignPtrahWrapper of mallocForeignPtrBytes with faster implementation for GHC 6.5 builds newer than 060606  mallocBytes mallocBytes :: Int ->  IO (Ptr a)xIntIOPtraAllocate 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) StorableaIOPtra;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.  makeValid makeValid :: FilePath -> FilePathFilePathFilePathTake a FilePath and make it valid; does not change already valid FilePaths.
isValid (makeValid x)
if isValid x then makeValid x == x else True
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"
 makeValid makeValid :: FilePath -> FilePathFilePathFilePathTake a FilePath and make it valid; does not change already valid FilePaths.
isValid (makeValid x)
if isValid x then makeValid x == x else True
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 mŔvStreamsmCharGenLanguageDefsumGenTokenParsersumThe 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
...
XmakeStableNamemakeStableName :: a -> IO (StableName a)Z=aIO StableNameaMakes a StableName for an arbitrary object. The object passed as the first argument is not evaluated by makeStableName.  makeRelative makeRelative :: FilePath -> FilePath -> FilePathnMFilePathFilePathFilePathContract a filename, based on a relative path.
Windows: makeRelative x (x `combine` y) == y || takeDrive x == x
Posix:   makeRelative x (x `combine` y) == y
(isRelative x && makeRelative y x == x) || y `combine` makeRelative y x == x
Windows: makeRelative "C:\\Home" "c:\\home\\bob" == "bob"
Windows: makeRelative "C:\\Home" "D:\\Home\\Bob" == "D:\\Home\\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"
 makeRelative makeRelative :: FilePath -> FilePath -> FilePathœFilePathFilePathFilePathContract a filename, based on a relative path.
Windows: makeRelative x (x `combine` y) == y || takeDrive x == x
Posix:   makeRelative x (x `combine` y) == y
(isRelative x && makeRelative y x == x) || y `combine` makeRelative y x == x
Windows: makeRelative "C:\\Home" "c:\\home\\bob" == "bob"
Windows: makeRelative "C:\\Home" "D:\\Home\\Bob" == "D:\\Home\\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"
mmakefileVerbositymakefileVerbosity ::  MakefileFlags -> Flag Verbosity]8 MakefileFlagsFlag VerbositymmakefileVerbosemakefileVerbose ::  MakefileFlags ->  Verbosityߠ  MakefileFlags Verbosity~ makefileHook makefileHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  MakefileFlags -> IO () UserHooksPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()?Over-ride this hook to get different behavior during makefile. m MakefileFlags  MakefileFlags ::  Flag FilePath ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  MakefileFlags2ޢFlagFilePathFlagFilePath VerbosityFlag Verbosity MakefileFlagsm MakefileFlagsdata  MakefileFlagspm makefileFile makefileFile ::  MakefileFlags ->  Flag FilePathӣ MakefileFlagsFlagFilePathmmakefileDistPrefmakefileDistPref ::  MakefileFlags ->  Flag FilePathb MakefileFlagsFlagFilePathmmakefileCommandmakefileCommand :: CommandUI MakefileFlags CommandUI MakefileFlagsmakefile makefile :: PackageDescription -> LocalBuildInfo ->  MakefileFlags -> IO ()ȥPackageDescriptionLocalBuildInfo MakefileFlagsIO()makefile makefile :: PackageDescription -> LocalBuildInfo ->  MakefileFlags -> [PPSuffixHandler] -> IO ()ǦpPackageDescriptionLocalBuildInfo MakefileFlags[]PPSuffixHandlerIO()u makeCommand makeCommand :: String -> String -> Maybe (String -> String) -> flags -> ShowOrParseArgs -> [OptionField flags] -> CommandUI flagsStringStringMaybeStringStringflagsShowOrParseArgs[] OptionFieldflags CommandUIflags-Make a Command from standard GetOpt options.  main_name main_name :: HsNameHsNamemain_modmain_mod :: ModuleѨȨModulej MagicHash MagicHash ::  Extension Extensionlstatlstat :: CString ->  Ptr CStat -> IO CInt{CStringPtrCStatIOCIntlparenlparen :: Doc۩թDocA '(' character v lowercase lowercase :: String -> StringM:StringStringlowerlower :: Stream s m Char => ParsecT s u m CharҪStreamsmCharParsecTsumChar_Parses a lower case character (a character between 'a' and 'z'). Returns the parsed character. s lookupProgram lookupProgram :: Program -> ProgramConfiguration -> Maybe ConfiguredProgramProgramProgramConfigurationMaybeConfiguredProgram!Try to find a configured program zlookupPackageNamelookupPackageName :: Package pkg => PackageIndex pkg -> String -> [pkg]ݬPackagepkg PackageIndexpkgString[]pkg.Does a case-sensitive search by package name. zlookupPackageIdlookupPackageId :: Package pkg => PackageIndex pkg -> PackageIdentifier ->  Maybe pkgPackagepkg PackageIndexpkgPackageIdentifierMaybepkgDoes a lookup by package id (name & version). Since multiple package DBs mask each other case-sensitively by package name, then we get back at most one package. slookupKnownProgramlookupKnownProgram :: String -> ProgramConfiguration ->  Maybe ProgramIStringProgramConfigurationMaybeProgramzlookupDependencylookupDependency :: Package pkg => PackageIndex pkg ->  Dependency -> [pkg]ԯPackagepkg PackageIndexpkg Dependency[]pkgDoes a case-sensitive search by package name and a range of versions. We get back any number of versions of the specified package name, all satisfying the version range constraint.  lookAhead lookAhead :: Stream s m t => ParsecT s u m a -> ParsecT s u m a~:StreamsmtParsecTsumaParsecTsumaDlookAhead p parses p without consuming any input. #looklook :: ReadPrec StringReadPrecStringNLook-ahead: returns the part of the input that is left, without consuming it.  looklook ::  ReadP StringReadPStringNLook-ahead: returns the part of the input that is left, without consuming it. s locationPath locationPath :: ProgramLocation -> FilePathxZProgramLocationFilePaths locationPath locationPath :: ProgramLocation -> FilePathسProgramLocationFilePathlocalToUTCTimeOfDaylocalToUTCTimeOfDay :: TimeZone ->  TimeOfDay -> (Integer, TimeOfDay)~TimeZone TimeOfDay(,)Integer TimeOfDayPConvert a ToD in some timezone to a ToD in UTC, together with a day adjustment. localTimeToUTClocalTimeToUTC :: TimeZone ->  LocalTime -> UTCTimerTimeZone LocalTimeUTCTimeAfind out what UTC time a given LocalTime in a given time zone is localTimeToUT1localTimeToUT1 :: Rational ->  LocalTime ->  UniversalTimerKRational LocalTime UniversalTime=1st arg is observation meridian in degrees, positive is East localTimeOfDaylocalTimeOfDay ::  LocalTime ->  TimeOfDay' LocalTime TimeOfDay LocalTime LocalTime :: Day ->  TimeOfDay ->  LocalTimeDay 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.  localPkgDescr localPkgDescr :: LocalBuildInfo -> PackageDescriptionoHLocalBuildInfoPackageDescriptionJThe resolved package description, that does not contain any conditionals. localDaylocalDay ::  LocalTime -> Day LocalTimeDaylocalBuildInfoFilelocalBuildInfoFile :: FilePath -> FilePath~FilePathFilePath
dist/setup-config
LocalBuildInfo,LocalBuildInfo :: InstallDirTemplates -> Compiler -> FilePath -> FilePath -> [PackageIdentifier] -> !PackageIndex InstalledPackageInfo -> Maybe FilePath -> PackageDescription -> ProgramConfiguration ->  PackageDB ->  Bool ->  Bool ->  Bool ->  Bool -> OptimisationLevel -> Bool -> Bool -> Bool ->  PathTemplate ->  PathTemplate -> LocalBuildInfoԼInstallDirTemplatesCompilerFilePathFilePath[]PackageIdentifier PackageIndexInstalledPackageInfoMaybeFilePathPackageDescriptionProgramConfiguration PackageDBBoolBoolBoolBoolOptimisationLevelBoolBoolBool PathTemplate PathTemplateLocalBuildInfoLocalBuildInfodata LocalBuildInfo:OData cached after configuration step. See also Distribution.Setup.ConfigFlags. litPlitP :: Lit -> PatQ׾ɾLitPatQLitPLitP :: Lit -> Pat#LitPatlitElitE :: Lit -> ExpQqcLitExpQLitELitE :: Lit -> ExpLitExpLitdata Lit] listUArrayST listUArrayST :: ((MArray (STUArray s) e (ST s), Ix i) => (i, i) -> [e] -> ST s (STUArray s i e)MArraySTUArrayseSTsIxi(,)ii[]eSTsSTUArraysie] ListUArraytype  ListUArray e = (i, i) -> [e] -> UArray i eAlistTlistT :: TypeQ}uTypeQListTListT :: TypeTypeListTListT :: m [a] ->  ListT m a m[]aListTmaListTnewtype ListT m aUlistPlistP :: [PatQ] -> PatQ[]PatQPatQListPListP :: [Pat] -> Pat[]PatPatListItemListItem :: Int -> Node[MIntNodelistifylistify :: Typeable r =>  (r -> Bool) ->  GenericQ [r]TypeablerrBoolGenericQ[]r1Get a list of all entities that meet a predicate listElistE :: [ExpQ] -> ExpQ|g[]ExpQExpQListEListE :: [Exp] -> Exp[]ExpExpListAssertableclass ListAssertable t listAssert listAssert :: ListAssertable t => [t] ->  AssertionzListAssertablet[]t Assertion] listArrayST listArrayST :: Ix i => (i, i) -> [e] -> ST s (STArray s i e)]Ixi(,)ii[]eSTsSTArraysie_ listArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i e IArrayaeIxi(,)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. ] listArray listArray :: (IArray a e, Ix i) => (i, i) -> [e] -> a i eYIArrayaeIxi(,)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_cons_namelist_cons_name :: HsQNameG=HsQNamelinklink :: String -> HtmlAttrStringHtmlAttr lineToHtml lineToHtml :: String -> HtmlStringHtml@This converts a string, but keeps spaces as non-line-breakable.  lineToHtml lineToHtml :: String -> HtmlStringHtml@This converts a string, but keeps spaces as non-line-breakable.  lineToHtml lineToHtml :: String -> HtmlC2StringHtml@This converts a string, but keeps spaces as non-line-breakable.  linesToHtml linesToHtml :: [String] -> Html[]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] -> Html[]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] -> Html[]StringHtmlThis converts a string, but keeps spaces as non-line-breakable, and adds line breaks between each of the strings in the input list. lineslines ::  ByteString ->  [ByteString] ByteString[] ByteStringlines breaks a ByteString up into a list of ByteStrings at newline Chars. The resulting strings do not contain newlines.  linePragmas linePragmas :: PPHsMode -> BoolPPHsModeBool/add GHC-style LINE pragmas to output?  lineLength lineLength :: Style -> Int0!StyleIntLength of line, in chars Linetype Line = Int}Linetype Line = IntLimittype Limit = CLonglimelime :: String%Stringu liftOption  liftOption :: (b -> a) ->  (a -> b -> b) ->  OptionField a ->  OptionField bbaabb OptionFielda OptionFieldbliftIOliftIO ::  MonadIO m => IO a -> m a^<MonadIOmIOama#liftlift :: ReadP a ->  ReadPrec aReadPaReadPrecaALift a precedence-insensitive ReadP to a ReadPrec. liftlift :: (MonadTrans t, Monad m) => m a -> t m ac MonadTranstMonadmmatma LibsubdirVar LibsubdirVar :: PathTemplateVariablePathTemplateVariable&The $libsubdir path variable  libsubdir libsubdir :: InstallDirs dir -> diry InstallDirsdirdir libexecdir libexecdir :: InstallDirs dir -> dir InstallDirsdirdirjLiberalTypeSynonymsLiberalTypeSynonyms ::  Extensionh\ Extension LibdirVar LibdirVar :: PathTemplateVariablePathTemplateVariable#The $libdir path variable libdirlibdir :: InstallDirs dir -> dirX< InstallDirsdirdirlili :: Html -> HtmlHtmlHtmllili :: Html -> HtmlHtmlHtmllili :: Html -> Html<-HtmlHtmluLFlagstype LFlags = [String]y!Long command line option strings lexWhilelexWhile :: (Char -> Bool) ->  Lex a StringCharBoolLexaStringlexTablexTab :: Lex a ()`QLexa()1Discard the next character, which must be a tab.  lexNewline lexNewline :: Lex a ()Lexa()5Discard the next character, which must be a newline. lexerlexer :: (Token -> P a) -> P a~bTokenPaPalexemelexeme :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m aEGenTokenParsersumParsecTsumaParsecTsumalexeme 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 LexemeHaskell lexemes.  LexContextdata  LexContextJ"lexCharlexChar ::  ReadP CharReadPChar"lexlex ::  ReadP LexemeReadPLexemeLexdata Lex r aletterletter :: Stream s m Char => ParsecT s u m ChardStreamsmCharParsecTsumCharWParses a letter (an upper case or lower case character). Returns the parsed character. letSletS :: [DecQ] -> StmtQF0[]DecQStmtQLetSLetS :: [Dec] -> Stmt[]DecStmt letIndent letIndent :: PPHsMode -> IndentPPHsModeIndent=indentation of the declarations in a let expression letEletE :: [DecQ] -> ExpQ -> ExpQ[]DecQExpQExpQLetELetE :: [Dec] -> Exp -> Exp[]DecExpExp lengthArray0 lengthArray0 :: (Storable a, Eq a) => a -> Ptr a -> IO IntStorableaEqaaPtraIOIntDReturn the number of elements in an array, excluding the terminator length_of_testslength_of_tests ::  TestOptions -> Intu` TestOptionsIntetime limit for test, in seconds. If zero, no time limit. Note: only GHC supports time limits. lengthlength ::  ByteString -> Int64<& ByteStringInt64SO(n\c)/ length returns the length of a ByteString as an Int64 lengthlength ::  ByteString -> Int ByteStringIntOO(1) length returns the length of a ByteString as an Int. legendlegend :: Html -> HtmlHtmlHtmllegendlegend :: Html -> HtmlHtmlHtmllegendlegend :: Html -> Html8)HtmlHtml LeftSquare LeftSquare :: Token~vToken LeftParen LeftParen :: TokenTokenLeftModeLeftMode :: ModeMode&No indentation, infinitely long lines  LeftCurly LeftCurly :: TokenldToken LeftArrow LeftArrow :: TokenTokens ldProgram ldProgram :: ProgramProgramlbracklbrack :: Doc2,DocA '[' character lbracelbrace :: Doc|vDocA '{' character layoutlayout :: PPHsMode -> PPLayoutPPHsModePPLayoutPretty-printing style to use LayoutLayout :: Int ->  LexContextkWInt LexContextlastlast ::  ByteString -> Word8 ByteStringWord8]O(n\c)/ Extract the last element of a ByteString, which must be finite and non-empty. lastlast ::  ByteString -> Charm 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 IdentityB LanguageDeftype  LanguageDef st$ = GenLanguageDef String st Identitylanglang :: String -> HtmlAttrStringHtmlAttrlanglang :: String -> HtmlAttr]HStringHtmlAttrlanglang :: String -> HtmlAttrStringHtmlAttrlamElamE :: [PatQ] -> ExpQ -> ExpQ' []PatQExpQExpQLamELamE :: [Pat] -> Exp -> Expw[]PatExpExplam1Elam1E :: PatQ -> ExpQ -> ExpQPatQExpQExpQlabelslabels ::  Monad m => ParsecT s u m a -> [String] -> ParsecT s u m aqMonadmParsecTsuma[]StringParsecTsumalabellabel :: Html -> HtmlHtmlHtmllabellabel :: Html -> Html`QHtmlHtmllabellabel :: Html -> HtmlHtmlHtmllabellabel ::  Monad m => ParsecT s u m a -> String -> ParsecT s u m am(MonadmParsecTsumaStringParsecTsumaLabelLabel :: String -> NodeStringNodeKW_WhereKW_Where :: TokenToken KW_Unsafe KW_Unsafe :: TokenIATokenKW_TypeKW_Type :: TokenTokenKW_ThenKW_Then :: TokenTokenKW_SafeKW_Safe :: Token Token KW_Qualified KW_Qualified :: TokenSKTokenKW_OfKW_Of :: TokenToken KW_NewType KW_NewType :: TokenToken KW_Module KW_Module :: TokenTokenKW_LetKW_Let :: TokenWOToken KW_Instance KW_Instance :: TokenToken KW_InfixR KW_InfixR :: TokenToken KW_InfixL KW_InfixL :: Token'TokenKW_InfixKW_Infix :: TokeniaTokenKW_InKW_In :: TokenToken KW_Import KW_Import :: TokenTokenKW_IfKW_If :: Token%Token KW_Hiding KW_Hiding :: TokeniaToken KW_Foreign KW_Foreign :: TokenToken KW_Export KW_Export :: TokenTokenKW_ElseKW_Else :: Token3+TokenKW_DoKW_Do :: TokenogToken KW_Deriving KW_Deriving :: TokenToken KW_Default KW_Default :: TokenTokenKW_DataKW_Data :: Token=5TokenKW_ClassKW_Class :: TokenwTokenKW_CaseKW_Case :: TokenTokenKW_AsKW_As :: TokenTokenknownSuffixHandlersknownSuffixHandlers :: [PPSuffixHandler]oW[]PPSuffixHandlerHStandard preprocessors: GreenCard, c2hs, hsc2hs, happy, alex and cpphs. s knownPrograms knownPrograms :: ProgramConfiguration -> $[(Program, Maybe ConfiguredProgram)]:ProgramConfiguration[](,)ProgramMaybeConfiguredProgramjknownExtensionsknownExtensions ::  [Extension][] ExtensionjKindSignaturesKindSignatures ::  Extension;/ Extensionkeyboardkeyboard :: Html -> HtmlHtmlHtmlkeyboardkeyboard :: Html -> HtmlHtmlHtmlkeyboardkeyboard :: Html -> HtmlC4HtmlHtmljoinPathjoinPath ::  [FilePath] -> FilePath[]FilePathFilePathJoin path elements back together.
joinPath (splitPath (makeValid x)) == makeValid x
joinPath [] == ""
Posix: joinPath ["test","file","path"] == "test/file/path"
joinPathjoinPath ::  [FilePath] -> FilePath[]FilePathFilePathJoin path elements back together.
joinPath (splitPath (makeValid x)) == makeValid x
joinPath [] == ""
Posix: joinPath ["test","file","path"] == "test/file/path"
 joinDrive joinDrive :: FilePath -> FilePath -> FilePath FilePathFilePathFilePath[Join a drive and the rest of the path.
uncurry joinDrive (splitDrive x) == x
 joinDrive joinDrive :: FilePath -> FilePath -> FilePathFilePathFilePathFilePath[Join a drive and the rest of the path.
uncurry joinDrive (splitDrive x) == x
s jhcProgram jhcProgram :: ProgramProgram 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. _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. ]ixmap ixmap :: (IArray a e, Ix i, Ix j) => (i, i) -> (i -> j) -> a j e -> a i efIArrayaeIxiIxj(,)iiijajeaiecReturns a new array derived from the original array by applying a function to each of the indices. iterateiterate :: (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 -> HtmlHtmlHtmlitalicsitalics :: Html -> HtmlHtmlHtmlitalicsitalics :: Html -> HtmlPAHtmlHtmlitagitag :: 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. itagitag :: String -> HtmlStringHtmlDConstructs an element with a custom name, and without any children. M isValidErrno isValidErrno :: Errno -> BoolzjErrnoBoolYield 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. isValidisValid :: FilePath -> Bool  FilePathBoolIs a FilePath valid, i.e. could you create a file like it?
Posix:   isValid "/random_ path:*" == True
Posix:   isValid x == True
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
isValidisValid :: FilePath -> Bool { FilePathBoolIs a FilePath valid, i.e. could you create a file like it?
Posix:   isValid "/random_ path:*" == True
Posix:   isValid x == True
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
isUserErrorTypeisUserErrorType ::  IOErrorType -> Bool p  IOErrorTypeBool&I/O error that is programmer-defined.  isUserError isUserError :: IOError -> Bool IOErrorBoolEA programmer-defined error value constructed using userError.  isTotalOrder isTotalOrder ::  (Arbitrary a, Show a, Ord a) => a -> a -> Property  ArbitraryaShowaOrdaaaProperty isSuffixOf isSuffixOf ::  ByteString ->  ByteString -> Boolu 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
 isSuffixOf isSuffixOf ::  ByteString ->  ByteString -> Bool 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 :: Strict|Strict isSpaceWord8 isSpaceWord8 :: Word8 -> BoolWord8BoolaSelects words corresponding to white-space characters in the Latin-1 range ordered by frequency.  isSpaceChar8 isSpaceChar8 :: Char -> BoolCharBool4Selects white-space characters in the Latin-1 range isSearchPathSeparatorisSearchPathSeparator :: Char -> BoolN?CharBoolgIs the character a file separator?
isSearchPathSeparator a == (a == searchPathSeparator)
isSearchPathSeparatorisSearchPathSeparator :: Char -> Bool'CharBoolgIs the character a file separator?
isSearchPathSeparator a == (a == searchPathSeparator)
 isRelative isRelative :: FilePath -> BoolFilePathBoolIs a path relative, or is it fixed to the root?
Windows: isRelative "path\\test" == True
Windows: isRelative "c:\\test" == False
Posix:   isRelative "test/path" == True
Posix:   isRelative "/test" == False
 isRelative isRelative :: FilePath -> Bool2FilePathBoolIs a path relative, or is it fixed to the root?
Windows: isRelative "path\\test" == True
Windows: isRelative "c:\\test" == False
Posix:   isRelative "test/path" == True
Posix:   isRelative "/test" == False
 isPrefixOf isPrefixOf ::  ByteString ->  ByteString -> Boolw ByteString ByteStringBoolO(n) The isPrefixOf function takes two ByteStrings and returns True iff the first is a prefix of the second.  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. isPathSeparatorisPathSeparator :: Char -> BoolCharBoolRather than using (== pathSeparator), use this. Test if something is a path separator.
isPathSeparator a == (a `elem` pathSeparators)
isPathSeparatorisPathSeparator :: Char -> BoolCharBoolRather than using (== pathSeparator), use this. Test if something is a path separator.
isPathSeparator a == (a `elem` pathSeparators)
 isNorepType isNorepType :: DataType -> BoolDataTypeBool"Test for a non-representable type isNoHtmlisNoHtml :: Html -> Bool&HtmlBool1Checks whether the given piece of HTML is empty. isNoHtmlisNoHtml :: Html -> BoolHtmlBool1Checks whether the given piece of HTML is empty. isNoHtmlisNoHtml :: Html -> Bool8 ) HtmlBool1Checks whether the given piece of HTML is empty. ismapismap :: HtmlAttr  HtmlAttrismapismap :: HtmlAttr  HtmlAttrismapismap :: HtmlAttr/!$!HtmlAttr isLeapYear isLeapYear :: Integer -> Bool!!IntegerBoolHIs this year a leap year according to the proleptic Gregorian calendar? v isInfixOf isInfixOf :: String -> String -> BoolQ"8"StringStringBool 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)). isindexisindex :: Html##HtmlisIllegalOperationErrorTypeisIllegalOperationErrorType ::  IOErrorType -> Bool)$$ 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 -> Bool='+'IOErrorBoolSAn error indicating that an IO operation failed because the device is full. isExtSeparatorisExtSeparator :: Char -> Bool''CharBool_Is the character an extension character?
isExtSeparator a == (a == extSeparator)
isExtSeparatorisExtSeparator :: Char -> Bool((CharBool_Is the character an extension character?
isExtSeparator a == (a == extSeparator)
isEOFErrorTypeisEOFErrorType ::  IOErrorType -> Bool)r) IOErrorTypeBoolOI/O error where the operation failed because the end of file has been reached.  isEOFError isEOFError :: IOError -> Bool9*'*IOErrorBoolaAn error indicating that an IO operation failed because the end of file has been reached. 1isEmptySampleVarisEmptySampleVar ::  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 Boolo.U.ChanaIOBool:Returns True if the supplied Chan is empty. isEmptyisEmpty :: Doc -> Bool..DocBool-Returns True if the document is empty isDriveisDrive :: FilePath -> Bool/u/FilePathBoolIs an element a drive isDriveisDrive :: FilePath -> Bool//FilePathBoolIs an element a drive isDoesNotExistErrorTypeisDoesNotExistErrorType ::  IOErrorType -> Bool00 IOErrorTypeBoolRI/O error where the operation failed because one of its arguments does not exist. isDoesNotExistErrorisDoesNotExistError :: IOError -> Bool\1J1IOErrorBooldAn 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) -> Property2j2ShowaTestablepropbbpropGenaaabProperty isCommutable isCommutable :: (Arbitrary a, Show a, Eq b) =>  (a -> a -> b) -> Propertyp343 ArbitraryaShowaEqbaabPropertyisBottomisBottom :: a -> Bool33aBoolLook 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) -> Property55ShowaTestablepropaapropGenaaaaProperty isAssociative isAssociative :: (Arbitrary a, Show a, Eq a) =>  (a -> a -> a) -> Property6Y6 ArbitraryaShowaEqaaaaPropertyisAlreadyInUseErrorTypeisAlreadyInUseErrorType ::  IOErrorType -> Bool77 IOErrorTypeBoolyI/O error where the operation failed because one of its arguments is a single-use resource, which is already being used. isAlreadyInUseErrorisAlreadyInUseError :: IOError -> Bool87IOErrorBoolAn 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 -> Boold9N9 IOErrorTypeBoolRI/O error where the operation failed because one of its arguments already exists. isAlreadyExistsErrorisAlreadyExistsError :: IOError -> Bool,::IOErrorBooldAn error indicating that an IO operation failed because one of its arguments already exists.  isAlgType isAlgType :: DataType -> Bool::DataTypeBoolTest for an algebraic type  isAbsolute isAbsolute :: FilePath -> Boolq;^;FilePathBoolV
not . isRelative
isAbsolute x == not (isRelative x)
 isAbsolute isAbsolute :: FilePath -> Bool+<<FilePathBoolV
not . isRelative
isAbsolute x == not (isRelative x)
`IOUArraydata 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.
^ IOToDiffArraydata  IOToDiffArray a i eN>`An arbitrary MArray type living in the IO monad can be converted to a diff array. ioeSetLocationioeSetLocation :: IOError -> String -> IOError8??IOErrorStringIOError ioeSetHandle ioeSetHandle :: IOError -> Handle -> IOError??IOErrorHandleIOErrorioeSetFileNameioeSetFileName :: IOError -> FilePath -> IOErrorL@-@IOErrorFilePathIOErrorioeSetErrorTypeioeSetErrorType :: IOError ->  IOErrorType -> IOError@@IOError IOErrorTypeIOErrorioeSetErrorStringioeSetErrorString :: IOError -> String -> IOErrorrAUAIOErrorStringIOError IOErrorTypedata  IOErrorTypeAKAn abstract type that contains a value for each variant of IOError. ioErrorioError :: IOError -> IO aVBABIOErrorIOa0Raise an IOError in the IO monad. IOErrortype IOError = IOExceptionB%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[DGDIOErrorString ioeGetHandle ioeGetHandle :: IOError ->  Maybe HandleDDIOErrorMaybeHandleioeGetFileNameioeGetFileName :: IOError -> Maybe FilePathUE6EIOErrorMaybeFilePathioeGetErrorTypeioeGetErrorType :: IOError ->  IOErrorTypeEEIOError IOErrorTypeioeGetErrorStringioeGetErrorString :: IOError -> StringCF/FIOErrorStringIntTokIntTok :: Integer -> TokenFFIntegerTokenIntRepIntRep :: DataRepFFDataRepintPrimLintPrimL :: Integer -> Lit=G,GIntegerLitIntPrimLIntPrimL :: Integer -> LitGGIntegerLit intersperse intersperse :: Word8 ->  ByteString ->  ByteString'HHWord8 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.  intersperse intersperse :: Char ->  ByteString ->  ByteStringIaIChar 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. v intercalate intercalate :: [a] -> [[a]] -> [a]JJ[]a[][]a[]a intercalate intercalate ::  ByteString ->  [ByteString] ->  ByteStringwKJK 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.  intercalate intercalate ::  ByteString ->  [ByteString] ->  ByteStringLL 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. interactinteract :: (ByteString -> ByteString) -> IO ()2N N 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. interactinteract :: (ByteString -> ByteString) -> IO ()OO 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 -> LitQ QIntegerLitIntegerLIntegerL :: Integer -> LitwQfQIntegerLitintegerinteger :: Integer -> DocQQIntegerDoc'
integer n = text (show n)
integerinteger :: GenTokenParser s u m -> ParsecT s u m IntegerR`RGenTokenParsersumParsecTsumIntegerUThis 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.  IntConstr IntConstr :: Integer ->  ConstrRepZTCTInteger ConstrRepintAttrintAttr :: String -> Int -> HtmlAttrTTStringIntHtmlAttrintAttrintAttr :: String -> Int -> HtmlAttrFU,UStringIntHtmlAttrintAttrintAttr :: String -> Int -> HtmlAttrUUStringIntHtmlAttrintint :: Int -> DocVUIntDoc#
int n = text (show n)
"IntInt :: Integer -> LexemeVmVIntegerLexemeInteger literal ~instHookinstHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  InstallFlags -> IO ()WEW UserHooksPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()>Over-ride this hook to get different behavior during install.  instanceD  instanceD :: CxtQ -> TypeQ -> [DecQ] -> DecQhXFXCxtQTypeQ[]DecQDecQ InstanceD  InstanceD :: Cxt -> Type -> [Dec] -> DecXXCxtType[]DecDecminstallVerbosityinstallVerbosity ::  InstallFlags -> Flag VerbosityY[Y InstallFlagsFlag VerbosityminstallVerboseinstallVerbose ::  InstallFlags ->  VerbosityYY InstallFlags VerbosityminstallPackageDBinstallPackageDB ::  InstallFlags -> Flag PackageDBZhZ InstallFlagsFlag PackageDB installLib installLib ::  Verbosity -> FilePath -> FilePath -> PackageIdentifier -> Library -> IO ()[7[ VerbosityFilePathFilePathPackageIdentifierLibraryIO()$Install for nhc98: .hi and .a files  installLib installLib ::  Verbosity -> FilePath -> FilePath -> PackageDescription -> Library -> IO ()\O\ VerbosityFilePathFilePathPackageDescriptionLibraryIO() installLib installLib ::  Verbosity -> LocalBuildInfo -> FilePath -> FilePath -> FilePath -> PackageDescription -> IO ()]_] VerbosityLocalBuildInfoFilePathFilePathFilePathPackageDescriptionIO()7Install for ghc, .hi, .a and, if --with-ghci given, .o m InstallFlags  InstallFlags :: Flag PackageDB ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  InstallFlags^^Flag PackageDBFlagFilePath VerbosityFlag Verbosity InstallFlagsm InstallFlagsdata  InstallFlags+_3Flags to install: (package db, verbosity)  installExe installExe ::  Verbosity -> FilePath -> FilePath -> (FilePath, FilePath) ->  Executable -> IO ()b`` VerbosityFilePathFilePath(,)FilePathFilePath ExecutableIO()Install executables for GHC.  installExe installExe ::  Verbosity -> FilePath -> FilePath -> (FilePath, FilePath) -> PackageDescription ->  Executable -> IO ()aNa VerbosityFilePathFilePath(,)FilePathFilePathPackageDescription ExecutableIO() installExe installExe ::  Verbosity -> LocalBuildInfo -> FilePath -> FilePath -> (FilePath, FilePath) -> PackageDescription -> IO ()bb VerbosityLocalBuildInfoFilePathFilePath(,)FilePathFilePathPackageDescriptionIO()Install executables for GHC.  installedPkgs installedPkgs :: LocalBuildInfo -> !PackageIndex InstalledPackageInfoccLocalBuildInfo PackageIndexInstalledPackageInfo+All the info about all installed packages. minstallDistPrefinstallDistPref ::  InstallFlags ->  Flag FilePathydVd InstallFlagsFlagFilePathinstallDirTemplatesinstallDirTemplates :: LocalBuildInfo -> InstallDirTemplatesedLocalBuildInfoInstallDirTemplatesEThe installation directories for the various differnt kinds of files InstallDirTemplatestype InstallDirTemplates = InstallDirs PathTemplateeThe installation dirctories in terms of PathTemplates that contain variables. The defaults for most of the directories are relative to each other, in particular they are all relative to a single prefix. This makes it convenient for the user to override the default installation directory by only having to specify --prefix=... rather than overriding each individually. This is done by allowing $-style variables in the dirs. These are expanded by textual substituion (see substPathTemplate). A few of these installation directories are split into two components, the dir and subdir. The full installation path is formed by combining the two together with /. The reason for this is compatability with other unix build systems which also support --libdir and --datadir. We would like users to be able to configure --libdir=/usr/lib64 for example but because by default we want to support installing multiplve versions of packages and building the same package for multiple compilers we append the libsubdir to get: /usr/lib64/$pkgid/$compiler. An additional complication is the need to support relocatable packages on systems which support such things, like Windows.  InstallDirs  InstallDirs :: dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir -> dir ->  dir ->  dir ->  dir ->  dir ->  dir -> InstallDirs dir lkdirdirdirdirdirdirdirdirdirdirdirdirdirdir InstallDirsdir InstallDirsdata  InstallDirs dirGl-The directories where we will install files for packages. We have several different directories for different types of files since many systems have conventions whereby different types of files in a package are installed in different direcotries. This is particularly the case on unix style systems. minstallCommandinstallCommand :: CommandUI InstallFlagsmm CommandUI InstallFlagsinstall install :: PackageDescription -> LocalBuildInfo ->  CopyFlags -> IO ()nlnPackageDescriptionLocalBuildInfo CopyFlagsIO()Perform the "./setup install" and "./setup copy" actions. Move files into place based on the prefix argument. FIX: nhc isn't implemented yet. installinstall ::  Verbosity -> FilePath -> FilePath -> FilePath -> FilePath -> FilePath -> (FilePath, FilePath) -> PackageDescription -> IO ()p7p  VerbosityFilePathFilePathFilePathFilePathFilePath(,)FilePathFilePathPackageDescriptionIO()Install for Hugs. For install, copy-prefix = prefix, but for copy they're different. The library goes in <copy-prefix>/lib/hugs/packages/<pkgname> (i.e. <prefix>/lib/hugs/packages/<pkgname> on the target system). Each executable goes in <copy-prefix>/lib/hugs/programs/<exename> (i.e. <prefix>/lib/hugs/programs/<exename> on the target system) with a script <copy-prefix>/bin/<exename> pointing at <prefix>/lib/hugs/programs/<exename>. zinsertinsert :: Package pkg => pkg -> PackageIndex pkg -> PackageIndex pkgis'sPackagepkgpkg PackageIndexpkg PackageIndexpkgInserts a single package into the index. This is equivalent to (but slightly quicker than) using mappend or merge with a singleton index. insins :: Html -> HtmlPtAtHtmlHtmlinsins :: Html -> HtmlttHtmlHtmlinsins :: Html -> HtmlttHtmlHtmlinputinput :: Html&uuHtmlinputinput :: Html`uYuHtmlinputinput :: HtmluuHtmlinlinePerformIOinlinePerformIO :: IO a -> auuIOaainitsinits ::  ByteString ->  [ByteString]ovNv ByteString[] ByteStringXO(n) Return all initial segments of the given ByteString, shortest first. initsinits ::  ByteString ->  [ByteString]9ww ByteString[] ByteStringXO(n) Return all initial segments of the given ByteString, shortest first.  initialPos initialPos ::  SourceName ->  SourcePosxw SourceName SourcePosvCreate a new SourcePos with the given source name, and line number and column number set to 1, the upper left. initialPathTemplateEnvinitialPathTemplateEnv :: PackageIdentifier ->  CompilerId -> &[(PathTemplateVariable, PathTemplate)]vy#yPackageIdentifier CompilerId[](,)PathTemplateVariable PathTemplate>The initial environment has all the static stuff but no paths initialBuildStepsinitialBuildSteps :: FilePath -> PackageDescription -> LocalBuildInfo ->  Verbosity -> [PPSuffixHandler] -> IO ()z~zFilePathPackageDescriptionLocalBuildInfo Verbosity[]PPSuffixHandlerIO()initinit ::  ByteString ->  ByteStringC{({ ByteString ByteStringSO(n\c)/ Return all the elements of a ByteString except the last one. initinit ::  ByteString ->  ByteString{{ 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 Info|vinfoinfo ::  Verbosity -> String -> IO ()@} } VerbosityStringIO()sMore detail on the operation of some action. We display these messages when the verbosity level is verbose Infodata Info}InfixRInfixR :: FixityDirection1~~FixityDirectioninfixP infixP :: PatQ -> Name -> PatQ -> PatQ~~PatQNamePatQPatQInfixP InfixP :: Pat -> Name -> Pat -> Pat+PatNamePatPatInfixNInfixN :: FixityDirection}kFixityDirectionInfixLInfixL :: FixityDirectionFixityDirectioninfixE infixE ::  Maybe ExpQ -> ExpQ ->  Maybe ExpQ -> ExpQm@MaybeExpQExpQMaybeExpQExpQInfixE InfixE ::  Maybe Exp -> Exp ->  Maybe Exp -> ExpڀMaybeExpExpMaybeExpExpinfixC infixC :: Q (Strict, Type) -> Name -> Q (Strict, Type) -> ConQÁQ(,)StrictTypeNameQ(,)StrictTypeConQInfixC InfixC ::  StrictType -> Name ->  StrictType -> ConY3 StrictTypeName StrictTypeConinfixApp infixApp :: ExpQ -> ExpQ -> ExpQ -> ExpQ݂‚ExpQExpQExpQExpQInfixInfix :: ParsecT s u m (a -> a -> a) -> Assoc -> Operator s u m aTParsecTsumaaaAssocOperatorsumaInfixInfix :: FixityӃʃFixityvinDirinDir :: Maybe FilePath -> IO () -> IO ()\2MaybeFilePathIO()IO()0Executes the action in the specified directory. _indicesindices :: (IArray a e, Ix i) => a i e -> [i]IArrayaeIxiaie[]i5Returns a list of all the valid indices in an array. ]indicesindices :: (IArray a e, Ix i) => a i e -> [i]ۅIArrayaeIxiaie[]i5Returns a list of all the valid indices in an array.  indexConstr indexConstr :: DataType -> ConIndex -> ConstryDataTypeConIndexConstr=Gets the constructor for an index (algebraic datatypes only) indexindex ::  ByteString -> Int64 -> Word8M0 ByteStringInt64Word8KO(c) ByteString index (subscript) operator, starting from 0. indexindex ::  ByteString -> Int -> Char  ByteStringIntCharKO(1) ByteString index (subscript) operator, starting from 0. Indenttype Indent = Int 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 ->  SourcePosz SourcePosColumn SourcePos3Increments the column number of a source position. incSourceColumnincSourceColumn ::  SourcePos -> Column ->  SourcePosbA SourcePosColumn SourcePos3Increments the column number of a source position. jIncoherentInstancesIncoherentInstances ::  Extension Extension includedir includedir :: InstallDirs dir -> dirhL InstallDirsdirdir 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 -> Moduleu HsImportDeclModulename of the module imported.  importLoc importLoc ::  HsImportDecl -> SrcLoc HsImportDeclSrcLoc)position of the import keyword. ImportFImportF :: Callconv -> Safety -> String -> Name -> Type -> ForeignԏCallconvSafetyStringNameTypeForeignimportAsimportAs ::  HsImportDecl ->  Maybe Module_ HsImportDeclMaybeModule.optional alias name in an as clause. jImplicitParamsImplicitParams ::  Extension Extensionimageimage :: Html?8Htmlimageimage :: HtmlyrHtmlimageimage :: HtmlHtmlillegalOperationErrorTypeillegalOperationErrorType ::  IOErrorType# IOErrorType/I/O error where the operation is not possible. iframeiframe :: Html -> HtmlHtmlHtml identStart identStart :: GenLanguageDef s u m -> ParsecT s u m CharIGenLanguageDefsumParsecTsumCharoThis parser should accept any start characters of identifiers. For example letter <|> char "_".  identLetter identLetter :: GenLanguageDef s u m -> ParsecT s u m Char]%GenLanguageDefsumParsecTsumCharvThis parser should accept any legal tail characters of identifiers. For example alphaNum <|> char "_". IdentityIdentity :: a ->  Identity a4aIdentityaIdentitynewtype Identity am'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 -> HtmlAttrdOStringHtmlAttr identifier identifier :: String -> HtmlAttr̚StringHtmlAttr identifier identifier :: GenTokenParser s u m -> ParsecT s u m Strings9GenTokenParsersumParsecTsumStringXThis 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 -> Lexeme%StringLexeme4Haskell identifier, e.g. foo, Baz _IArrayclass IArray a eClass 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. ]IArrayclass IArray a e]Class 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. s hugsProgram hugsProgram :: ProgramC9Program httpequiv httpequiv :: String -> HtmlAttrStringHtmlAttr httpequiv httpequiv :: String -> HtmlAttrStringHtmlAttr httpequiv httpequiv :: String -> HtmlAttru`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  HtmlTablevWe 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 -> HtmlTreeL#Html[]HtmlTreeHtmlHtmlTreeHtmlLeafHtmlLeaf :: Html -> HtmlTreeHtmlHtmlTree HtmldirVar HtmldirVar :: PathTemplateVariablePathTemplateVariable$The $htmldir path variable htmldirhtmldir :: InstallDirs dir -> dir InstallDirsdirdirhtmlAttrhtmlAttr :: String -> Html -> HtmlAttrStringHtmlHtmlAttrhtmlAttrhtmlAttr :: String -> Html -> HtmlAttrzStringHtmlHtmlAttrhtmlAttrhtmlAttr :: String -> Html -> HtmlAttrStringHtmlHtmlAttrHtmlAttrdata HtmlAttrC Attributes with name and value. HtmlAttrdata HtmlAttr Attributes with name and value. HtmlAttrdata HtmlAttr Attributes with name and value. Htmldata Html7Htmldata HtmlcHtmldata HtmlHTMLclass HTML aHTML 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 aHTML 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 aPHTML 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 :: HsExp0(HsExppatterns only HsVarOpHsVarOp :: HsName -> HsOpHsNameHsOp!variable operator (varop)  HsVarName HsVarName :: HsName -> HsCName HsNameHsCNamename of a method or field HsVarHsVar :: HsQName -> HsExp~HsQNameHsExp variable HsUnsafeHsUnsafe :: HsSafety׭HsSafety!call will not generate callbacks  HsUnitCon HsUnitCon ::  HsSpecialConUF HsSpecialCon+unit type and data constructor () HsUnGuardedRhsHsUnGuardedRhs :: HsExp -> HsRhs׮HsExpHsRhs'unguarded right hand side (exp) HsUnGuardedAltHsUnGuardedAlt :: HsExp ->  HsGuardedAltsnHsExp HsGuardedAlts-> exp  HsUnBangedTy HsUnBangedTy :: HsType ->  HsBangTypeHsType HsBangTypenon-strict component HsTyVarHsTyVar :: HsName -> HsTypeqHsNameHsTypetype variable  HsTyTuple HsTyTuple :: [HsType] -> HsType[]HsTypeHsType tuple type  HsTypeSig  HsTypeSig :: SrcLoc -> [HsName] ->  HsQualType -> HsDeclSrcLoc[]HsName HsQualTypeHsDecl HsTypeDecl  HsTypeDecl :: SrcLoc -> HsName -> [HsName] -> HsType -> HsDeclg6SrcLocHsName[]HsNameHsTypeHsDeclHsTypedata HsType%Haskell types and type constructors. HsTyFunHsTyFun :: HsType -> HsType -> HsType4HsTypeHsTypeHsTypefunction type HsTyConHsTyCon :: HsQName -> HsTypeHsQNameHsTypenamed type or type constructor HsTyAppHsTyApp :: HsType -> HsType -> HsType9HsTypeHsTypeHsType"application of a type constructor  HsTupleCon HsTupleCon :: Int ->  HsSpecialConŴInt HsSpecialCon?n-ary tuple type and data constructors (,) etc HsTupleHsTuple :: [HsExp] -> HsExpfO[]HsExpHsExptuple expression HsSymbolHsSymbol :: String -> HsName׵ĵStringHsNamevarsym or consym  HsStringPrim HsStringPrim :: String ->  HsLiteraldNString HsLiteralGHC unboxed string literal HsStringHsString :: String ->  HsLiteral϶String HsLiteralstring literal HsStmtdata HsStmt$lThis type represents both stmt in a do-expression, and qual in a list comprehension.  HsSpecialCondata  HsSpecialCon̷zConstructors with special syntax. These names are never qualified, and always refer to builtin type or data constructors. HsSafetydata HsSafetyz+Safety level for invoking a foreign entity HsSafeHsSafe :: HsSafety޸HsSafetycall may generate callbacks HsRightSectionHsRightSection :: HsQOp -> HsExp -> HsExpmHsQOpHsExpHsExp8right section (qop exp) HsRhsdata HsRhs6The right hand side of a function or pattern binding.  HsRecUpdate HsRecUpdate :: HsExp -> [HsFieldUpdate] -> HsExpHsExp[] HsFieldUpdateHsExprecord update expression  HsRecDecl  HsRecDecl :: SrcLoc -> HsName -> [([HsName], HsBangType)] ->  HsConDeclTSrcLocHsName[](,)[]HsName HsBangType HsConDeclrecord constructor  HsRecConstr HsRecConstr :: HsQName -> [HsFieldUpdate] -> HsExpBHsQName[] HsFieldUpdateHsExprecord construction expression HsQVarOpHsQVarOp :: HsQName -> HsQOpHsQNameHsQOp"variable operator (qvarop)  HsQualType HsQualType ::  HsContext -> HsType ->  HsQualTypeoM HsContextHsType HsQualType HsQualTypedata  HsQualTypeKA type qualified with a context. An unqualified type has an empty context.  HsQualifier HsQualifier :: HsExp -> HsStmtVDHsExpHsStmtan exp by itself: in a do-expression, an action whose result is discarded; in a list comprehension, a guard expression HsQOpdata HsQOp KPossibly qualified infix operators (qop), appearing in expressions. HsQNamedata HsQNameUThis type is used to represent qualified variables, and also qualified constructors. HsQConOpHsQConOp :: HsQName -> HsQOp=*HsQNameHsQOp%constructor operator (qconop)  HsPWildCard HsPWildCard :: HsPatHsPatwildcard pattern (_) HsPVarHsPVar :: HsName -> HsPat"HsNameHsPat variable HsPTupleHsPTuple :: [HsPat] -> HsPatx[]HsPatHsPattuple pattern HsPRecHsPRec :: HsQName ->  [HsPatField] -> HsPat#HsQName[] HsPatFieldHsPatlabelled pattern HsPParenHsPParen :: HsPat -> HsPatHsPatHsPatparenthesized pattern HsPNegHsPNeg :: HsPat -> HsPatHsPatHsPatnegated pattern HsPLitHsPLit ::  HsLiteral -> HsPatnY HsLiteralHsPatliteral constant HsPListHsPList :: [HsPat] -> HsPat[]HsPatHsPat list pattern  HsPIrrPat HsPIrrPat :: HsPat -> HsPatL;HsPatHsPat!irrefutable pattern (~)  HsPInfixApp  HsPInfixApp :: HsPat -> HsQName -> HsPat -> HsPatHsPatHsQNameHsPatHsPat$pattern with infix data constructor  HsPFieldPat HsPFieldPat :: HsQName -> HsPat ->  HsPatFieldHsQNameHsPat HsPatField HsPatFielddata  HsPatField,An fpat in a labeled record pattern.  HsPatBind  HsPatBind :: SrcLoc -> HsPat -> HsRhs -> [HsDecl] -> HsDeclSrcLocHsPatHsRhs[]HsDeclHsDeclHsPatdata HsPat*A pattern, to be matched against a value. HsPAsPatHsPAsPat :: HsName -> HsPat -> HsPat|HsNameHsPatHsPat@-pattern HsParenHsParen :: HsExp -> HsExpHsExpHsExpparenthesized expression HsPAppHsPApp :: HsQName -> [HsPat] -> HsPatwHsQName[]HsPatHsPat'data constructor and argument patterns hspacehspace :: Int -> HtmlAttrIntHtmlAttrHsOpdata HsOpD5Operators, appearing in infix declarations.  HsNewTypeDecl HsNewTypeDecl :: SrcLoc ->  HsContext -> HsName -> [HsName] ->  HsConDecl ->  [HsQName] -> HsDecl5SrcLoc HsContextHsName[]HsName HsConDecl[]HsQNameHsDeclHsNegAppHsNegApp :: HsExp -> HsExpHsExpHsExp*negation expression - exp HsNamedata HsName9AThis type is used to represent variables, and also constructors. HsModuleHsModule :: SrcLoc -> Module -> Maybe [HsExportSpec] -> [HsImportDecl] -> [HsDecl] -> HsModule)SrcLocModuleMaybe[] HsExportSpec[] HsImportDecl[]HsDeclHsModuleHsModuledata HsModuleA Haskell source module. HsMatchHsMatch :: SrcLoc -> HsName -> [HsPat] -> HsRhs -> [HsDecl] -> HsMatchhSrcLocHsName[]HsPatHsRhs[]HsDeclHsMatchHsMatchdata HsMatchClauses 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 -> HsExpZE HsLiteralHsExpliteral constant  HsListCon HsListCon ::  HsSpecialCon HsSpecialCon"list type constructor []  HsListComp HsListComp :: HsExp -> [HsStmt] -> HsExpaBHsExp[]HsStmtHsExplist comprehension HsListHsList :: [HsExp] -> HsExp[]HsExpHsExplist expression "hsLexhsLex ::  ReadP String1ReadPString@Haskell lexer: returns the lexed string, rather than the lexeme  HsLetStmt HsLetStmt :: [HsDecl] -> HsStmt[]HsDeclHsStmtlocal bindings HsLetHsLet :: [HsDecl] -> HsExp -> HsExpbC[]HsDeclHsExpHsExp%local declarations with let  HsLeftSection HsLeftSection :: HsExp -> HsQOp -> HsExpHsExpHsQOpHsExp7left section (exp qop) HsLambda HsLambda :: SrcLoc -> [HsPat] -> HsExp -> HsExpSrcLoc[]HsPatHsExpHsExplambda expression HsIVarHsIVar :: HsName ->  HsImportSpecL3HsName HsImportSpec variable  HsIThingWith HsIThingWith :: HsName ->  [HsCName] ->  HsImportSpecHsName[]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 ->  HsImportSpecHsName HsImportSpecoT(..): a class imported with all of its methods, or a datatype imported with all of its constructors. HsIrrPatHsIrrPat :: HsExp -> HsExpHsExpHsExppatterns only  HsIntPrim HsIntPrim :: Integer ->  HsLiteralInteger HsLiteralGHC unboxed integer literal HsIntHsInt :: Integer ->  HsLiteralInteger HsLiteralinteger literal  HsInstDecl HsInstDecl :: SrcLoc ->  HsContext -> HsQName -> [HsType] -> [HsDecl] -> HsDeclKSrcLoc HsContextHsQName[]HsType[]HsDeclHsDecl HsInfixDecl  HsInfixDecl :: SrcLoc -> HsAssoc -> Int -> [HsOp] -> HsDeclBSrcLocHsAssocInt[]HsOpHsDecl HsInfixApp  HsInfixApp :: HsExp -> HsQOp -> HsExp -> HsExpHsExpHsQOpHsExpHsExpinfix application  HsImportSpecdata  HsImportSpec Import specification.  HsImportDecl HsImportDecl :: SrcLoc -> Module -> Bool ->  Maybe Module -> Maybe (Bool, [HsImportSpec]) ->  HsImportDeclUSrcLocModuleBoolMaybeModuleMaybe(,)Bool[] HsImportSpec HsImportDecl HsImportDecldata  HsImportDeclImport declaration. HsIf HsIf :: HsExp -> HsExp -> HsExp -> HsExp) HsExpHsExpHsExpHsExpIif exp then exp else exp HsIdentHsIdent :: String -> HsNameStringHsNamevarid or conid HsIAbsHsIAbs :: HsName ->  HsImportSpecU<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 ->  HsGuardedRhsSrcLocHsExpHsExp HsGuardedRhs HsGuardedRhsdata  HsGuardedRhstA guarded right hand side | exp = exp. The first expression will be Boolean-valued.  HsGuardedAlts HsGuardedAlts :: [HsGuardedAlt] ->  HsGuardedAlts[] HsGuardedAlt HsGuardedAlts gdpat  HsGuardedAltsdata  HsGuardedAlts^ HsGuardedAlt  HsGuardedAlt :: SrcLoc -> HsExp -> HsExp ->  HsGuardedAltSrcLocHsExpHsExp HsGuardedAlt HsGuardedAltdata  HsGuardedAlt>tA guarded alternative | exp -> exp. The first expression will be Boolean-valued.  HsGenerator  HsGenerator :: SrcLoc -> HsPat -> HsExp -> HsStmtH'SrcLocHsPatHsExpHsStmt1a generator pat <- exp HsFunConHsFunCon ::  HsSpecialCon HsSpecialCon)function type constructor ->  HsFunBind HsFunBind ::  [HsMatch] -> HsDecl^D[]HsMatchHsDeclHsFracHsFrac :: Rational ->  HsLiteralRational HsLiteralfloating point literal HsForeignImportHsForeignImport :: SrcLoc -> String -> HsSafety -> String -> HsName -> HsType -> HsDeclSrcLocStringHsSafetyStringHsNameHsTypeHsDeclHsForeignExportHsForeignExport :: SrcLoc -> String -> String -> HsName -> HsType -> HsDeclrSrcLocStringStringHsNameHsTypeHsDecl HsFloatPrim HsFloatPrim :: Rational ->  HsLiteralRational HsLiteralGHC unboxed float literal  HsFieldUpdate HsFieldUpdate :: HsQName -> HsExp ->  HsFieldUpdateHsQNameHsExp HsFieldUpdate HsFieldUpdatedata  HsFieldUpdateGAn fbind in a labeled record construction or update expression.  HsExpTypeSig  HsExpTypeSig :: SrcLoc -> HsExp ->  HsQualType -> HsExpSrcLocHsExp HsQualTypeHsExpexpression type signature  HsExportSpecdata  HsExportSpec<Export specification. HsExpdata HsExpdHaskell 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 ->  HsExportSpecN4HsQName HsExportSpec variable  HsEThingWith HsEThingWith :: HsQName ->  [HsCName] ->  HsExportSpecHsQName[]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 ->  HsExportSpecHsQName HsExportSpecoT(..): a class exported with all of its methods, or a datatype exported with all of its constructors. hsephsep :: [Doc] -> Doc[]DocDoc"List version of <+>.  HsEnumFromTo HsEnumFromTo :: HsExp -> HsExp -> HsExp@(HsExpHsExpHsExp/bounded arithmetic sequence, incrementing by 1 HsEnumFromThenTo HsEnumFromThenTo :: HsExp -> HsExp -> HsExp -> HsExp HsExpHsExpHsExpHsExp;bounded arithmetic sequence, with first two elements given HsEnumFromThenHsEnumFromThen :: HsExp -> HsExp -> HsExpHsExpHsExpHsExp=unbounded arithmetic sequence, with first two elements given  HsEnumFrom HsEnumFrom :: HsExp -> HsExpcRHsExpHsExp1unbounded arithmetic sequence, incrementing by 1 HsEModuleContentsHsEModuleContents :: Module ->  HsExportSpecModule HsExportSpec'module M: re-export a module. HsEAbsHsEAbs :: HsQName ->  HsExportSpecHsQName HsExportSpecHT: a class or datatype exported abstractly, or a type synonym.  HsDoublePrim HsDoublePrim :: Rational ->  HsLiteral]ERational HsLiteralGHC unboxed double literal HsDoHsDo :: [HsStmt] -> HsExp[]HsStmtHsExpPdo-expression: the last statement in the list should be an expression.  HsDefaultDecl HsDefaultDecl :: SrcLoc -> [HsType] -> HsDeclSrcLoc[]HsTypeHsDeclHsDecldata HsDecl HsDataDecl HsDataDecl :: SrcLoc ->  HsContext -> HsName -> [HsName] ->  [HsConDecl] ->  [HsQName] -> HsDeclSrcLoc HsContextHsName[]HsName[] HsConDecl[]HsQNameHsDecl HsContexttype  HsContext = [HsAsst]1HsConsHsCons ::  HsSpecialCon}n HsSpecialCon#list data constructor (:) HsConOpHsConOp :: HsName -> HsOpHsNameHsOp$constructor operator (conop)  HsConName HsConName :: HsName -> HsCNamenHsNameHsCNamename of a data constructor  HsConDecl  HsConDecl :: SrcLoc -> HsName ->  [HsBangType] ->  HsConDeclISrcLocHsName[] HsBangType HsConDeclordinary data constructor  HsConDecldata  HsConDecl#Declaration of a data constructor. HsConHsCon :: HsQName -> HsExpHsQNameHsExpdata constructor mhscolourVerbosityhscolourVerbosity ::  HscolourFlags -> Flag Verbosity HscolourFlagsFlag VerbositymhscolourVerbosehscolourVerbose ::  HscolourFlags ->  Verbosity< HscolourFlags VerbosityshscolourProgramhscolourProgram :: ProgramProgram hscolourPref hscolourPref :: FilePath -> PackageDescription -> FilePath2FilePathPackageDescriptionFilePath~ hscolourHook hscolourHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HscolourFlags -> IO ()E UserHooksPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()?Over-ride this hook to get different behavior during hscolour. m HscolourFlags HscolourFlags ::  Flag FilePath ->  Flag Bool ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  HscolourFlagsFFlagFilePathFlagBoolFlagFilePath VerbosityFlag Verbosity HscolourFlagsm HscolourFlagsdata  HscolourFlagsmhscolourExecutableshscolourExecutables ::  HscolourFlags ->  Flag BoolsS HscolourFlagsFlagBoolmhscolourDistPrefhscolourDistPref ::  HscolourFlags ->  Flag FilePath HscolourFlagsFlagFilePathm hscolourCSS hscolourCSS ::  HscolourFlags ->  Flag FilePathc HscolourFlagsFlagFilePathmhscolourCommandhscolourCommand :: CommandUI HscolourFlags CommandUI HscolourFlagshscolour hscolour :: PackageDescription -> LocalBuildInfo -> [PPSuffixHandler] ->  HscolourFlags -> IO ()PackageDescriptionLocalBuildInfo[]PPSuffixHandler HscolourFlagsIO()HsCNamedata HsCName/lA name (cname) of a component of a class or data type in an import or export specification.  HsClassDecl HsClassDecl :: SrcLoc ->  HsContext -> HsName -> [HsName] -> [HsDecl] -> HsDecl=SrcLoc HsContextHsName[]HsName[]HsDeclHsDecl HsCharPrim HsCharPrim :: Char ->  HsLiteralChar HsLiteralGHC unboxed character literal HsCharHsChar :: Char ->  HsLiteralaMChar HsLiteralcharacter literal HsCaseHsCase :: HsExp -> [HsAlt] -> HsExpHsExp[]HsAltHsExp1case exp of alts s hsc2hsProgram hsc2hsProgram :: ProgramlbProgram HsBangTypedata  HsBangType[The type of a constructor argument or field, optionally including a strictness annotation.  HsBangedTy HsBangedTy :: HsType ->  HsBangTypekTHsType 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 :: HsAssocHsAssoc;right-associative operator (declared with infixr)  HsAssocNone HsAssocNone :: HsAssocNDHsAssoc8non-associative operator (declared with infix)  HsAssocLeft HsAssocLeft :: HsAssocHsAssoc;left-associative operator (declared with infixl). HsAssocdata HsAssoc?Associativity of an operator. HsAsPatHsAsPat :: HsName -> HsExp -> HsExpHsNameHsExpHsExppatterns only HsAppHsApp :: HsExp -> HsExp -> HsExpM5HsExpHsExpHsExpordinary application HsAlt HsAlt :: SrcLoc -> HsPat ->  HsGuardedAlts -> [HsDecl] -> HsAlt SrcLocHsPat HsGuardedAlts[]HsDeclHsAltHsAltdata HsAltJ -An alt in a case expression. hreflanghreflang :: String -> HtmlAttr  StringHtmlAttrhreflanghreflang :: String -> HtmlAttr? * StringHtmlAttrhreflanghreflang :: String -> HtmlAttr  StringHtmlAttrhrefhref :: String -> HtmlAttr  StringHtmlAttrhrefhref :: String -> HtmlAttr[ F StringHtmlAttrhrefhref :: String -> HtmlAttr  StringHtmlAttrhrhr :: Html  Htmlhrhr :: Html  Htmlhrhr :: HtmlS L Html hPutStrLn hPutStrLn :: Handle ->  ByteString -> IO ()  Handle ByteStringIO()9Write a ByteString to a handle, appending a newline byte hPutStrhPutStr :: Handle ->  ByteString -> IO () q Handle ByteStringIO()/A synonym for hPut, for compatibility hPutStrhPutStr :: Handle ->  ByteString -> IO ()B!Handle ByteStringIO()/A synonym for hPut, for compatibility ` hPutArray  hPutArray :: Handle -> IOUArray Int Word8 -> Int -> IO ()HandleIOUArrayIntWord8IntIO()@Writes an array of Word8 to the specified Handle. hPuthPut :: Handle ->  ByteString -> IO ()Handle ByteStringIO()<Outputs a ByteString to the specified Handle. hPuthPut :: Handle ->  ByteString -> IO ()oHandle ByteStringIO()<Outputs a ByteString to the specified Handle. hoursToTimeZonehoursToTimeZone :: Int -> TimeZone8&IntTimeZone?Create a nameless non-summer timezone for this number of hours  hotLinkURL hotLinkURL :: HotLink -> URLHotLinkURL hotLinkURL hotLinkURL :: HotLink -> URL7&HotLinkURL hotLinkURL hotLinkURL :: HotLink -> URLHotLinkURLhotLinkContentshotLinkContents :: HotLink -> HtmlHotLinkHtmlhotLinkContentshotLinkContents :: HotLink -> Htmlo]HotLinkHtmlhotLinkContentshotLinkContents :: HotLink -> HtmlHotLinkHtmlhotLinkAttributeshotLinkAttributes :: HotLink ->  [HtmlAttr][?HotLink[]HtmlAttrhotLinkAttributeshotLinkAttributes :: HotLink ->  [HtmlAttr]HotLink[]HtmlAttrhotLinkAttributeshotLinkAttributes :: HotLink ->  [HtmlAttr][?HotLink[]HtmlAttrhotlinkhotlink :: URL -> Html -> HotLinkURLHtmlHotLinkhotlinkhotlink :: URL -> Html -> HotLink;$URLHtmlHotLinkhotlinkhotlink :: URL -> Html -> HotLinkURLHtmlHotLinkHotLink HotLink :: URL -> Html ->  [HtmlAttr] -> HotLinkAURLHtml[]HtmlAttrHotLinkHotLinkdata HotLinksHotLink HotLink :: URL -> Html ->  [HtmlAttr] -> HotLink URLHtml[]HtmlAttrHotLinkHotLinkdata HotLink;HotLink HotLink :: URL -> Html ->  [HtmlAttr] -> HotLinkURLHtml[]HtmlAttrHotLinkHotLinkdata HotLink~hookedProgramshookedPrograms ::  UserHooks ->  [Program]b UserHooks[]ProgramfThese programs are detected at configure time. Arguments for them are added to the configure command. ~hookedPreProcessorshookedPreProcessors ::  UserHooks -> [PPSuffixHandler]{V UserHooks[]PPSuffixHandlerHCustom preprocessors in addition to and overriding knownSuffixHandlers. s hmakeProgram hmakeProgram :: ProgramProgramhiddenhidden :: String -> String -> HtmljStringStringHtmlhiddenhidden :: String -> String -> HtmlStringStringHtmlhiddenhidden :: String -> String -> HtmlgNStringStringHtmlhGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteStringHandleIntIO 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. hGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteString2HandleIntIO 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. hGetLinehGetLine :: Handle ->  IO ByteStringJ-HandleIO ByteStringRead a line from a handle  hGetContents hGetContents :: Handle ->  IO ByteStringHandleIO 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.  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#o#HandleIOUArrayIntWord8IntIOIntYReads a number of Word8s from the specified Handle directly into an array. hGethGet :: Handle -> Int ->  IO ByteStringx$V$HandleIntIO ByteString[Read n bytes into a ByteString, directly from the specified Handle. hGethGet :: Handle -> Int ->  IO ByteStringP%.%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. 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. j HereDocuments HereDocuments ::  Extension(( Extensionheightheight :: String -> HtmlAttr?)*)StringHtmlAttrheightheight :: String -> HtmlAttr))StringHtmlAttrheightheight :: String -> HtmlAttr))StringHtmlAttrheaderheader :: Html -> HtmlS*D*HtmlHtmlheaderheader :: Html -> Html**HtmlHtmlheaderheader :: Html -> Html**HtmlHtmlheadhead ::  ByteString -> Word8Y+C+ ByteStringWord8PO(1) Extract the first element of a ByteString, which must be non-empty. headhead ::  ByteString -> Char,+ ByteStringCharPO(1) Extract the first element of a ByteString, which must be non-empty. hcathcat :: [Doc] -> Doc,,[]DocDoc!List version of <>. hasTrailingPathSeparatorhasTrailingPathSeparator :: FilePath -> BoolJ-7-FilePathBoolIs an item either a directory or the last character a path separator?
hasTrailingPathSeparator "test" == False
hasTrailingPathSeparator "test/" == True
hasTrailingPathSeparatorhasTrailingPathSeparator :: FilePath -> Boolp.].FilePathBoolIs an item either a directory or the last character a path separator?
hasTrailingPathSeparator "test" == False
hasTrailingPathSeparator "test/" == True
 haskellStyle haskellStyle :: LanguageDef stu/a/ 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 st0z0 LanguageDefst2The language definition for the Haskell language. haskellhaskell :: TokenParser st11 TokenParserst"A lexer for the haskell language. XhashStableNamehashStableName ::  StableName a -> Int11 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).  hasExtension hasExtension :: FilePath -> Bool#33FilePathBoolhDoes the given filename have an extension?
null (takeExtension x) == not (hasExtension x)
 hasExtension hasExtension :: FilePath -> Bool33FilePathBoolhDoes the given filename have an extension?
null (takeExtension x) == not (hasExtension x)
hasDrivehasDrive :: FilePath -> Bool44FilePathBoolODoes a path have a drive.
not (hasDrive x) == null (takeDrive x)
hasDrivehasDrive :: FilePath -> Boolj5W5FilePathBoolODoes a path have a drive.
not (hasDrive x) == null (takeDrive x)
s happyProgram happyProgram :: Program65Programhang hang :: Doc -> Int -> Doc -> Doc{6d6DocIntDocDoc0
hang d1 n d2 = sep [d1, nest n d2]
mhaddockVerbosityhaddockVerbosity ::  HaddockFlags -> Flag Verbosity:77 HaddockFlagsFlag VerbositymhaddockVerbosehaddockVerbose ::  HaddockFlags ->  Verbosity77 HaddockFlags VerbosityshaddockProgramhaddockProgram :: Program 88Program haddockPref haddockPref :: FilePath -> PackageDescription -> FilePath88FilePathPackageDescriptionFilePath haddockName haddockName :: PackageDescription -> FilePath,9 9PackageDescriptionFilePathmhaddockInternalhaddockInternal ::  HaddockFlags ->  Flag Bool99 HaddockFlagsFlagBoolmhaddockHtmlLocationhaddockHtmlLocation ::  HaddockFlags ->  Flag String>:: HaddockFlagsFlagStringmhaddockHscolourCsshaddockHscolourCss ::  HaddockFlags ->  Flag FilePath:: HaddockFlagsFlagFilePathmhaddockHscolourhaddockHscolour ::  HaddockFlags ->  Flag BoolR;3; HaddockFlagsFlagBool~ haddockHook haddockHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HaddockFlags -> IO ()a< < UserHooksPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()>Over-ride this hook to get different behavior during haddock. m haddockHoogle haddockHoogle ::  HaddockFlags ->  Flag Bool=< HaddockFlagsFlagBoolm HaddockFlags HaddockFlags ::  Flag Bool ->  Flag String ->  Flag Bool ->  Flag Bool ->  Flag FilePath ->  Flag Bool ->  Flag FilePath ->  Flag FilePath ->  Verbosity ->  Flag Verbosity ->  HaddockFlags>L> FlagBoolFlagStringFlagBoolFlagBoolFlagFilePathFlagBoolFlagFilePathFlagFilePath VerbosityFlag Verbosity HaddockFlagsm HaddockFlagsdata  HaddockFlags5?mhaddockExecutableshaddockExecutables ::  HaddockFlags ->  Flag Bool?? HaddockFlagsFlagBoolmhaddockDistPrefhaddockDistPref ::  HaddockFlags ->  Flag FilePathI@&@ HaddockFlagsFlagFilePath haddockdir haddockdir :: InstallDirs dir -> dir@@ InstallDirsdirdirm haddockCss haddockCss ::  HaddockFlags ->  Flag FilePath=AA HaddockFlagsFlagFilePathmhaddockCommandhaddockCommand :: CommandUI HaddockFlagsAA CommandUI HaddockFlagshaddock haddock :: PackageDescription -> LocalBuildInfo -> [PPSuffixHandler] ->  HaddockFlags -> IO ()BUBPackageDescriptionLocalBuildInfo[]PPSuffixHandler HaddockFlagsIO()h6h6 :: Html -> HtmlBBHtmlHtmlh6h6 :: Html -> HtmlCC4CHtmlHtmlh6h6 :: Html -> HtmlCCHtmlHtmlh5h5 :: Html -> HtmlCCHtmlHtmlh5h5 :: Html -> Html'DDHtmlHtmlh5h5 :: Html -> HtmlsDdDHtmlHtmlh4h4 :: Html -> HtmlDDHtmlHtmlh4h4 :: Html -> Html EDHtmlHtmlh4h4 :: Html -> HtmlWEHEHtmlHtmlh3h3 :: Html -> HtmlEEHtmlHtmlh3h3 :: Html -> HtmlEEHtmlHtmlh3h3 :: Html -> Html;F,FHtmlHtmlh2h2 :: Html -> HtmlFxFHtmlHtmlh2h2 :: Html -> HtmlFFHtmlHtmlh2h2 :: Html -> HtmlGGHtmlHtmlh1h1 :: Html -> HtmlkG\GHtmlHtmlh1h1 :: Html -> HtmlGGHtmlHtmlh1h1 :: Html -> HtmlHGHtmlHtml gzipWithT gzipWithT :: GenericQ GenericT -> GenericQ GenericTHhHGenericQGenericTGenericQGenericTTwin map for transformation  gzipWithQ gzipWithQ :: GenericQ (GenericQ r) -> GenericQ (GenericQ [r])aI"IGenericQGenericQrGenericQGenericQ[]rTwin map for queries  gzipWithM gzipWithM ::  Monad m => GenericQ (GenericM m) -> GenericQ (GenericM m)3JIMonadmGenericQGenericMmGenericQGenericMm$Twin map for monadic transformation gzipgzip :: GenericQ (GenericM Maybe) -> GenericQ (GenericM Maybe)KJGenericQGenericMMaybeGenericQGenericMMaybeAGeneric zip controlled by a function with type-specific branches gunfold gunfold ::  Data a => (c (b -> r) -> c r) ->  (r -> c r) -> Constr -> c a LKDataacbrcrrcrConstrcaguigui :: String -> Html -> HtmluL^LStringHtmlHtmlguigui :: String -> Html -> HtmlLLStringHtmlHtmlguigui :: String -> Html -> HtmlEM.MStringHtmlHtmlGuardQtype GuardQ = Q GuardMguardedBguardedB :: [Q (Guard, Exp)] -> BodyQMM[]Q(,)GuardExpBodyQGuardedBGuardedB :: [(Guard, Exp)] -> BodytNRN[](,)GuardExpBodyGuarddata GuardN gtypecount gtypecount :: Typeable a => a ->  GenericQ Int(OOTypeableaaGenericQInt>Determine the number of nodes of a given type in a given term GTGT ::  Data a => a -> a ->  GenericT'OODataaaa GenericT'gsizegsize ::  Data a => a -> Int:P$PDataaaInt,Compute size of an arbitrary data structure gshowgshow ::  Data a => a -> StringPPDataaaString0Generic show: an alternative to "deriving Show" groupBygroupBy :: (Word8 -> Word8 -> Bool) ->  ByteString ->  [ByteString]QtQWord8Word8Bool ByteString[] ByteStringKThe groupBy function is the non-overloaded version of group. groupBygroupBy :: (Char -> Char -> Bool) ->  ByteString ->  [ByteString]RmRCharCharBool ByteString[] ByteStringKThe groupBy function is the non-overloaded version of group. groupgroup ::  ByteString ->  [ByteString]_S>S 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. groupgroup ::  ByteString ->  [ByteString]eUDU 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 -> IntWWIntegerIntInt|The number of days in a given month according to the proleptic Gregorian calendar. First argument is year, second is month. sgreencardProgramgreencardProgram :: ProgramXyXProgramgreengreen :: StringXXStringgreadgread ::  Data a => ReadS aYYDataaReadSa0Generic read: an alternative to "deriving Read" graygray :: StringY|YStringGQGQ ::  GenericQ r ->  GenericQ' rYYGenericQr GenericQ'r gnodecount gnodecount ::  GenericQ IntHZ6ZGenericQInt2Determine the number of all nodes in a given term gmapTgmapT ::  Data a => (b -> b) -> a -> aZZDataabbaagmapQr gmapQr ::  Data a => (r' -> r -> r) -> r ->  (a -> r') -> a -> r[v[Dataar'rrrar'argmapQl gmapQl ::  Data a => (r -> r' -> r) -> r ->  (a -> r') -> a -> rS\'\Dataarr'rrar'argmapQi gmapQi ::  Data a => Int -> (a -> u) -> a -> u\\DataaIntauaugmapQgmapQ ::  Data a => (a -> u) -> a -> [u]_]=]Dataaaua[]ugmapMpgmapMp :: (Data a, MonadPlus m) =>  (a -> m a) -> a -> m a^]Dataa MonadPlusmamaamagmapMogmapMo :: (Data a, MonadPlus m) =>  (a -> m a) -> a -> m a^u^Dataa MonadPlusmamaamagmapMgmapM :: (Data a, Monad m) =>  (a -> m a) -> a -> m aG__DataaMonadmamaama gmapAccumT  gmapAccumT ::  Data d => (a -> d -> (a, d)) -> a -> d -> (a, d)__Datadad(,)adad(,)adgmapT with accumulation  gmapAccumQr gmapAccumQr ::  Data d => (r' -> r -> r) -> r -> (a -> d -> (a, r')) -> a -> d -> (a, r)a`Datadr'rrrad(,)ar'ad(,)argmapQr with accumulation  gmapAccumQl gmapAccumQl ::  Data d => (r -> r' -> r) -> r -> (a -> d -> (a, r')) -> a -> d -> (a, r)baDatadrr'rrad(,)ar'ad(,)argmapQl with accumulation  gmapAccumQ  gmapAccumQ ::  Data d => (a -> d -> (a, q)) -> a -> d -> (a, [q])bbDatadad(,)aqad(,)a[]qgmapQ with accumulation  gmapAccumM  gmapAccumM :: (Data d, Monad m) => (a -> d -> (a, m d)) -> a -> d -> (a, m d)ccDatadMonadmad(,)amdad(,)amdgmapM with accumulation GMGM ::  Data a => a -> m a ->  GenericM' mxdOdDataaama GenericM'mm globalVersion globalVersion ::  GlobalFlags ->  Flag Booldd GlobalFlagsFlagBool}GlobalPackageDBGlobalPackageDB ::  PackageDBMeAe PackageDBmglobalNumericVersionglobalNumericVersion ::  GlobalFlags ->  Flag Boolee GlobalFlagsFlagBoolm GlobalFlags GlobalFlags ::  Flag Bool ->  Flag Bool ->  GlobalFlagstfHfFlagBoolFlagBool GlobalFlagsm GlobalFlagsdata  GlobalFlagsf;Flags that apply at the top level, not to any sub-command. m globalCommand globalCommand :: CommandUI GlobalFlagsXg=g CommandUI GlobalFlagsglobalglobal :: Name -> ExpQggNameExpQglengthglength ::  GenericQ IntggGenericQInt9Count the number of immediate subterms of the given term ghcVerbosityOptionsghcVerbosityOptions ::  Verbosity -> [String]hh Verbosity[]Strings ghcProgram ghcProgram :: ProgramihPrograms ghcPkgProgram ghcPkgProgram :: ProgramTiJiProgram ghcOptions  ghcOptions :: LocalBuildInfo ->  BuildInfo -> FilePath -> [String]jiLocalBuildInfo BuildInfoFilePath[]String gfoldlAccum  gfoldlAccum ::  Data d => "(a -> c (d -> r) -> d -> (a, c r)) -> (a -> g -> (a, c g)) -> a -> d -> (a, c d)*kjDatadacdrd(,)acrag(,)acgad(,)acdgfoldl with accumulation gfoldlgfoldl ::  Data a =>  c (a -> b) -> a -> c b -> g -> c g -> a -> c alkDataacabacbgcgaca gfindtype gfindtype :: (Data x, Typeable y) => x -> Maybe yl{lDataxTypeableyxMaybey:Find (unambiguously) an immediate subterm of a given type  getZonedTime getZonedTime ::  IO ZonedTime  IO TimeZonemmUTCTimeIOTimeZoneQGet the local time-zone for a given time (varying as per summertime adjustments) getStategetState ::  Monad m => ParsecT s u m uunQnMonadmParsecTsumu Returns the current user state.  getSrcLoc getSrcLoc :: P SrcLocnnPSrcLoc getSearchPath getSearchPath ::  IO [FilePath]Eo.oIO[]FilePath&Get a list of filepaths in the $PATH.  getSearchPath getSearchPath ::  IO [FilePath]ooIO[]FilePath&Get a list of filepaths in the $PATH.  getPosition getPosition ::  Monad m => ParsecT s u m SourcePos}pQpMonadmParsecTsum SourcePos@Returns the current source position. See also SourcePos. getPersistBuildConfiggetPersistBuildConfig :: FilePath -> IO LocalBuildInfoTq1qFilePathIOLocalBuildInfoRead the localBuildInfoFile. Error if it doesn't exist. Also fail if the file containing LocalBuildInfo is older than the .cabal file, indicating that a re-configure is required. getParserStategetParserState ::  Monad m => ParsecT s u m (State s u)rsrMonadmParsecTsumStatesu8Returns the full parser state as a State record. RgetOpt' getOpt' ::  ArgOrder a ->  [OptDescr a] -> [String] -> #([a], [String], [String], [String])sssArgOrdera[]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. RgetOpt getOpt ::  ArgOrder a ->  [OptDescr a] -> [String] -> ([a], [String], [String])u+uArgOrdera[]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 OrderingwwLexaOrdering]getNumElementsgetNumElements :: (MArray a e m, Ix i) => a i e -> m IntLxxMArrayaemIxiaiemIntgetModJulianDategetModJulianDate ::  UniversalTime -> Rationalxx UniversalTimeRationalgetLinegetLine ::  IO ByteString!yyIO ByteStringRead a line from stdin. getInstalledPackages getInstalledPackages ::  Verbosity ->  PackageDB -> ProgramConfiguration -> &IO (PackageIndex InstalledPackageInfo)Qzy Verbosity PackageDBProgramConfigurationIO PackageIndexInstalledPackageInfogetInstalledPackages getInstalledPackages ::  Verbosity ->  PackageDB -> ProgramConfiguration -> &IO (PackageIndex InstalledPackageInfo)i{{ Verbosity PackageDBProgramConfigurationIO PackageIndexInstalledPackageInfogetInstalledPackages getInstalledPackages ::  Verbosity -> Compiler ->  PackageDB -> ProgramConfiguration -> .IO (Maybe (PackageIndex InstalledPackageInfo))|B| VerbosityCompiler PackageDBProgramConfigurationIOMaybe PackageIndexInstalledPackageInfogetInputgetInput ::  Monad m => ParsecT s u m s#}|MonadmParsecTsumsReturns the current input getInputgetInput ::  Lex r String}~}LexrStringMgetErrnogetErrno :: IO Errno}}IOErrno?Get the current value of errno in the current thread. agetElemsgetElems :: (MArray a e m, Ix i) => a i e -> m [e]~~~MArrayaemIxiaiem[]e5Return a list of all the elements of a mutable array ]getElemsgetElems :: (MArray a e m, Ix i) => a i e -> m [e]NMArrayaemIxiaiem[]e5Return a list of all the elements of a mutable array getEchogetEcho :: FD -> IO BoolFDIOBoolgetCurrentTimeZonegetCurrentTimeZone ::  IO TimeZone{jIOTimeZoneGet the current time-zone getCurrentTimegetCurrentTime ::  IO UTCTimeIOUTCTime0Get the current UTC time from the system clock.  getContents getContents ::  IO ByteString{hIO ByteStringGgetContents. Equivalent to hGetContents stdin. Will read lazily  getContents getContents ::  IO ByteString IO ByteStringgetContents. Read stdin strictly. Equivalent to hGetContents stdin The Handle is closed after the contents have been read. .getChanContentsgetChanContents :: Chan a -> IO [a]ChanaIO[]alReturn a lazy list representing the contents of the supplied Chan, much like System.IO.hGetContents. a getBounds getBounds :: (MArray a e m, Ix i) => a i e -> m (i, i)'MArrayaemIxiaiem(,)ii Returns the bounds of the array a getBounds getBounds :: (MArray a e m, Ix i) => a i e -> m (i, i)MArrayaemIxiaiem(,)ii] getBounds getBounds :: (MArray a e m, Ix i) => a i e -> m (i, i)SMArrayaemIxiaiem(,)iia 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. ] getAssocs getAssocs :: (MArray a e m, Ix i) => a i e ->  m [(i, e)]1MArrayaemIxiaiem[](,)ieJReturn a list of all the associations of a mutable array, in index order. get_console_echoget_console_echo :: CInt -> IO CIntׇCIntIOCInt#getget ::  ReadPrec Char7$ReadPrecCharJConsumes and returns the next character. Fails if there is no input left.  getget ::  ReadP CharƈReadPCharJConsumes and returns the next character. Fails if there is no input left. geqgeq ::  Data a => a -> a -> Bool}cDataaaaBool2Generic 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] stNJ GenParsertype  GenParser t st = Parsec ByteString stGenLanguageDefdata GenLanguageDef s u maThe 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 mcThe 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'X'Other first-class polymorphic wrappers GenericTtype GenericT = a -> a=Generic transformations, i.e., take an "a" and return an "a" jGenericsGenerics ::  ExtensionE9 ExtensionGenericRtype GenericR m = m aZGeneric readers, say monadic builders, i.e., produce an "a" with the help of a monad "m".  GenericQ'newtype  GenericQ' rGenericQtype GenericQ r = a -> rYBGeneric queries of type "r", i.e., take any "a" and return an "r"  GenericM'newtype  GenericM' m֏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' c4GenericcGeneric'cGeneric'data Generic' cjTWrapped generic functions; recall: [Generic c] would be legal but [Generic' c] not. Generictype Generic c = a -> c axThe general scheme underlying generic functions assumed by gfoldl; there are isomorphisms such as GenericT = Generic T. jGeneralizedNewtypeDerivingGeneralizedNewtypeDeriving ::  Extensionْ Extensiongdepthgdepth ::  GenericQ Int4"GenericQInt"Determine depth of the given term gcountgcount ::  GenericQ Bool ->  GenericQ IntғGenericQBoolGenericQInt;Determine the number of all suitable nodes in a given term  gathergather :: ReadP a -> ReadP (String, a)bReadPaReadP(,)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_jGADTsGADTs ::  Extensionޕ ExtensionFunDepFunDep :: [Name] -> [Name] -> FunDephE[]Name[]NameFunDepFunDepdata FunDepfunDfunD :: Name ->  [ClauseQ] -> DecQ Name[]ClauseQDecQFunDFunD :: Name -> [Clause] -> Dec|`Name[]ClauseDec*Functorclass 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. jFunctionalDependenciesFunctionalDependencies ::  ExtensionZN Extensionfun_tycon_namefun_tycon_name :: HsQNameHsQName fun_tycon fun_tycon :: HsTypeHsType fullRender fullRender :: Mode -> Int -> Float ->  TextDetails -> a -> a -> a -> Doc -> aܚ ModeIntFloat TextDetailsaaaDoca!The general rendering interface.  fullErrorType fullErrorType ::  IOErrorTypeUG IOErrorTypeAI/O error where the operation failed because the device is full. fuchsiafuchsia :: String؛ϛStringfstPairFstListfstPairFstList ::  NFData a => Strategy [(a, b)]c6NFDataaStrategy[](,)abfsepfsep :: [Doc] -> Doc[]DocDoc("Paragraph fill" version of sep. vfromUTF8fromUTF8 :: String -> String?,StringStringfromToRfromToR :: ExpQ -> ExpQ -> RangeQExpQExpQRangeQFromToRFromToR :: Exp -> Exp -> RangeExpExpRangefromToEfromToE :: ExpQ -> ExpQ -> ExpQpExpQExpQExpQ fromThenToR  fromThenToR :: ExpQ -> ExpQ -> ExpQ -> RangeQExpQExpQExpQRangeQ FromThenToR  FromThenToR :: Exp -> Exp -> Exp -> RangeExpExpExpRange fromThenToE  fromThenToE :: ExpQ -> ExpQ -> ExpQ -> ExpQ#ExpQExpQExpQExpQ fromThenR fromThenR :: ExpQ -> ExpQ -> RangeQExpQExpQRangeQ FromThenR FromThenR :: Exp -> Exp -> RangeExpExpRange fromThenE fromThenE :: ExpQ -> ExpQ -> ExpQu`ExpQExpQExpQfromRfromR :: ExpQ -> RangeQˡExpQRangeQFromRFromR :: Exp -> RangeExpRangefromPathTemplatefromPathTemplate ::  PathTemplate -> FilePath PathTemplateFilePath8Convert back to a path, any remaining vars are included zfromListfromList :: Package pkg => [pkg] -> PackageIndex pkgm:Packagepkg[]pkg PackageIndexpkgjBuild an index out of a bunch of Packages. If there are duplicates, later ones mask earlier ones.  fromGregorian  fromGregorian :: Integer -> Int -> Int -> DayeJIntegerIntIntDayconvert 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. fromForeignPtr fromForeignPtr :: ForeignPtr Word8 -> Int -> Int ->  ByteStringե ForeignPtrWord8IntInt ByteString1O(1) Build a ByteString from a ForeignPtr mfromFlagOrDefaultfromFlagOrDefault :: a -> Flag a -> amaFlagaamfromFlagfromFlag :: Flag a -> aڦɦFlagaafromEfromE :: ExpQ -> ExpQ,ExpQExpQ fromConstrM fromConstrM :: (Monad m, Data a) => m a -> Constr -> m aҧMonadmDataamaConstrma(Monadic variation on fromConstrB  fromConstrB fromConstrB ::  Data a => a -> Constr -> a{_DataaaConstra5Build a term and use a generic function for subterms  fromConstr fromConstr ::  Data a => Constr -> aDataaConstraBuild a term skeleton  fromChunks fromChunks ::  [ByteString] ->  ByteString[] ByteString ByteStringUO(c) Convert a list of strict ByteString into a lazy ByteString PfromBoolfromBool ::  Num a => Bool -> akUNumaBoola<Convert a Haskell Bool to its numeric representation ]freezeSTUArrayfreezeSTUArray :: Ix i => STUArray s i e -> ST s (UArray i e)UIxiSTUArraysieSTsUArrayieafreezefreeze :: $(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. ]freezefreeze :: $(Ix i, MArray a e m, IArray b e) => a i e ->  m (b i e)W IxiMArrayaemIArraybeaiembieConverts a mutable array (any instance of MArray) to an immutable array (any instance of IArray) by taking a complete copy of it. OfreePoolfreePool :: Pool -> IO ()D1PoolIO()UDeallocate a memory pool and everything which has been allocated in the pool itself.  freeDirEnt freeDirEnt ::  Ptr CDirent -> IO () PtrCDirentIO()freefree :: Ptr a -> IO ()eNPtraIO()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 -> HtmlHtmlHtmlframesetframeset :: Html -> HtmlHtmlHtml frameborder frameborder :: Int -> HtmlAttrsaIntHtmlAttr frameborder frameborder :: Int -> HtmlAttrױűIntHtmlAttrframeframe :: Html -> Html)HtmlHtmlframeframe :: Html -> Html{lHtmlHtmls FoundOnSystem FoundOnSystem :: FilePath -> ProgramLocationݲFilePathProgramLocation;The location of the program, as located by searching PATH.  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 -> HtmlHtmlHtmlformform :: Html -> Html7(HtmlHtmlformform :: Html -> HtmlxHtmlHtmlforImpDforImpD :: Callconv -> Safety -> String -> Name -> TypeQ -> DecQGCallconvSafetyStringNameTypeQDecQjForeignFunctionInterfaceForeignFunctionInterface ::  Extension ExtensionForeignDForeignD :: Foreign -> Dec ForeignDecForeigndata Foreign?forceforce ::  NFData a => a -> aNFDataaaaforallT forallT :: [Name] -> CxtQ -> TypeQ -> TypeQ, []NameCxtQTypeQTypeQForallT ForallT :: [Name] -> Cxt -> Type -> Type[]NameCxtTypeTypeForallC ForallC :: [Name] -> Cxt -> Con -> Con8[]NameCxtConConfontfont :: Html -> HtmlyHtmlHtmlfoldr1'foldr1' :: (Char -> Char -> Char) ->  ByteString -> Char CharCharChar ByteStringCharA strict variant of foldr1 foldr1foldr1 :: (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 foldr1foldr1 :: (Char -> Char -> Char) ->  ByteString -> CharCharCharChar ByteStringCharfoldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty ByteStrings foldr' foldr' :: (Char -> a -> a) -> a ->  ByteString -> aCharaaa ByteStringa''foldr\'' is a strict variant of foldr foldr foldr :: (Word8 -> a -> a) -> a ->  ByteString -> aWord8aaa 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. foldr 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. foldl1'foldl1' :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8eWord8Word8Word8 ByteStringWord8A'foldl1\'' is like foldl1, but strict in the accumulator. foldl1'foldl1' :: (Char -> Char -> Char) ->  ByteString -> CharkBCharCharChar ByteStringChar"A strict version of foldl1 foldl1foldl1 :: (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. foldl1foldl1 :: (Char -> Char -> Char) ->  ByteString -> CharnECharCharChar ByteStringCharfoldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty ByteStrings. foldl' foldl' :: (a -> Word8 -> a) -> a ->  ByteString -> acaWord8aa ByteStringa?'foldl\'' is like foldl, but strict in the accumulator. foldl' foldl' :: (a -> Char -> a) -> a ->  ByteString -> aZ7aCharaa ByteStringa8'foldl\'' is like foldl, but strict in the accumulator. foldl foldl :: (a -> Word8 -> a) -> a ->  ByteString -> a&aWord8aa 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. foldl foldl :: (a -> Char -> a) -> a ->  ByteString -> a|YaCharaa 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. *fmapfmap ::  Functor f => (a -> b) -> f a -> f bFunctorfabfafbFloatTokFloatTok :: Rational -> Token+RationalTokenFloatRepFloatRep :: DataRepqgDataRep floatPrimL floatPrimL :: Rational -> LitRationalLit FloatPrimL FloatPrimL :: Rational -> Lit5#RationalLit FloatConstr FloatConstr :: Double ->  ConstrRepDouble ConstrRepfloatfloat :: Float -> DocFloatDoc%
float n = text (show n)
floatfloat :: 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. jFlexibleInstancesFlexibleInstances ::  Extension ExtensionjFlexibleContextsFlexibleContexts ::  Extension ExtensionyflattenPackageDescriptionflattenPackageDescription :: GenericPackageDescription -> PackageDescriptionGenericPackageDescriptionPackageDescriptionFlatten a generic package description by ignoring all conditions and just join the field descriptors into on package description. Note, however, that this may lead to inconsistent field values, since all values are joined into one field, which may not be possible in the original package description, due to the use of exclusive choices (if ... else ...). XXX: One particularly tricky case is defaulting. In the original package description, e.g., the source directory might either be the default or a certain, explicitly set path. Since defaults are filled in only after the package has been resolved and when no explicit value has been set, the default path will be missing from the package description returned by this function. }flagToOptimisationLevelflagToOptimisationLevel ::  Maybe String -> OptimisationLevelQ*MaybeStringOptimisationLevelm flagToMaybe flagToMaybe :: Flag a -> Maybe aFlagaMaybeam flagToList flagToList :: Flag a -> [a]$ Flaga[]amFlagFlag :: a -> Flag audaFlagamFlagdata Flag aAll flags are monoids, they come in two flavours: 1. list flags eg
--ghc-option=foo --ghc-option=bar
gives us all the values [foo, bar] 2. singular value flags, eg:
--enable-foo --disable-foo
gives us Just False So this Flag type is for the latter singular kind of flag. Its monoid instance gives us the behaviour where it starts out as NoFlag and later flags override earlier ones. }Flagtype Flag = String6fixSTfixST ::  (a -> ST s a) -> ST s aaSTsaSTsaAllow the result of a state transformer computation to be used (lazily) inside the computation. Note that if f is strict, fixST f = _|_. FixityDirectiondata FixityDirectionFixityFixity :: Int -> FixityDirection -> FixitybAIntFixityDirectionFixityFixitydata FixityFixitydata FixityFixity of constructors ,fixfix :: (a -> a) -> a'aaafix f is the least fixed point of the function f, i.e. the least defined x such that f x = x. findSubstringsfindSubstrings ::  ByteString ->  ByteString -> [Int]H" ByteString ByteString[]IntVFind the indexes of all (possibly overlapping) occurances of a substring in a string.  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). sfindProgramVersionfindProgramVersion :: ProgArg -> String -> String ->  Verbosity -> FilePath -> IO (Maybe Version)ProgArgStringString VerbosityFilePathIOMaybeVersionLook for a program and try to find it's version number. It can accept either an absolute path or the name of a program binary, in which case we will look for the program on the path. sfindProgramOnPathfindProgramOnPath :: FilePath ->  Verbosity -> IO (Maybe FilePath)e4FilePath VerbosityIOMaybeFilePath Look for a program on the path. vfindPackageDescfindPackageDesc :: FilePath ->  IO FilePathFilePathIOFilePathYFind a package description file in the given directory. Looks for .cabal files.  findIndices findIndices :: (Word8 -> Bool) ->  ByteString -> [Int64]Word8Bool ByteString[]Int64The findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order.  findIndices findIndices :: (Char -> Bool) ->  ByteString -> [Int]$CharBool ByteString[]IntThe findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order.  findIndex findIndex :: (Word8 -> Bool) ->  ByteString ->  Maybe Int64V(Word8Bool ByteStringMaybeInt64The findIndex function takes a predicate and a ByteString and returns the index of the first element in the ByteString satisfying the predicate.  findIndex findIndex :: (Char -> Bool) ->  ByteString ->  Maybe InteCharBool ByteStringMaybeIntThe findIndex function takes a predicate and a ByteString and returns the index of the first element in the ByteString satisfying the predicate. vfindHookedPackageDescfindHookedPackageDesc :: FilePath -> IO (Maybe FilePath)FilePathIOMaybeFilePath`Find auxiliary package information in the given directory. Looks for .buildinfo files. vfindFileWithExtension' findFileWithExtension' :: [String] ->  [FilePath] -> FilePath -> IO (Maybe (FilePath, FilePath)).[]String[]FilePathFilePathIOMaybe(,)FilePathFilePathvfindFileWithExtension findFileWithExtension :: [String] ->  [FilePath] -> FilePath -> IO (Maybe FilePath)[]String[]FilePathFilePathIOMaybeFilePathvfindFilefindFile ::  [FilePath] -> FilePath ->  IO FilePath|[]FilePathFilePathIOFilePathfindfind :: (Word8 -> Bool) ->  ByteString ->  Maybe Word8@Word8Bool 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
findfind :: (Char -> Bool) ->  ByteString ->  Maybe CharCharBool 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.  finalizerFree finalizerFree :: FinalizerPtr a 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. yfinalizePackageDescriptionfinalizePackageDescription :: Package pkg => FlagAssignment -> Maybe (PackageIndex pkg) -> OS -> Arch ->  CompilerId ->  [Dependency] -> GenericPackageDescription -> 8Either [Dependency] (PackageDescription, FlagAssignment)$PackagepkgFlagAssignmentMaybe PackageIndexpkgOSArch CompilerId[] DependencyGenericPackageDescriptionEither[] Dependency(,)PackageDescriptionFlagAssignmentCreate a package description with all configurations resolved. This function takes a GenericPackageDescription and several environment parameters and tries to generate PackageDescription by finding a flag assignment that result in satisfiable dependencies. It takes as inputs a not necessarily complete specifications of flags assignments, an optional package index as well as platform parameters. If some flags are not assigned explicitly, this function will try to pick an assignment that causes this function to succeed. The package index is optional since on some platforms we cannot determine which packages have been installed before. When no package index is supplied, every dependency is assumed to be satisfiable, therefore all not explicitly assigned flags will get their default values. This function will fail if it cannot find a flag assignment that leads to satisfiable dependencies. (It will not try alternative assignments for explicitly specified flags.) In case of failure it will return a minimum number of dependencies that could not be satisfied. On success, it will return the package description and the full flag assignment chosen. Yfinalizefinalize :: Weak v -> IO ()WeakvIO()MCauses a the finalizer associated with a weak pointer to be run immediately. filterfilter :: (Word8 -> Bool) ->  ByteString ->  ByteStringWord8Bool ByteString ByteStringO(n) filter, applied to a predicate and a ByteString, returns a ByteString containing those characters that satisfy the predicate. filterfilter :: (Char -> Bool) ->  ByteString ->  ByteStringCharBool ByteString ByteStringO(n) filter, applied to a predicate and a ByteString, returns a ByteString containing those characters that satisfy the predicate. fileTypefileType :: FilePath ->  IO FDTypeFilePathIOFDType FileOffsettype  FileOffset = COff6FileModetype FileMode = CModetFileIDtype FileID = CInofieldsetfieldset :: Html -> HtmlHtmlHtmlfieldsetfieldset :: Html -> Html]NHtmlHtmlfieldsetfieldset :: Html -> HtmlHtmlHtml FieldPatQtype  FieldPatQ = Q FieldPatfieldPatfieldPat :: Name -> PatQ ->  FieldPatQrXNamePatQ FieldPatQFieldPattype FieldPat = (Name, Pat)fieldExpfieldExp :: Name -> ExpQ ->  Q (Name, Exp)>  NameExpQQ(,)NameExpFieldExptype FieldExp = (Name, Exp) sffihugsProgramffihugsProgram :: Program  ProgramfdTypefdType :: FD ->  IO FDType1  FDIOFDTypeFDTypedata FDTypea fdStatfdStat :: FD -> IO (FDType, CDev, CIno)  FDIO(,,)FDTypeCDevCInofdIsTTYfdIsTTY :: FD -> IO Bool; ( FDIOBool fdGetMode fdGetMode :: FD ->  IO IOMode  FDIOIOMode fdFileSize fdFileSize :: FD ->  IO Integer  FDIOIntegerFdFd :: CInt -> FdM @ CIntFdFdnewtype Fdx fcatfcat :: [Doc] -> Doc  []DocDoc("Paragraph fill" version of cat. mfalseArgfalseArg :: SFlags -> LFlags ->  Description -> (b -> Flag Bool) -> (Flag Bool -> b -> b) ->  OptDescr b SFlagsLFlags DescriptionbFlagBoolFlagBoolbbOptDescrbfailuresfailures :: Counts -> Int]MCountsInt*failfail ::  Monad m => String -> m aMonadmStringmafaceface :: String -> HtmlAttr%StringHtmlAttrextT extT :: (Typeable a, Typeable b) => (a -> a) -> (b -> b) -> a -> aTypeableaTypeablebaabbaa8Extend a generic transformation by a type-specific case  extSeparator extSeparator :: Char[TChar;File extension character
extSeparator == '.'
 extSeparator extSeparator :: CharChar;File extension character
extSeparator == '.'
extRextR :: %(Monad m, Typeable a, Typeable b) => m a -> m b -> m aMonadmTypeableaTypeablebmambmaExtend a generic reader extQ extQ :: (Typeable a, Typeable b) => (a -> q) -> (b -> q) -> a -> qhTypeableaTypeablebaqbqaq/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 ab 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 aMonadmTypeableaTypeablebamabmbama@Extend a generic monadic transformation by a type-specific case }extensionsToFlagsextensionsToFlags :: Compiler ->  [Extension] -> [Flag]Compiler[] Extension[]FlagGFor the given compiler, return the flags for the supported extensions. j Extensiondata  Extension9This represents language extensions beyond Haskell 98 that are supported by some implementations, usually in some special mode. jExtensibleRecordsExtensibleRecords ::  Extension  ExtensionjExtendedDefaultRulesExtendedDefaultRules ::  Extensionwk ExtensionextBextB :: (Typeable a, Typeable b) => a -> b -> aTypeableaTypeablebabaExtend a generic builder ext1T ext1T :: (Data d, Typeable1 t) => (d -> d) ->  (t d -> t d) -> d -> dDatad Typeable1tddtdtddd>Type extension of transformations for unary type constructors ext1Rext1R :: "(Monad m, Data d, Typeable1 t) => m d -> m (t d) -> m dMonadmDatad Typeable1tmdmtdmd0Type extension of readers for type constructors ext1Q ext1Q :: (Data d, Typeable1 t) => (d -> q) ->  (t d -> q) -> d -> qDatad Typeable1tdqtdqdq0Type extension of queries for type constructors ext1M ext1M :: "(Monad m, Data d, Typeable1 t) =>  (d -> m d) -> (t d -> m (t d)) -> d -> m dMonadmDatad Typeable1tdmdtdmtddmd@Type extension of monadic transformations for type constructors ext0ext0 :: (Typeable a, Typeable b) => c a -> c b -> c aTypeableaTypeablebcacbcaFlexible type extension ExpQtype ExpQ = Q ExpExportF ExportF :: Callconv -> String -> Name -> Type -> ForeignCallconvStringNameTypeForeign{ explanation explanation ::  PackageCheck -> String+ PackageCheckString{ explanation explanation ::  PackageCheck -> String PackageCheckString{ explanation explanation ::  PackageCheck -> String PackageCheckString{ explanation explanation ::  PackageCheck -> Stringh PackageCheckStringExpectExpect :: String -> MessageStringMessageExpdata Exp jExistentialQuantificationExistentialQuantification ::  Extensionu i  Extension exeExtension exeExtension :: String  StringeExtension for executable files (typically "" on Unix and "exe" on Windows or OS/2)  Exclamation Exclamation :: Tokenn!f!Token everywhereM everywhereM ::  Monad m =>  GenericM m ->  GenericM m"!MonadmGenericMmGenericMm Monadic variation on everywhere  everywhereBut everywhereBut ::  GenericQ Bool -> GenericT -> GenericT""GenericQBoolGenericTGenericT5Variation on everywhere with an extra stop condition  everywhere' everywhere' :: (a -> a) -> a -> aa#P#aaaa5Apply a transformation everywhere in top-down manner  everywhere everywhere :: (a -> a) -> a -> a$#aaaa6Apply a transformation everywhere in bottom-up manner  everything everything ::  (r -> r -> r) ->  GenericQ r ->  GenericQ r$$rrrGenericQrGenericQr5Summarise all nodes in top-down, left-to-right order ErrorTErrorT :: m (Either e a) ->  ErrorT e m a%b%mEithereaErrorTemaErrorTnewtype ErrorT e m a%GThe 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 -> Intc(S(CountsInterrorPoserrorPos ::  ParseError ->  SourcePos(( ParseError SourcePos2Extracts the source position from the parse error errorPoserrorPos ::  ParseError ->  SourcePosq)W) 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 -> Bool** ParseErrorBoolErrorError ::  ParseError ->  Reply s u a9++ ParseErrorReplysuaMerrnoToIOError errnoToIOError :: String -> Errno ->  Maybe Handle ->  Maybe String -> IOError,+StringErrnoMaybeHandleMaybeStringIOErrorConstruct 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. MErrnoErrno :: CInt -> Errno,,CIntErrnoMErrnonewtype Errno.-Haskell representation for errno values. The implementation is deliberately exposed, to allow users to add their own definitions of Errno values. vequating equating :: Eq a => (b -> a) -> b -> b -> Bool_.?.EqababbBool]eqUArrayeqUArray :: !(IArray UArray e, Ix i, Eq e) =>  UArray i e ->  UArray i e -> Bool5/.IArrayUArrayeIxiEqeUArrayieUArrayieBoolequalsequals :: Doco/i/DocA '=' character EqualsEquals :: Token//Token equalFilePath equalFilePath :: FilePath -> FilePath -> BoolE0(0FilePathFilePathBoolEquality 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.  equalFilePath equalFilePath :: FilePath -> FilePath -> Bool1n1FilePathFilePathBoolEquality 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.  EpochTimetype  EpochTime = CTime2 eofErrorType eofErrorType ::  IOErrorType22 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 ()33StreamsmtShowtParsecTsum()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 :: Lexeme44LexemeEOFEOF :: Token44Token endBy1endBy1 :: ReadP a ->  ReadP sep ->  ReadP [a]5S5ReadPaReadPsepReadP[]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]6t6StreamsmtParsecTsumaParsecTsumsepParsecTsum[]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]87ReadPaReadPsepReadP[]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][98StreamsmtParsecTsumaParsecTsumsepParsecTsum[]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
 end_of_dir end_of_dir :: CIntu:n:CIntenctypeenctype :: String -> HtmlAttr::StringHtmlAttrenctypeenctype :: String -> HtmlAttr9;$;StringHtmlAttrenctypeenctype :: String -> HtmlAttr;;StringHtmlAttr~emptyUserHooksemptyUserHooks ::  UserHooks;; UserHooks)Empty UserHooks which do nothing. memptyTestFlagsemptyTestFlags ::  TestFlagsp<d< TestFlagsmemptySDistFlagsemptySDistFlags ::  SDistFlags<< SDistFlags1emptySampleVaremptySampleVar ::  SampleVar a -> IO ()D='= SampleVaraIO()AIf the SampleVar is full, leave it empty. Otherwise, do nothing. memptyRegisterFlagsemptyRegisterFlags ::  RegisterFlags== RegisterFlagssemptyProgramConfigurationemptyProgramConfiguration :: ProgramConfigurationm>V>ProgramConfigurationmemptyMakefileFlagsemptyMakefileFlags ::  MakefileFlags>> MakefileFlagsmemptyInstallFlagsemptyInstallFlags ::  InstallFlags5?&? InstallFlagsmemptyHscolourFlagsemptyHscolourFlags ::  HscolourFlags?? HscolourFlagsmemptyHaddockFlagsemptyHaddockFlags ::  HaddockFlags?? HaddockFlagsmemptyGlobalFlagsemptyGlobalFlags ::  GlobalFlags[@M@ GlobalFlagsemptyDefemptyDef :: LanguageDef st@@ LanguageDefstjEmptyDataDeclsEmptyDataDecls ::  ExtensionA@ ExtensionmemptyCopyFlagsemptyCopyFlags ::  CopyFlags^ARA CopyFlagsmemptyConfigFlagsemptyConfigFlags ::  ConfigFlagsAA ConfigFlagsmemptyCleanFlagsemptyCleanFlags ::  CleanFlagsB B CleanFlagsmemptyBuildFlagsemptyBuildFlags ::  BuildFlagspBcB BuildFlags emptyAttr emptyAttr :: String -> HtmlAttrBBStringHtmlAttr emptyAttr emptyAttr :: String -> HtmlAttr HtmlAttrCCStringHtmlAttremptyempty :: DocCCDocThe 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 ::  ByteStringE E ByteString(O(1) The empty ByteString emptyempty ::  ByteStringEzE ByteString(O(1) The empty ByteString EmptyEmpty :: a ->  Consumed a FEaConsumeda emphasize emphasize :: Html -> HtmldFUFHtmlHtml emphasize emphasize :: Html -> HtmlFFHtmlHtml emphasize emphasize :: Html -> HtmlG GHtmlHtml_elemselems :: (IArray a e, Ix i) => a i e -> [e]GqGIArrayaeIxiaie[]eTReturns a list of all the elements of an array, in the same order as their indices. ]elemselems :: (IArray a e, Ix i) => a i e -> [e]~HNHIArrayaeIxiaie[]eTReturns a list of all the elements of an array, in the same order as their indices.  elemIndices elemIndices :: Word8 ->  ByteString -> [Int64]^I;IWord8 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).  elemIndices elemIndices :: Char ->  ByteString -> [Int]JJChar ByteString[]IntO(n) The elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order.  elemIndexEnd elemIndexEnd :: Char ->  ByteString ->  Maybe IntKKChar 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 :: Word8 ->  ByteString ->  Maybe Int64MqMWord8 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).  elemIndex elemIndex :: Char ->  ByteString ->  Maybe IntONChar 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. elemelem :: Word8 ->  ByteString -> BoolLP0PWord8 ByteStringBoolGO(n) elem is the ByteString membership predicate. elemelem :: Char ->  ByteString -> BoolQPChar ByteStringBooltO(n) elem is the ByteString membership predicate. This implementation uses memchr(3). Me2BIGe2BIG :: ErrnoQQErrno dynlibdir dynlibdir :: InstallDirs dir -> dir&R R InstallDirsdirdirdyndyn :: String -> Q Exp}RhRStringQExp.dupChandupChan :: Chan a ->  IO (Chan a)RRChanaIOChanaDuplicate 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 -> Html/T THtmlHtmldtermdterm :: Html -> HtmlTrTHtmlHtmldtermdterm :: Html -> HtmlTTHtmlHtml dropWhile dropWhile :: (Word8 -> Bool) ->  ByteString ->  ByteStringoUEUWord8Bool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs.  dropWhile dropWhile :: (Char -> Bool) ->  ByteString ->  ByteStringkVBVCharBool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs. dropTrailingPathSeparatordropTrailingPathSeparator :: FilePath -> FilePathWW@WFilePathFilePathRemove any trailing path separators
dropTrailingPathSeparator "file/test/" == "file/test"
not (hasTrailingPathSeparator (dropTrailingPathSeparator x)) || isDrive x
Posix:    dropTrailingPathSeparator "/" == "/"
dropTrailingPathSeparatordropTrailingPathSeparator :: FilePath -> FilePathXXFilePathFilePathRemove any trailing path separators
dropTrailingPathSeparator "file/test/" == "file/test"
not (hasTrailingPathSeparator (dropTrailingPathSeparator x)) || isDrive x
Posix:    dropTrailingPathSeparator "/" == "/"
 dropFileName dropFileName :: FilePath -> FilePathZYFilePathFilePathIDrop the filename.
dropFileName x == fst (splitFileName x)
 dropFileName dropFileName :: FilePath -> FilePathZZFilePathFilePathIDrop the filename.
dropFileName x == fst (splitFileName x)
dropExtensionsdropExtensions :: FilePath -> FilePath[r[FilePathFilePathHDrop all extensions
not $ hasExtension (dropExtensions x)
dropExtensionsdropExtensions :: FilePath -> FilePathE\.\FilePathFilePathHDrop all extensions
not $ hasExtension (dropExtensions x)
 dropExtension dropExtension :: FilePath -> FilePath\\FilePathFilePathiRemove last extension, and the "." preceding it.
dropExtension x == fst (splitExtension x)
 dropExtension dropExtension :: FilePath -> FilePath]]FilePathFilePathiRemove last extension, and the "." preceding it.
dropExtension x == fst (splitExtension x)
 dropDrive dropDrive :: FilePath -> FilePath^^FilePathFilePathPDelete the drive, if it exists.
dropDrive x == snd (splitDrive x)
 dropDrive dropDrive :: FilePath -> FilePathg_P_FilePathFilePathPDelete the drive, if it exists.
dropDrive x == snd (splitDrive x)
dropdrop :: Int64 ->  ByteString ->  ByteString7``Int64 ByteString ByteStringO(n\c)/ drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs. dropdrop :: Int ->  ByteString ->  ByteStringWa7aInt ByteString ByteStringO(1) drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs.  doubleQuotes doubleQuotes :: Doc -> DocTbGbDocDoc Wrap document in "..."  doublePrimL doublePrimL :: Rational -> LitbbRationalLit DoublePrimL DoublePrimL :: Rational -> Lit Doc"ddDoubleDoc&
double n = text (show n)
vdotToSepdotToSep :: String -> StringddStringStringDotDotDotDot :: TokenddTokendotdot :: GenTokenParser s u m -> ParsecT s u m StringeEeGenTokenParsersumParsecTsumStringpLexeme parser dot parses the character '.' and skips any trailing white space. Returns the string ".". Donetype Done = ()"fdoIndentdoIndent :: PPHsMode -> IndentfqfPPHsModeIndent(indentation of a do-expression doesNotExistErrorTypedoesNotExistErrorType ::  IOErrorTypegg IOErrorTypeRI/O error where the operation failed because one of its arguments does not exist. doEdoE :: [StmtQ] -> ExpQgg[]StmtQExpQDoEDoE :: [Stmt] -> Exphh[]StmtExp DocdirVar DocdirVar :: PathTemplateVariablevh_hPathTemplateVariable#The $docdir path variable docdirdocdir :: InstallDirs dir -> dirih InstallDirsdirdirDocdata Doc.i_The abstract type of documents. The Show instance is equivalent to using render.  dllExtension dllExtension :: StringiiStringwExtension for dynamically linked (or shared) libraries (typically "so" on Unix and "dll" on Windows) dlistdlist :: Html -> HtmljjHtmlHtmldlistdlist :: Html -> HtmljjHtmlHtmldlistdlist :: Html -> HtmlFk7kHtmlHtmldiscarddiscard :: Int -> Lex r ()kkIntLexr()IDiscard some input characters (these must not include tabs or newlines). jDisambiguateRecordFieldsDisambiguateRecordFields ::  ExtensionYlMl Extensiondisableddisabled :: HtmlAttrllHtmlAttrdisableddisabled :: HtmlAttrllHtmlAttrdisableddisabled :: HtmlAttr1m&mHtmlAttr Directory Directory :: FDTypewmnmFDTypedirdir :: Html -> HtmlmmHtmlHtmldigitdigit :: Stream s m Char => ParsecT s u m CharJnnStreamsmCharParsecTsumChar.Parses a digit. Returns the parsed character.  diffUTCTime diffUTCTime :: UTCTime -> UTCTime -> NominalDiffTimeonUTCTimeUTCTimeNominalDiffTimediffUTCTime a b = a - b ^ DiffUArraytype  DiffUArray = IOToDiffArray IOUArrayyoStrict unboxed diff array, working only for elements of primitive types but more compact and usually faster than DiffArray. DiffTimedata DiffTime0pThis is a length of time, as measured by a clock. Conversion functions will treat it as seconds. It has an accuracy of 10^-12 s. diffDaysdiffDays :: Day -> Day -> Integer!q qDayDayInteger^ DiffArraytype  DiffArray = IOToDiffArray IOArrayqq)Fully polymorphic lazy boxed diff array. vdieWithLocation dieWithLocation :: FilePath ->  Maybe Int -> String -> IO aHrrFilePathMaybeIntStringIOavdiedie :: String -> IO arrStringIOaDeviceIDtype DeviceID = CDevru Descriptiontype  Description = StringsjDeriveDataTypeableDeriveDataTypeable ::  Extension}sqs ExtensionY deRefWeak deRefWeak :: Weak v ->  IO (Maybe v)ssWeakvIOMaybev8Dereferences 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. zdependencyInconsistenciesdependencyInconsistencies :: PackageFixedDeps pkg => PackageIndex pkg -> *[(String, [(PackageIdentifier, Version)])]NvuPackageFixedDepspkg PackageIndexpkg[](,)String[](,)PackageIdentifierVersionGiven a package index where we assume we want to use all the packages (use dependencyClosure if you need to get such a index subset) find out if the dependencies within it use consistent versions of each package. Return all cases where multiple packages depend on different versions of some other package. Each element in the result is a package name along with the packages that depend on it and the versions they require. These are guaranteed to be distinct. zdependencyGraphdependencyGraph :: PackageFixedDeps pkg => PackageIndex pkg -> G(Graph, Vertex -> PackageIdentifier, PackageIdentifier -> Maybe Vertex)dyxPackageFixedDepspkg PackageIndexpkg(,,)GraphVertexPackageIdentifierPackageIdentifierMaybeVertexBuilds a graph of the package dependencies. Dependencies on other packages that are in the index are discarded. You can check if there are any such dependencies with brokenPackages. zdependencyCyclesdependencyCycles :: PackageFixedDeps pkg => PackageIndex pkg -> [[pkg]]zzPackageFixedDepspkg PackageIndexpkg[][]pkgFind if there are any cycles in the dependency graph. If there are no cycles the result is []. This actually computes the strongly connected components. So it gives us a list of groups of packages where within each group they all depend on each other, directly or indirectly. zdependencyClosuredependencyClosure :: PackageFixedDeps pkg => PackageIndex pkg -> [PackageIdentifier] -> 6Either (PackageIndex pkg) [(pkg, [PackageIdentifier])]f}|PackageFixedDepspkg PackageIndexpkg[]PackageIdentifierEither PackageIndexpkg[](,)pkg[]PackageIdentifierTries to take the transative closure of the package dependencies. If the transative closure is complete then it returns that subset of the index. Otherwise it returns the broken packages as in brokenPackages.
  • Note that if the result is Right [] it is because at least one of the original given PackageIdentifiers do not occur in the index.
 demanding demanding :: a -> Done -> aK<aDoneaEvaluates the second argument before the first. Used to express control-oriented parallelism. The second argument is usually a strategy application. zdeletePackageNamedeletePackageName :: Package pkg => String -> PackageIndex pkg -> PackageIndex pkgtPackagepkgString PackageIndexpkg PackageIndexpkgERemoves all packages with this (case-sensitive) name from the index. zdeletePackageIddeletePackageId :: Package pkg => PackageIdentifier -> PackageIndex pkg -> PackageIndex pkgPackagepkgPackageIdentifier PackageIndexpkg PackageIndexpkg)Removes a single package from the index. zdeleteDependencydeleteDependency :: Package pkg =>  Dependency -> PackageIndex pkg -> PackageIndex pkgPackagepkg Dependency PackageIndexpkg PackageIndexpkg@Removes all packages satisfying this dependency from the index. deldel :: Html -> HtmlpHtmlHtmldeldel :: Html -> Html̓HtmlHtmldeldel :: Html -> Html HtmlHtmldefOptdefOpt ::  TestOptionseW TestOptionsdefListdefList :: (HTML a, HTML b) => [(a, b)] -> HtmlĄHTMLaHTMLb[](,)abHtmldefListdefList :: (HTML a, HTML b) => [(a, b)] -> HtmlUHTMLaHTMLb[](,)abHtmldefListdefList :: (HTML a, HTML b) => [(a, b)] -> HtmlHTMLaHTMLb[](,)abHtmldefinedefine :: Html -> Htmll]HtmlHtmldefinedefine :: Html -> HtmlHtmlHtmldefinedefine :: Html -> HtmlHtmlHtmlmdefaultTestFlagsdefaultTestFlags ::  TestFlagsnb TestFlagsmdefaultSDistFlagsdefaultSDistFlags ::  SDistFlagṡ SDistFlagsmdefaultRegisterFlagsdefaultRegisterFlags ::  RegisterFlags6& RegisterFlagssdefaultProgramConfigurationdefaultProgramConfiguration :: ProgramConfigurationProgramConfigurationdefaultParseModedefaultParseMode ::  ParseMode  ParseModeQDefault parameters for a parse, currently just a marker for an unknown filename. defaultParseModedefaultParseMode ::  ParseMode ParseModeQDefault parameters for a parse, currently just a marker for an unknown filename. vdefaultPackageDescdefaultPackageDesc ::  Verbosity ->  IO FilePath{ VerbosityIOFilePath9Package description file (pkgname.cabal)  defaultMode defaultMode :: PPHsMode PPHsModeMThe default mode: pretty-print using the offside rule and sensible defaults. mdefaultMakefileFlagsdefaultMakefileFlags ::  MakefileFlags׋Nj MakefileFlagsmdefaultInstallFlagsdefaultInstallFlags ::  InstallFlags=. InstallFlagsdefaultInstallDirs defaultInstallDirs :: CompilerFlavor -> Bool -> Bool -> IO InstallDirTemplates֌CompilerFlavorBoolBoolIOInstallDirTemplatesmdefaultHscolourFlagsdefaultHscolourFlags ::  HscolourFlagszj HscolourFlagsvdefaultHookedPackageDescdefaultHookedPackageDesc :: IO (Maybe FilePath)IOMaybeFilePathPOptional auxiliary package information file (pkgname.buildinfo) mdefaultHaddockFlagsdefaultHaddockFlags ::  HaddockFlags HaddockFlagsmdefaultGlobalFlagsdefaultGlobalFlags ::  GlobalFlags GlobalFlags defaultFixity defaultFixity :: FixitybYFixitymdefaultDistPrefdefaultDistPref :: FilePathFilePathdefaultDistPrefdefaultDistPref :: FilePathFilePathmdefaultCopyFlagsdefaultCopyFlags ::  CopyFlagsh\ CopyFlagsmdefaultConfigFlagsdefaultConfigFlags :: ProgramConfiguration ->  ConfigFlagsܐProgramConfiguration ConfigFlagsmdefaultCleanFlagsdefaultCleanFlags ::  CleanFlags`S CleanFlagsmdefaultBuildFlagsdefaultBuildFlags ::  BuildFlags BuildFlagsDecQtype DecQ = Q Decdecimaldecimal :: 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 debugHtml debugHtml ::  HTML a => a -> HtmljHTMLaaHtmlThis 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~h TestOptionsBoolvdebugdebug ::  Verbosity -> String -> IO ()ٔ VerbosityStringIO()pDetailed internal debugging information We display these messages when the verbosity level is deafening ddefddef :: Html -> HtmlHtmlHtmlddefddef :: Html -> Html HtmlHtmlddefddef :: Html -> HtmlYJHtmlHtmldayFractionToTimeOfDaydayFractionToTimeOfDay :: Rational ->  TimeOfDayߖǖRational TimeOfDay<Get a TimeOfDay given the fraction of a day since midnight. Daynewtype DayHYThe Modified Julian Day is a standard count of days, with zero being the day 1858-11-17. dateToSnapshotNumberdateToSnapshotNumber ::  CalendarTime -> Int  CalendarTimeIntGiven a date produce a corresponding integer representation. For example given a date 18032008 produce the number 20080318.  dataTypeRep dataTypeRep :: DataType -> DataRep  DataTypeDataRep+Gets the public presentation of a datatype  dataTypeOf dataTypeOf ::  Data a => a -> DataTypeDataaaDataType dataTypeName dataTypeName :: DataType -> String*DataTypeString/Gets the type constructor including the module dataTypeConstrsdataTypeConstrs :: DataType -> [Constr]ӚDataType[]Constr/Gets the constructors of an algebraic datatype DataTypedata DataType6eRepresentation of datatypes. A package of constructor representations with names of type and module.  DatasubdirVar DatasubdirVar :: PathTemplateVariablePathTemplateVariable'The $datasubdir path variable  datasubdir datasubdir :: InstallDirs dir -> dir InstallDirsdirdirDataRepdata DataRepќ#Public representation of datatypes  DatadirVar DatadirVar :: PathTemplateVariableXAPathTemplateVariable$The $datadir path variable datadirdatadir :: InstallDirs dir -> dir͝ InstallDirsdirdirdataDdataD :: CxtQ -> Name -> [Name] -> [ConQ] -> [Name] -> DecQrCxtQName[]Name[]ConQ[]NameDecQDataDDataD :: Cxt -> Name -> [Name] -> [Con] -> [Name] -> Decg1CxtName[]Name[]Con[]NameDecDataConI DataConI :: Name -> Type -> Name -> Fixity -> InfoNameTypeNameFixityInfo dataCast2 dataCast2 :: (Data a, Typeable2 t) =>  c (t a b) ->  Maybe (c a)uDataa Typeable2tctabMaybeca dataCast1 dataCast1 :: (Data a, Typeable1 t) => c (t a) ->  Maybe (c a)^"Dataa Typeable1tctaMaybecaDataclass 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 -fglasgow-exts 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. d_named_name ::  Ptr CDirent ->  IO CString&PtrCDirentIOCStringcyclecycle ::  ByteString ->  ByteStringu ByteString ByteStringcycle ties a finite ByteString into a circular one, or equivalently, the infinite repetition of the original ByteString. CxtQtype CxtQ = Q CxtFcxtcxt :: [TypeQ] -> CxtQ[]TypeQCxtQCxttype Cxt = [Type]Ӱ CWStringLentype  CWStringLen = (Ptr CWchar, Int)#A 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 CWcharSA 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. CUtsnametype CUtsname = ()CUtimbuftype CUtimbuf = ()5CUShortdata CUShortg>Haskell type representing the C unsigned short type.  currentModule currentModule :: Q StringQString\currentModule gives you the name of the module in which this computation is spliced. v currentDir currentDir :: FilePathFilePathThe path name that represents the current directory. In Unix, it's ".", but this is system-specific. (E.g. AmigaOS uses the empty string "" for the current directory.) CULongdata CULong=Haskell type representing the C unsigned long type. CULLongdata CULLongBHaskell type representing the C unsigned long long type. CUIntPtrdata CUIntPtrqCUIntMaxdata CUIntMaxCUIntdata CUIntӶ<Haskell type representing the C unsigned int type. CUChardata CUChar?=Haskell type representing the C unsigned char type. CTmstype CTms = ()CTmtype CTm = ()CTimedata CTimeHaskell type representing the C time_t type. To convert to a Data.Time.UTCTime, use the following formula:
posixSecondsToUTCTime (realToFrac :: POSIXTime)
CTermiostype CTermios = () CStringLentype  CStringLen = (Ptr CChar, Int)RA 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. CStattype CStat = ()CSsizedata CSsizeǺCSizedata CSize6Haskell type representing the C size_t type. CSigsettype CSigset = ()d CSigAtomicdata  CSigAtomic<Haskell type representing the C sig_atomic_t type.  CSigactiontype  CSigaction = ()CShortdata CShortG5Haskell type representing the C short type. CSChardata CSChar;Haskell type representing the C signed char type. vcreateDirectoryIfMissingVerbose createDirectoryIfMissingVerbose ::  Verbosity -> Bool -> FilePath -> IO () VerbosityBoolFilePathIO() createArchive createArchive ::  Verbosity -> PackageDescription -> Maybe LocalBuildInfo -> FilePath -> FilePath ->  IO FilePathԾu VerbosityPackageDescriptionMaybeLocalBuildInfoFilePathFilePathIOFilePathFCreate an archive from a tree of source files, and clean up the tree. createAndTrim'createAndTrim' :: Int -> (Ptr Word8 -> IO (Int, Int, a)) -> IO (ByteString, a)IntPtrWord8IO(,,)IntIntaIO(,) ByteStringa createAndTrim createAndTrim :: Int -> (Ptr Word8 -> IO Int) ->  IO ByteStringrIntPtrWord8IOIntIO 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. createcreate :: Int -> (Ptr Word8 -> IO ()) ->  IO ByteStringIntPtrWord8IO()IO ByteStringVCreate ByteString of size l and use action f to fill it's contents. CPtrdiffdata CPtrdiffp9Haskell type representing the C ptrdiff_t type. s cppProgram cppProgram :: ProgramPrograms cpphsProgram cpphsProgram :: ProgramA7ProgramjCPPCPP ::  Extensionu ExtensionCPiddata CPidCPasswdtype CPasswd = ()countscounts :: State -> Counts@.StateCountsCounts Counts :: Int -> Int -> Int -> Int -> CountsIntIntIntIntCountsCountsdata Counts countcount :: 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]gStreamsmtIntParsecTsumaParsecTsum[]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. countcount :: 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. countcount :: Char ->  ByteString -> Int& Char 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. m copyVerbosity copyVerbosity ::  CopyFlags -> Flag Verbosityo CopyFlagsFlag Verbositym copyVerbose copyVerbose ::  CopyFlags ->  Verbosity CopyFlags VerbositymCopyToCopyTo :: FilePath -> CopyDestfOFilePathCopyDestCopyToCopyTo :: FilePath -> CopyDestFilePathCopyDest copyright copyright :: Html HtmlCopyright sign.  copyright copyright :: Html^WHtmlCopyright sign.  copyright copyright :: HtmlHtmlCopyright sign. m CopyPrefix CopyPrefix :: FilePath -> CopyDest,FilePathCopyDest CopyPrefix CopyPrefix :: FilePath -> CopyDestFilePathCopyDest~copyHookcopyHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  CopyFlags -> IO ()I UserHooksPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO();Over-ride this hook to get different behavior during copy. m CopyFlags CopyFlags :: CopyDest ->  Flag CopyDest ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  CopyFlagsCopyDestFlagCopyDestFlagFilePath VerbosityFlag Verbosity CopyFlagsm CopyFlagsdata  CopyFlagsMFlags to copy: (destdir, copy-prefix (backwards compat), verbosity) vcopyFileVerbose copyFileVerbose ::  Verbosity -> FilePath -> FilePath -> IO () VerbosityFilePathFilePathIO()v copyFiles  copyFiles ::  Verbosity -> FilePath -> [(FilePath, FilePath)] -> IO () VerbosityFilePath[](,)FilePathFilePathIO()Copies a bunch of files to a target directory, preserving the directory structure in the target location. The target directories are created if they do not exist. The files are identified by a pair of base directory and a path relative to that base. It is only the relative part that is preserved in the destination. For example:
copyFiles normal "dist/src"
   [("", "src/Foo.hs"), ("dist/build/", "src/Bar.hs")]
This would copy "src/Foo.hs" to "dist/src/src/Foo.hs" and copy "dist/build/src/Bar.hs" to "dist/src/src/Bar.hs". This operation is not atomic. Any IO failure during the copy (including any missing source files) leaves the target in an unknown state so it is best to use it with a freshly created directory so that it can be simply deleted if anything goes wrong. m copyDistPref copyDistPref ::  CopyFlags ->  Flag FilePath|\ CopyFlagsFlagFilePathvcopyDirectoryRecursiveVerbose copyDirectoryRecursiveVerbose ::  Verbosity -> FilePath -> FilePath -> IO ()I VerbosityFilePathFilePathIO()m copyDest' copyDest' ::  CopyFlags ->  Flag CopyDest CopyFlagsFlagCopyDestmcopyDestcopyDest ::  CopyFlags -> CopyDest, CopyFlagsCopyDestmCopyDestdata CopyDest`1The location prefix for the copy command. CopyDestdata CopyDest1The location prefix for the copy command. m copyCommand copyCommand :: CommandUI CopyFlags]D CommandUI CopyFlagsP copyBytes  copyBytes :: 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 not overlap  copyArray  copyArray :: 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 not overlap copycopy ::  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. copycopy ::  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 -> HtmlAttr6!StringHtmlAttrcoordscoords :: String -> HtmlAttrStringHtmlAttrcoordscoords :: String -> HtmlAttrStringHtmlAttrContTContT ::  (a -> m r) -> m r ->  ContT r m aUamrmrContTrmaContTnewtype ContT r m a^The continuation monad transformer. Can be used to add continuation handling to other monads. contentcontent :: String -> HtmlAttrvaStringHtmlAttrcontentcontent :: String -> HtmlAttrStringHtmlAttrcontentcontent :: String -> HtmlAttr:%StringHtmlAttrconTconT :: Name -> TypeQ|NameTypeQContCont :: (a -> r) -> r -> Cont r aarrContraContnewtype Cont r a1`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 -> TypeNameTypeConSymConSym :: String -> Token;)StringTokenConsumedConsumed :: a ->  Consumed aaConsumedaConsumeddata Consumed a constrType constrType :: Constr -> DataType:%ConstrDataType#Gets the datatype of a constructor  constrRep constrRep :: Constr ->  ConstrRepConstr ConstrRep-Gets the public presentation of constructors  ConstrRepdata  ConstrRep(&Public representation of constructors  constrIndex constrIndex :: Constr -> ConIndexConstrConIndex;Gets the index of a constructor (algebraic datatypes only)  constrFixity constrFixity :: Constr -> Fixity[HConstrFixity!Gets the fixity of a constructor  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. jConstrainedClassMethodsConstrainedClassMethods ::  Extension ExtensionConstrdata ConstrRepresentation of constructors  const_vtime const_vtime :: CInt~wCInt const_vmin const_vmin :: CIntCInt const_tcsanow const_tcsanow :: CInt CInt const_sigttou const_sigttou :: CIntVOCIntconst_sig_setmaskconst_sig_setmask :: CIntCIntconst_sig_blockconst_sig_block :: CIntCInt const_icanon const_icanon :: CInt>7CInt const_f_setfl const_f_setfl :: CIntCInt const_f_getfl const_f_getfl :: CIntCInt const_echo const_echo :: CIntCIntcons'cons' :: Word8 ->  ByteString ->  ByteStringvWord8 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. conscons :: Word8 ->  ByteString ->  ByteStringWord8 ByteString ByteString9O(1) cons is analogous to '(:)' for lists. conscons :: Char ->  ByteString ->  ByteStringChar ByteString ByteStringmO(n) cons is analogous to (:) for lists, but of different complexity, as it requires a memcpy. ConQtype ConQ = Q ConlconPconP :: Name -> [PatQ] -> PatQName[]PatQPatQConPConP :: Name -> [Pat] -> PatD+Name[]PatPatConIndextype ConIndex = IntiUnique index for datatype constructors, counting from 1 in the order they are given in the program text. ConIdConId :: String -> TokenA/StringTokenmconfigVerbosityconfigVerbosity ::  ConfigFlags -> Flag Verbosity ConfigFlagsFlag Verbosityverbosity level m configVerbose configVerbose ::  ConfigFlags ->  VerbosityV; ConfigFlags Verbosityverbosity level (deprecated) mconfigVanillaLibconfigVanillaLib ::  ConfigFlags ->  Flag Bool ConfigFlagsFlagBoolEnable vanilla library mconfigUserInstallconfigUserInstall ::  ConfigFlags ->  Flag Boolt ConfigFlagsFlagBoolThe --user/--global flag mconfigureOptionsconfigureOptions :: ShowOrParseArgs -> [OptionField ConfigFlags]Z$ShowOrParseArgs[] OptionField ConfigFlagssConfiguredProgram ConfiguredProgram :: String ->  Maybe Version ->  [ProgArg] -> ProgramLocation -> ConfiguredProgram] StringMaybeVersion[]ProgArgProgramLocationConfiguredProgramsConfiguredProgramdata ConfiguredProgrammconfigureCommandconfigureCommand :: ProgramConfiguration -> CommandUI ConfigFlagsPProgramConfiguration CommandUI ConfigFlagsm configureArgs configureArgs :: Bool ->  ConfigFlags -> [String]Bool ConfigFlags[]StringWArguments to pass to a configure script, e.g. generated by autoconf. sconfigureAllKnownProgramsconfigureAllKnownPrograms ::  Verbosity -> ProgramConfiguration -> IO ProgramConfiguration VerbosityProgramConfigurationIOProgramConfigurationKTry to configure all the known programs that have not yet been configured.  configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration)* VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration)d VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration) VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration configure  configure ::  Verbosity -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration -> #IO (Compiler, ProgramConfiguration)O VerbosityMaybeFilePathMaybeFilePathProgramConfigurationIO(,)CompilerProgramConfiguration configure configure :: F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags -> IO LocalBuildInfow(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfoZPerform the "./setup configure" action. Returns the .setup-config file. mconfigStripExesconfigStripExes ::  ConfigFlags ->  Flag BoolR4 ConfigFlagsFlagBoolEnable executable stripping mconfigSplitObjsconfigSplitObjs ::  ConfigFlags ->  Flag Bool ConfigFlagsFlagBoolEnable -split-objs with GHC mconfigSharedLibconfigSharedLib ::  ConfigFlags ->  Flag Booln ConfigFlagsFlagBoolBuild shared library mconfigScratchDirconfigScratchDir ::  ConfigFlags ->  Flag FilePath,  ConfigFlagsFlagFilePathmconfigProgSuffixconfigProgSuffix ::  ConfigFlags -> Flag PathTemplate ConfigFlagsFlag PathTemplateInstalled executable suffix. mconfigProgramsconfigPrograms ::  ConfigFlags -> ProgramConfigurationnH ConfigFlagsProgramConfiguration All programs that cabal may run mconfigProgramPathsconfigProgramPaths ::  ConfigFlags -> [(String, FilePath)]1 ConfigFlags[](,)StringFilePathuser specifed programs paths mconfigProgramArgsconfigProgramArgs ::  ConfigFlags -> [(String, [String])] ConfigFlags[](,)String[]Stringuser specifed programs args mconfigProgPrefixconfigProgPrefix ::  ConfigFlags -> Flag PathTemplate| ConfigFlagsFlag PathTemplateInstalled executable prefix. m configProfLib configProfLib ::  ConfigFlags ->  Flag Bool< ConfigFlagsFlagBool Enable profiling in the library m configProfExe configProfExe ::  ConfigFlags ->  Flag Bool ConfigFlagsFlagBool%Enable profiling in the executables. mconfigPackageDBconfigPackageDB ::  ConfigFlags -> Flag PackageDBf ConfigFlagsFlag PackageDBWhich package DB to use mconfigOptimizationconfigOptimization ::  ConfigFlags -> Flag OptimisationLevelB   ConfigFlagsFlagOptimisationLevelEnable optimization. mconfigInstallDirsconfigInstallDirs ::  ConfigFlags -> InstallDirs (Flag PathTemplate)   ConfigFlags InstallDirsFlag PathTemplateInstallation paths m configHcPkg configHcPkg ::  ConfigFlags ->  Flag FilePath {  ConfigFlagsFlagFilePathgiven hc-pkg location m configHcPath configHcPath ::  ConfigFlags ->  Flag FilePath6   ConfigFlagsFlagFilePathgiven compiler location mconfigHcFlavorconfigHcFlavor ::  ConfigFlags -> Flag CompilerFlavor   ConfigFlagsFlagCompilerFlavor3The "flavor" of the compiler, sugh as GHC or Hugs. m configGHCiLib configGHCiLib ::  ConfigFlags ->  Flag Bool s  ConfigFlagsFlagBool"Enable compiling library for GHCi m ConfigFlags< ConfigFlags :: ProgramConfiguration -> [(String, FilePath)] -> [(String, [String])] -> Flag CompilerFlavor ->  Flag FilePath ->  Flag FilePath ->  Flag Bool ->  Flag Bool ->  Flag Bool ->  Flag Bool ->  [String] ->  Flag OptimisationLevel ->  Flag PathTemplate ->  Flag PathTemplate -> InstallDirs (Flag PathTemplate) ->  Flag FilePath ->  [FilePath] ->  [FilePath] ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  Flag Bool -> Flag PackageDB ->  Flag Bool ->  Flag Bool ->  Flag Bool ->  [Dependency] -> FlagAssignment ->  ConfigFlagsProgramConfiguration[](,)StringFilePath[](,)String[]StringFlagCompilerFlavorFlagFilePathFlagFilePathFlagBoolFlagBoolFlagBoolFlagBool[]StringFlagOptimisationLevelFlag PathTemplateFlag PathTemplate InstallDirsFlag PathTemplateFlagFilePath[]FilePath[]FilePathFlagFilePath VerbosityFlag VerbosityFlagBoolFlag PackageDBFlagBoolFlagBoolFlagBool[] DependencyFlagAssignment ConfigFlagsm ConfigFlagsdata  ConfigFlags%$Flags to configure command mconfigExtraLibDirsconfigExtraLibDirs ::  ConfigFlags ->  [FilePath] ConfigFlags[]FilePath#path to search for extra libraries mconfigExtraIncludeDirsconfigExtraIncludeDirs ::  ConfigFlags ->  [FilePath]h ConfigFlags[]FilePath path to search for header files mconfigDistPrefconfigDistPref ::  ConfigFlags ->  Flag FilePath/  ConfigFlagsFlagFilePathdist prefix configDependency configDependency ::  Verbosity -> !PackageIndex InstalledPackageInfo ->  Dependency -> IO PackageIdentifierL Verbosity PackageIndexInstalledPackageInfo DependencyIOPackageIdentifierHTest for a package dependency and record the version we have installed. mconfigConstraintsconfigConstraints ::  ConfigFlags ->  [Dependency]  ConfigFlags[] Dependency(Additional constraints for dependencies mconfigConfigureArgsconfigConfigureArgs ::  ConfigFlags -> [String] ConfigFlags[]String&Extra arguments to configure mconfigConfigurationsFlagsconfigConfigurationsFlags ::  ConfigFlags -> FlagAssignmentr ConfigFlagsFlagAssignmentconfigCompilerAuxconfigCompilerAux ::  ConfigFlags -> #IO (Compiler, ProgramConfiguration)P ConfigFlagsIO(,)CompilerProgramConfigurationconfigCompilerconfigCompiler :: Maybe CompilerFlavor -> Maybe FilePath -> Maybe FilePath -> ProgramConfiguration ->  Verbosity -> #IO (Compiler, ProgramConfiguration)=MaybeCompilerFlavorMaybeFilePathMaybeFilePathProgramConfiguration VerbosityIO(,)CompilerProgramConfiguration~confHook confHook ::  UserHooks -> F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags -> IO LocalBuildInfo UserHooks(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfo@Over-ride this hook to get different behavior during configure. conEconE :: Name -> ExpQNameExpQConEConE :: Name -> ExpNameExpcondE condE :: ExpQ -> ExpQ -> ExpQ -> ExpQoTExpQExpQExpQExpQCondE CondE :: Exp -> Exp -> Exp -> ExpExpExpExpExp concatMap concatMap :: (Word8 -> ByteString) ->  ByteString ->  ByteString]Word8 ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results  concatMap concatMap :: (Char -> ByteString) ->  ByteString ->  ByteStringwHChar ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results  concatHtml concatHtml ::  HTML a => [a] -> Html.HTMLa[]aHtml concatHtml concatHtml ::  HTML a => [a] -> HtmlHTMLa[]aHtml concatHtml concatHtml ::  HTML a => [a] -> Html HTMLa[]aHtmlconcatconcat ::  [ByteString] ->  ByteString g [] ByteString ByteString/O(n) Concatenate a list of ByteStrings. concatconcat ::  [ByteString] ->  ByteString+! ![] ByteString ByteString/O(n) Concatenate a list of ByteStrings. Condata Con!}compilerVersioncompilerVersion :: Compiler -> Version!!CompilerVersion CompilerVar CompilerVar :: PathTemplateVariable^"G"PathTemplateVariable5The compiler name and version, eg ghc-6.6.1 } compilerId compilerId :: Compiler ->  CompilerId#"Compiler CompilerId}compilerFlavorcompilerFlavor :: Compiler -> CompilerFlavor#f#CompilerCompilerFlavor}compilerExtensionscompilerExtensions :: Compiler -> [(Extension, String)]"$#Compiler[](,) ExtensionStringcompilercompiler :: LocalBuildInfo -> Compiler$y$LocalBuildInfoCompiler!The compiler we're building with }CompilerCompiler ::  CompilerId -> [(Extension, String)] -> Compilerd%+% CompilerId[](,) ExtensionStringCompiler}Compilerdata Compiler%compEcompE :: [StmtQ] -> ExpQ%%[]StmtQExpQCompECompE :: [Stmt] -> ExpL&8&[]StmtExpv comparing  comparing ::  Ord a => (b -> a) -> b -> b -> Ordering&&OrdababbOrderingcompactcompact :: HtmlAttr-'"'HtmlAttr commentStart commentStart :: GenLanguageDef s u m -> String''GenLanguageDefsumStringDescribes the start of a block comment. Use the empty string if the language doesn't support block comments. For example "/*". commentscomments :: PPHsMode -> Bool((PPHsModeBoolnot implemented yet  commentLine commentLine :: GenLanguageDef s u m -> String0) )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 -> String2* *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]+2+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],,GenTokenParsersumParsecTsumaParsecTsum[]aLexeme parser commaSep p parses zero or more occurrences of p separated by comma. Returns a list of values returned by p. u commandUsage commandUsage :: CommandUI flags -> String -> String4. . CommandUIflagsStringString)The useage line summary for this command u CommandUI CommandUI :: String -> String -> String -> String -> Maybe (String -> String) -> flags -> ShowOrParseArgs -> [OptionField flags] -> CommandUI flags/Z/ StringStringStringStringMaybeStringStringflagsShowOrParseArgs[] OptionFieldflags CommandUIflagsu CommandUIdata  CommandUI flags0commandToProcesscommandToProcess :: String -> IO (FilePath, String)00StringIO(,)FilePathStringjTurns a shell command into a raw command. Usually this involves wrapping it in an invocation of the shell. There's a difference in the signature of commandToProcess between the Windows and Unix versions. On Unix, exec takes a list of strings, and we want to pass our command to binsh as a single argument. On Windows, CreateProcess takes a single string for the command, which is later decomposed by cmd.exe. In this case, we just want to prepend "c:WINDOWSCMD.EXE /c" to our command line. The command-line translation that we normally do for arguments on Windows isn't required (or desirable) here. ucommandSynopsiscommandSynopsis :: CommandUI flags -> String33 CommandUIflagsStringCA short, one line description of the command to use in help texts. u commandsRun  commandsRun ::  CommandUI a -> [Command action] -> [String] -> %CommandParse (a, CommandParse action)44 CommandUIa[]Commandaction[]String CommandParse(,)a CommandParseactionucommandShowOptionscommandShowOptions :: CommandUI flags -> flags -> [String]5r5 CommandUIflagsflags[]String;Show flags in the standard long option command line format uCommandReadyToGoCommandReadyToGo :: flags -> CommandParse flagsb6A6flags CommandParseflagsu CommandParsedata  CommandParse flags6ucommandOptionscommandOptions :: CommandUI flags -> ShowOrParseArgs -> [OptionField flags]r7.7 CommandUIflagsShowOrParseArgs[] OptionFieldflags'All the Option fields for this command u commandName commandName :: CommandUI flags -> String87 CommandUIflagsStringbThe name of the command as it would be entered on the command line. For example "build". u CommandList CommandList :: [String] -> CommandParse flags88[]String CommandParseflagsu CommandHelp CommandHelp :: String -> String -> CommandParse flags9p9StringString CommandParseflagsu CommandErrors CommandErrors :: [String] -> CommandParse flags':9[]String CommandParseflagsucommandDescriptioncommandDescription :: CommandUI flags -> Maybe (String -> String):: CommandUIflagsMaybeStringString<Additional explanation of the command to use in help texts. ucommandDefaultFlagscommandDefaultFlags :: CommandUI flags -> flags;|; CommandUIflagsflagsInitial / empty flags ucommandAddActioncommandAddAction :: Monoid flags => CommandUI flags -> (flags -> [String] -> action) -> Command action<W<Monoidflags CommandUIflagsflags[]StringactionCommandactionuCommanddata Command action<commacomma :: Doc"==DocA ',' character commacomma :: GenTokenParser s u m -> ParsecT s u m String==GenTokenParsersumParsecTsumStringrLexeme parser comma parses the character ',' and skips any trailing white space. Returns the string ",". CommaComma :: Token}>u>TokencombineInstallDirs combineInstallDirs ::  (a -> b -> c) ->  InstallDirs a ->  InstallDirs b ->  InstallDirs cb??abc InstallDirsa InstallDirsb InstallDirsccombinecombine :: FilePath -> FilePath -> FilePath??FilePathFilePathFilePathBCombine two paths, if the second path isAbsolute, then it returns the second.
combine (takeDirectory (makeValid x)) (takeFileName (makeValid x)) `equalFilePath` makeValid x
Posix:   combine "/" "test" == "/test"
Posix:   combine "home" "bob" == "home/bob"
Windows: combine "home" "bob" == "home\\bob"
combinecombine :: FilePath -> FilePath -> FilePathAAFilePathFilePathFilePathBCombine two paths, if the second path isAbsolute, then it returns the second.
combine (takeDirectory (makeValid x)) (takeFileName (makeValid x)) `equalFilePath` makeValid x
Posix:   combine "/" "test" == "/test"
Posix:   combine "home" "bob" == "home/bob"
Windows: combine "home" "bob" == "home\\bob"
Columntype Column = Int&CColumntype Column = Int^Ccolspancolspan :: Int -> HtmlAttrCCIntHtmlAttrcolspancolspan :: Int -> HtmlAttrDDIntHtmlAttrcolspancolspan :: Int -> HtmlAttrrD`DIntHtmlAttrcolscols :: String -> HtmlAttrDDStringHtmlAttrcolscols :: String -> HtmlAttr*EEStringHtmlAttrcolscols :: String -> HtmlAttrEqEStringHtmlAttrcolorcolor :: String -> HtmlAttrEEStringHtmlAttrcoloncolon :: DocFFDocA ':' character coloncolon :: GenTokenParser s u m -> ParsecT s u m StringFFGenTokenParsersumParsecTsumStringrLexeme parser colon parses the character ':' and skips any trailing white space. Returns the string ":". ColonColon :: TokenwGoGTokencolgroupcolgroup :: Html -> HtmlGGHtmlHtmlcolgroupcolgroup :: Html -> Html'HHHtmlHtmlcolgroupcolgroup :: Html -> HtmlHpHHtmlHtmlcolcol :: Html -> HtmlHHHtmlHtmlcolcol :: Html -> HtmlI IHtmlHtmlcolcol :: Html -> HtmliIZIHtmlHtmlCOffdata COffIcodebasecodebase :: String -> HtmlAttrIIStringHtmlAttrcodebasecodebase :: String -> HtmlAttr]JHJStringHtmlAttrcodebasecodebase :: String -> HtmlAttrJJStringHtmlAttrcodecode :: String -> HtmlAttrKKStringHtmlAttr] cmpUArray cmpUArray :: "(IArray UArray e, Ix i, Ord e) =>  UArray i e ->  UArray i e -> OrderingKKIArrayUArrayeIxiOrdeUArrayieUArrayieOrdering] cmpIntUArray cmpIntUArray :: (IArray UArray e, Ord e) =>  UArray Int e ->  UArray Int e -> OrderingLLIArrayUArrayeOrdeUArrayInteUArrayInteOrderingCModedata CModeM closePHANDLE closePHANDLE :: PHANDLE -> IO ()yMcMPHANDLEIO()closeFdcloseFd :: Bool -> CInt -> IO CIntMMBoolCIntIOCInt ClosedHandle ClosedHandle :: ExitCode -> ProcessHandle__lNNNExitCodeProcessHandle__CLongdata CLongN4Haskell type representing the C long type.  ClockTicktype  ClockTick = CClockOCLLongdata CLLong?O9Haskell type representing the C long long type. clickmapclickmap :: String -> HtmlOOStringHtmlclickmapclickmap :: String -> Html0PPStringHtmlclickmapclickmap :: String -> HtmlP{PStringHtmlclearclear :: String -> HtmlAttrPPStringHtmlAttrmcleanVerbositycleanVerbosity ::  CleanFlags -> Flag VerbosityqQOQ CleanFlagsFlag Verbositym cleanVerbose cleanVerbose ::  CleanFlags ->  VerbosityQQ CleanFlags Verbositym cleanSaveConf cleanSaveConf ::  CleanFlags ->  Flag BoolbRER CleanFlagsFlagBool~ cleanHook cleanHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  CleanFlags -> IO ()xSS UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()<Over-ride this hook to get different behavior during clean. m CleanFlags  CleanFlags ::  Flag Bool ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  CleanFlagsTTTFlagBoolFlagFilePath VerbosityFlag Verbosity CleanFlagsm CleanFlagsdata  CleanFlagsTm cleanDistPref cleanDistPref ::  CleanFlags ->  Flag FilePath\U;U CleanFlagsFlagFilePathm cleanCommand cleanCommand :: CommandUI CleanFlagsUU CommandUI CleanFlagsCLDoubledata CLDoubleU;Haskell type representing the C long double type. CLconvtype CLconv = ()mVClauseQtype ClauseQ = Q ClauseVclause clause :: [PatQ] -> BodyQ -> [DecQ] -> ClauseQDWW[]PatQBodyQ[]DecQClauseQClause Clause :: [Pat] -> Body -> [Dec] -> ClauseWW[]PatBody[]DecClauseClausedata ClauseXClassOpI ClassOpI :: Name -> Type -> Name -> Fixity -> InfoXXNameTypeNameFixityInfo classIndent classIndent :: PPHsMode -> Indent YXPPHsModeIndent#indentation of a class or instance ClassIClassI :: Dec -> InfoYsYDecInfoclassDclassD :: CxtQ -> Name -> [Name] -> [FunDep] -> [DecQ] -> DecQIZZCxtQName[]Name[]FunDep[]DecQDecQClassDClassD :: Cxt -> Name -> [Name] -> [FunDep] -> [Dec] -> Dec [ZCxtName[]Name[]FunDep[]DecDecCJmpBufdata CJmpBuf=[7Haskell type representing the C jmp_buf type. citecite :: Html -> Html[[HtmlHtmlcitecite :: Html -> Html\\HtmlHtmlcitecite :: Html -> Htmld\U\HtmlHtmlCIntPtrdata CIntPtr\CIntMaxdata CIntMax\CIntdata CInt\3Haskell type representing the C int type. CInodata CInoS]ChrChr :: Char ->  TextDetails]]Char TextDetailschoiceQchoiceQ :: MonadPlus m => GenericQ (m r) -> GenericQ (m r) -> GenericQ (m r)^3^ MonadPlusmGenericQmrGenericQmrGenericQmrChoice for monadic queries uchoiceOptFromEnumchoiceOptFromEnum :: %(Bounded b, Enum b, Show b, Eq b) => #MkOptDescr (a -> b) (b -> a -> a) a~_,_BoundedbEnumbShowbEqb MkOptDescrabbaaacreate a Choice option out of an enumeration type. As long flags, the Show output is used. As short flags, the first character which does not conflict with a previous one is used. u choiceOpt choiceOpt :: Eq b => [(b, OptFlags, Description)] -> #MkOptDescr (a -> b) (b -> a -> a) aa`Eqb[](,,)bOptFlags Description MkOptDescrabbaaacreate a Choice option u ChoiceOpt ChoiceOpt :: ,[(Description, OptFlags, a -> a, a -> Bool)] ->  OptDescr aaa[](,,,) DescriptionOptFlagsaaaBoolOptDescrachoiceMpchoiceMp :: MonadPlus m =>  GenericM m ->  GenericM m ->  GenericM mbib MonadPlusmGenericMmGenericMmGenericMm#Choice for monadic transformations #choicechoice ::  [ReadPrec a] ->  ReadPrec aFcc[]ReadPrecaReadPreca,Combines all parsers in the specified list.  choicechoice ::  [ReadP a] -> ReadP acc[]ReadPaReadPa,Combines all parsers in the specified list. choicechoice :: Stream s m t => [ParsecT s u m a] -> ParsecT s u m adydStreamsmt[]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 HsDeclfeSrcLocHsExpHsRhs[]HsDeclPHsDecl checkUnQual checkUnQual :: HsQName -> P HsNamefpfHsQNamePHsName checkRevDecls checkRevDecls :: [HsDecl] ->  P [HsDecl] gf[]HsDeclP[]HsDecl checkPrec checkPrec :: Integer -> P IntogYgIntegerPIntcheckPersistBuildConfigcheckPersistBuildConfig :: FilePath -> FilePath -> IO ()hgFilePathFilePathIO()MCheck that localBuildInfoFile is up-to-date with respect to the .cabal file.  checkPattern checkPattern :: HsExp -> P HsPathhHsExpPHsPat{checkPackageFilescheckPackageFiles :: PackageDescription -> FilePath -> IO [PackageCheck]iRiPackageDescriptionFilePathIO[] PackageCheckSanity check things that requires IO. It looks at the files in the package and expects to find the package unpacked in at the given filepath. { checkPackage checkPackage :: GenericPackageDescription -> Maybe PackageDescription -> [PackageCheck]jjGenericPackageDescriptionMaybePackageDescription[] PackageCheckCheck for common mistakes and problems in package descriptions. This is the standard collection of checks covering all apsects except for checks that require looking at files within the package. For those see checkPackageFiles. It requires the GenericPackageDescription and optionally a particular configuration of that package. If you pass Nothing then we just check a version of the generic description using flattenPackageDescription. checkInstHeadercheckInstHeader ::  HsQualType ->  P (HsContext, HsQName, [HsType])mKm HsQualTypeP(,,) HsContextHsQName[]HsType checkExpr checkExpr :: HsExp -> P HsExpmmHsExpPHsExpcheckedchecked :: HtmlAttr4n)nHtmlAttrcheckedchecked :: HtmlAttrznonHtmlAttrcheckedchecked :: HtmlAttrnnHtmlAttrcheckDataHeadercheckDataHeader ::  HsQualType -> P (HsContext, HsName, [HsName])uo8o HsQualTypeP(,,) HsContextHsName[]HsName checkContext checkContext :: HsType ->  P HsContextooHsTypeP HsContext{checkConfiguredPackagecheckConfiguredPackage :: PackageDescription -> [PackageCheck]pgpPackageDescription[] PackageCheckcheckClassHeadercheckClassHeader ::  HsQualType -> P (HsContext, HsName, [HsName])Iq q HsQualTypeP(,,) HsContextHsName[]HsNamecheckClassBodycheckClassBody :: [HsDecl] ->  P [HsDecl]qq[]HsDeclP[]HsDeclcheckboxcheckbox :: String -> String -> HtmlBr)rStringStringHtmlcheckboxcheckbox :: String -> String -> HtmlrrStringStringHtmlcheckboxcheckbox :: String -> String -> Html.ssStringStringHtmlcheckBOLcheckBOL ::  Lex a Bool~smsLexaBoolcheckAssertioncheckAssertion :: HsType -> P HsAsstssHsTypePHsAsstcheckcheck :: Bool -> STM aHt5tBoolSTMav chattyTry chattyTry :: String -> IO () -> IO ()ttStringIO()IO()VPerform an IO action, catching any IO exceptions and printing an error if one occurs.  charLiteral charLiteral :: GenTokenParser s u m -> ParsecT s u m CharuuGenTokenParsersumParsecTsumChar&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 -> Lit7w)wCharLitCharLCharL :: Char -> LitwywCharLitcharIsRepresentablecharIsRepresentable :: Char -> IO BoolwwCharIOBoolDetermines 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 -> TokenyyCharTokencharchar :: Char -> DocfyXyCharDocBA document of height and width 1, containing a literal character.  charchar :: Char ->  ReadP CharzyCharReadPChar,Parses and returns the specified character. charchar :: Stream s m Char => Char -> ParsecT s u m CharzzStreamsmCharCharParsecTsumCharchar c parses a single character c. Returns the parsed character (i.e. c).
semiColon  = char ';'
"CharChar :: Char -> Lexeme{{CharLexemeCharacter literal .Chandata Chan a{HChan is an abstract type representing an unbounded FIFO channel.  chainr1chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a||ReadPaReadPaaaReadPaFLike 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 ~}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 :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP atReadPaReadPaaaaReadPachainr 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 aUStreamsmtParsecTsumaParsecTsumaaaaParsecTsumaEchainr 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 alReadPaReadPaaaReadPaFLike 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؄uStreamsmtParsecTsumaParsecTsumaaaParsecTsumachainl1 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 aReadPaReadPaaaaReadPachainl 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 a+ʼnStreamsmtParsecTsumaParsecTsumaaaaParsecTsumaGchainl 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. CGrouptype CGroup = ()CFposdata CFpos׋6Haskell type representing the C fpos_t type. CFLocktype CFLock = ()DCFloatdata CFloatt5Haskell type representing the C float type. CFiledata CFile׌4Haskell type representing the C FILE type. centercenter :: Html -> Html_PHtmlHtml cellspacing cellspacing :: Int -> HtmlAttrÍIntHtmlAttr cellspacing cellspacing :: Int -> HtmlAttr'IntHtmlAttr cellspacing cellspacing :: Int -> HtmlAttryIntHtmlAttr cellpadding cellpadding :: Int -> HtmlAttrݎIntHtmlAttr cellpadding cellpadding :: Int -> HtmlAttrSAIntHtmlAttr cellpadding cellpadding :: Int -> HtmlAttrIntHtmlAttrcellcell :: HTMLTABLE ht => ht ->  HtmlTable.  HTMLTABLEhtht HtmlTableCDoubledata CDouble`6Haskell type representing the C double type. CDirenttype CDirent = ()ϐCDirtype CDir = ()CDevdata CDev.CClockdata CClock^7Haskell type representing the C clock_t type. ccLdOptionsBuildInfoccLdOptionsBuildInfo :: [String] -> [String] ->  BuildInfo=[]String[]String BuildInfoMakes a BuildInfo from C compiler and linker flags. This can be used with the output from configuration programs like pkg-config and similar package-specific programs like mysql-config, freealut-config etc. For example:
ccflags <- rawSystemProgramStdoutConf verbosity prog conf ["--cflags"]
ldflags <- rawSystemProgramStdoutConf verbosity prog conf ["--libs"]
return (ccldOptionsBuildInfo (words ccflags) (words ldflags))
CChardata CChar-4Haskell type representing the C char type. CCallCCall :: CallconvCallconvcatchcatch :: IO a -> (IOError -> IO a) -> IO a,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. catcat :: [Doc] -> Doc:'[]DocDoc#Either hcat or vcat. b 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...). ] 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){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...). castCharToCCharcastCharToCChar :: Char -> CCharǝCharCCharfConvert a Haskell character to a C character. This function is only safe on the first 256 characters. castCCharToCharcastCCharToChar :: CChar -> CharCCharChar\Convert a C byte, representing a Latin-1 character, to the corresponding Haskell character.  caseSensitive caseSensitive :: GenLanguageDef s u m -> BoolxTGenLanguageDefsumBool6Set to True if the language is case sensitive. casescases :: Counts -> IntCountsInt caseIndent caseIndent :: PPHsMode -> IndentjUPPHsModeIndent6indentation of the body of a case expression caseEcaseE :: ExpQ -> [MatchQ] -> ExpQExpQ[]MatchQExpQCaseECaseE :: Exp -> [Match] -> ExphExp[]MatchExpcaptioncaption :: Html -> HtmlءɡHtmlHtmlcaptioncaption :: Html -> Html.HtmlHtmlcaptioncaption :: Html -> HtmluHtmlHtmlCallconvdata Callconvv cabalVersion cabalVersion :: VersionVersionvcabalBootstrappingcabalBootstrapping :: BoolZSBoolc_write c_write :: CInt ->  Ptr CChar -> CSize ->  IO CSsizẹCIntPtrCCharCSizeIOCSsizec_unlinkc_unlink :: CString -> IO CInt_GCStringIOCIntc_umaskc_umask :: CMode -> IO CMode¤CModeIOCModec_strlenc_strlen :: CString -> IO CSize+CStringIOCSizec_statc_stat :: CString ->  Ptr CStat -> IO CIntCStringPtrCStatIOCInt c_s_isreg c_s_isreg :: CMode -> CInt CModeCInt c_s_isfifo c_s_isfifo :: CMode -> CIntk[CModeCInt c_s_isdir c_s_isdir :: CMode -> CIntǦCModeCInt c_s_ischr c_s_ischr :: CMode -> CInt#CModeCInt c_s_isblk c_s_isblk :: CMode -> CIntoCModeCIntc_rmdirc_rmdir :: CString -> IO CInţCStringIOCInt c_rewinddir c_rewinddir :: Ptr CDir -> IO ()R8PtrCDirIO() c_reverse  c_reverse ::  Ptr Word8 ->  Ptr Word8 -> CULong -> IO ()ʨPtrWord8PtrWord8CULongIO()c_renamec_rename :: CString -> CString -> IO CInt~]CStringCStringIOCIntc_read c_read :: CInt ->  Ptr CChar -> CSize ->  IO CSsizeCIntPtrCCharCSizeIOCSsize c_opendir c_opendir :: CString ->  IO (Ptr CDir)qCStringIOPtrCDirc_open c_open :: CString -> CInt -> CMode -> IO CInt!CStringCIntCModeIOCInt c_minimum c_minimum ::  Ptr Word8 -> CULong -> IO Word8PtrWord8CULongIOWord8 c_maximum c_maximum ::  Ptr Word8 -> CULong -> IO Word89PtrWord8CULongIOWord8c_lseek c_lseek :: CInt -> Int64 -> CInt -> IO Int64ȬCIntInt64CIntIOInt64c_isattyc_isatty :: CInt -> IO CInt)CIntIOCInt c_intersperse  c_intersperse ::  Ptr Word8 ->  Ptr Word8 -> CULong -> Word8 -> IO ()PtrWord8PtrWord8CULongWord8IO()c_getpidc_getpid :: IO CPid;.IOCPidc_getcwdc_getcwd ::  Ptr CChar -> CSize -> IO (Ptr CChar)ЮPtrCCharCSizeIOPtrCChar c_ftruncate c_ftruncate :: CInt -> COff -> IO CIntM2CIntCOffIOCIntc_fstatc_fstat :: CInt ->  Ptr CStat -> IO CIntϯCIntPtrCStatIOCIntc_free_finalizerc_free_finalizer :: FunPtr (Ptr Word8 -> IO ())T/FunPtrPtrWord8IO()c_dup2c_dup2 :: CInt -> CInt -> IO CIntǰCIntCIntIOCIntc_dupc_dup :: CInt -> IO CInt" CIntIOCIntc_creatc_creat :: CString -> CMode -> IO CIntCStringCModeIOCIntc_count c_count ::  Ptr Word8 -> CULong -> Word8 ->  IO CULongAPtrWord8CULongWord8IOCULong c_closesocket c_closesocket :: CInt -> IO CIntCIntIOCInt c_closedir c_closedir :: Ptr CDir -> IO CIntPtrCDirIOCIntc_closec_close :: CInt -> IO CInt{fCIntIOCIntc_chmodc_chmod :: CString -> CMode -> IO CIntٳCStringCModeIOCIntc_chdirc_chdir :: CString -> IO CInt]ECStringIOCIntc_accessc_access :: CString -> CInt -> IO CIntڴCStringCIntIOCIntc2wc2w :: Char -> Word8*CharWord8Unsafe 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. s c2hsProgram c2hsProgram :: Program-#Program ByteStringdata  ByteStringeA 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  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  ByteStringdata  ByteStringUA 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  ByteCounttype  ByteCount = CSizeUbuttonbutton :: Html -> HtmlHtmlHtmlbuttonbutton :: Html -> HtmlHtmlHtmlbuttonbutton :: Html -> HtmlQBHtmlHtmlbulletbullet :: HtmlHtmlbulletbullet :: HtmlɺºHtmlbulletbullet :: HtmlHtmlsbuiltinProgramsbuiltinPrograms ::  [Program]aQ[]ProgramUThe default list of programs. These programs are typically used internally to Cabal. mbuildVerbositybuildVerbosity ::  BuildFlags -> Flag Verbosity= BuildFlagsFlag Verbositym buildVerbose buildVerbose ::  BuildFlags ->  Verbosity BuildFlags Verbosity buildTime buildTime :: ParseTime t =>  TimeLocale -> [(Char, String)] -> ti, ParseTimet TimeLocale[](,)CharStringtmbuildProgramArgsbuildProgramArgs ::  BuildFlags -> [(String, [String])] ؽ BuildFlags[](,)String[]String~ buildHook buildHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  BuildFlags -> IO () UserHooksPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()=Over-ride this hook to gbet different behavior during build. m BuildFlags  BuildFlags :: [(String, [String])] ->  Flag FilePath ->  Verbosity -> Flag Verbosity ->  BuildFlags[[](,)String[]StringFlagFilePath VerbosityFlag Verbosity BuildFlagsm BuildFlagsdata  BuildFlagsbuildExpressionParserbuildExpressionParser :: 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 })
m buildDistPref buildDistPref ::  BuildFlags ->  Flag FilePathzY BuildFlagsFlagFilePathbuildDirbuildDir :: LocalBuildInfo -> FilePathLocalBuildInfoFilePathWhere to build the package. m buildCommand buildCommand :: ProgramConfiguration -> CommandUI BuildFlags{ProgramConfiguration CommandUI BuildFlagsbuild build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()j.PackageDescriptionLocalBuildInfo VerbosityIO()QFIX: For now, the target must contain a main module. Not used ATM. Re-add later. build build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()x<PackageDescriptionLocalBuildInfo VerbosityIO()HBuilding a package for JHC. Currently C source files are not supported. build build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()}APackageDescriptionLocalBuildInfo VerbosityIO()Building a package for Hugs. build build :: PackageDescription -> LocalBuildInfo ->  Verbosity -> IO ()WPackageDescriptionLocalBuildInfo VerbosityIO()WBuilding for GHC. If .ghc-packages exists and is readable, add it to the command-line. build build :: PackageDescription -> LocalBuildInfo ->  BuildFlags -> [PPSuffixHandler] -> IO ()MPackageDescriptionLocalBuildInfo BuildFlags[]PPSuffixHandlerIO()5Build the libraries and executables in this package. zbrokenPackagesbrokenPackages :: PackageFixedDeps pkg => PackageIndex pkg -> [(pkg, [PackageIdentifier])]gPackageFixedDepspkg PackageIndexpkg[](,)pkg[]PackageIdentifierAll packages that have dependencies that are not in the index. Returns such packages along with the dependencies that they're missing. breakSubstringbreakSubstring ::  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) 
vbreaksbreaks ::  (a -> Bool) -> [a] -> [[a]]aBool[]a[][]abreakEndbreakEnd :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)i-CharBool ByteString(,) ByteString ByteStringsbreakEnd behaves like break but from the end of the ByteString breakEnd p == spanEnd (not.p) breakbreak :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)TWord8Bool ByteString(,) ByteString ByteStringPbreak p is equivalent to span (not . p). breakbreak :: (Char -> Bool) ->  ByteString -> (ByteString, ByteString)XCharBool ByteString(,) ByteString ByteStringPbreak p is equivalent to span (not . p). bracketsbrackets :: Doc -> Doc8+DocDoc Wrap document in [...] bracketsbrackets :: GenTokenParser s u m -> ParsecT s u m a -> ParsecT s u m a#GenTokenParsersumParsecTsumaParsecTsuma{Lexeme parser brackets p parses p enclosed in brackets ('[' and ']'), returning the value of p. bracesbraces :: Doc -> DocDocDoc 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 :: HtmlyHtmlbrbr :: HtmlHtmlbrbr :: HtmlHtml_boundsbounds :: (IArray a e, Ix i) => a i e -> (i, i)zFIArrayaeIxiaie(,)ii*Extracts the bounds of an immutable array _boundsbounds :: (IArray a e, Ix i) => a i e -> (i, i)6IArrayaeIxiaie(,)ii]boundsbounds :: (IArray a e, Ix i) => a i e -> (i, i)IArrayaeIxiaie(,)iibottombottom :: aa bordercolor bordercolor :: String -> HtmlAttrhSStringHtmlAttr bordercolor bordercolor :: String -> HtmlAttrStringHtmlAttr bordercolor bordercolor :: String -> HtmlAttr<'StringHtmlAttrborderborder :: Int -> HtmlAttrIntHtmlAttrborderborder :: Int -> HtmlAttrIntHtmlAttrborderborder :: Int -> HtmlAttrJ8IntHtmlAttrmboolOpt'boolOpt' :: OptFlags -> OptFlags -> 3MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) a+OptFlagsOptFlags MkOptDescraFlagBoolFlagBoolaaauboolOpt' boolOpt' :: (b -> Maybe Bool) ->  (Bool -> b) -> OptFlags -> OptFlags -> #MkOptDescr (a -> b) (b -> a -> a) a9bMaybeBoolBoolbOptFlagsOptFlags MkOptDescrabbaaamboolOptboolOpt :: SFlags -> SFlags -> 3MkOptDescr (a -> Flag Bool) (Flag Bool -> a -> a) aSFlagsSFlags MkOptDescraFlagBoolFlagBoolaaauboolOpt boolOpt :: (b -> Maybe Bool) ->  (Bool -> b) -> SFlags -> SFlags -> #MkOptDescr (a -> b) (b -> a -> a) abMaybeBoolBoolbSFlagsSFlags MkOptDescrabbaaauBoolOptBoolOpt ::  Description -> OptFlags -> OptFlags -> Bool -> a -> a -> a ->  Maybe Bool ->  OptDescr a.  DescriptionOptFlagsOptFlagsBoolaaaMaybeBoolOptDescra]bOOL_WORD_SCALEbOOL_WORD_SCALE :: Int# -> Int#Int#Int#] bOOL_NOT_BIT bOOL_NOT_BIT :: Int# -> Word#Int#Word#] bOOL_INDEX bOOL_INDEX :: Int# -> Int#RCInt#Int#boldbold :: Html -> HtmlHtmlHtmlboldbold :: Html -> HtmlHtmlHtmlboldbold :: Html -> HtmlB3HtmlHtmlBodyQtype BodyQ = Q Body{bodybody :: Html -> HtmlHtmlHtmlbodybody :: Html -> Html HtmlHtmlbodybody :: Html -> Htmlk\HtmlHtmlBodydata Bodyblueblue :: StringString blockquote blockquote :: Html -> Html/ HtmlHtml blockquote blockquote :: Html -> Html|HtmlHtml blockquote blockquote :: Html -> HtmlHtmlHtmlblackblack :: String%StringbindSbindS :: PatQ -> ExpQ -> StmtQyPatQExpQStmtQBindSBindS :: Pat -> Exp -> StmtPatExpStmt BindirVar BindirVar :: PathTemplateVariableU>PathTemplateVariable#The $bindir path variable bindirbindir :: InstallDirs dir -> dir InstallDirsdirdirbigbig :: Html -> Html1"HtmlHtmlbigbig :: Html -> HtmlpHtmlHtmlbigbig :: Html -> HtmlHtmlHtmlbgcolorbgcolor :: String -> HtmlAttr/StringHtmlAttr between 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_besidesbesides :: HTMLTABLE ht => [ht] ->  HtmlTable HTMLTABLEht[]ht HtmlTablebdobdo :: Html -> HtmlhYHtmlHtmlbdobdo :: Html -> HtmlHtmlHtmlbdobdo :: Html -> HtmlHtmlHtmlbasefontbasefont :: HtmlD=Htmlbasebase :: String -> HtmlAttrStringHtmlAttrbasebase :: String -> HtmlAttrStringHtmlAttrbasebase :: String -> HtmlAttrXCStringHtmlAttrBarBar :: TokenTokenj BangPatterns BangPatterns ::  Extension Extension Backslash Backslash :: Token&Token BackQuote BackQuote :: TokenjbToken background background :: String -> HtmlAttrStringHtmlAttrautogenModulesDirautogenModulesDir :: LocalBuildInfo -> StringT9LocalBuildInfoString5The directory in which we put auto-generated modules autogenModuleNameautogenModuleName :: PackageDescription -> StringPackageDescriptionString@The name of the auto-generated module associated with a package atSrcLocatSrcLoc :: P a -> SrcLoc -> P aPaSrcLocPaAtAt :: TokenToken_assocsassocs :: (IArray a e, Ix i) => a i e -> [(i, e)]]IArrayaeIxiaie[](,)ie<Returns the contents of an array as a list of associations. ]assocsassocs :: (IArray a e, Ix i) => a i e -> [(i, e)]m3IArrayaeIxiaie[](,)ie<Returns the contents of an array as a list of associations.  AssocRight AssocRight :: AssocAssoc AssocNone AssocNone :: Assoc3+Assoc AssocLeft AssocLeft :: AssocwoAssocAssocdata AssocNThis data type specifies the associativity of operators: left, right or none. Assocdata Assoc a b% assertString assertString :: String ->  Assertion}String AssertionassertionPredicateassertionPredicate :: AssertionPredicable t => t -> AssertionPredicateHAssertionPredicablettAssertionPredicateAssertionPredicatetype AssertionPredicate = IO BoolAssertionPredicableclass AssertionPredicable t Assertiontype  Assertion = IO ()) Assertiontype  Assertion = IO ()i assertFailure assertFailure :: String ->  AssertionString Assertion assertFailure assertFailure :: String ->  AssertionI3String Assertion assertEqual  assertEqual :: (Eq a, Show a) => String -> a -> a ->  AssertionEqaShowaStringaa Assertion assertBool assertBool :: String -> Bool ->  Assertion{_StringBool Assertion Assertableclass  Assertable tassertassert :: Assertable t => t ->  Assertion/  Assertablett AssertionasPasP :: Name -> PatQ -> PatQ~NamePatQPatQAsPAsP :: Name -> Pat -> PatNamePatPatarrowTarrowT :: TypeQ1)TypeQArrowTArrowT :: TypemfTypejArrowsArrows ::  Extension Extension] arrEleBottom arrEleBottom :: aa_arrayarray :: (IArray a e, Ix i) => (i, i) -> [(i, e)] -> a i eeIArrayaeIxi(,)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. ]arrayarray :: (IArray a e, Ix i) => (i, i) -> [(i, e)] -> a i eIArrayaeIxi(,)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. s arProgram arProgram :: Program Program arithSeqE arithSeqE :: RangeQ -> ExpQsbRangeQExpQ ArithSeqE ArithSeqE :: Range -> ExpRangeExp~Argstype Args = [String]uArgPlaceHoldertype ArgPlaceHolder = StringQRArgOrderdata ArgOrder a.What to do with options following non-options RArgDescrdata 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 :: HtmlHtmlareaarea :: HtmlHtmlareaarea :: Html Htmlarchivearchive :: String -> HtmlAttrs^StringHtmlAttrarchivearchive :: String -> HtmlAttrStringHtmlAttrarchivearchive :: String -> HtmlAttr7"StringHtmlAttraquaaqua :: StringsjStringappTappT :: TypeQ -> TypeQ -> TypeQTypeQTypeQTypeQAppTAppT :: Type -> Type -> TypeE0TypeTypeTypeappsEappsE :: [ExpQ] -> ExpQ[]ExpQExpQappletapplet :: Html -> HtmlHtmlHtml appendFile appendFile :: FilePath ->  ByteString -> IO ()~[FilePath ByteStringIO()&Append a ByteString to a file.  appendFile appendFile :: FilePath ->  ByteString -> IO ()/ FilePath ByteStringIO()&Append a ByteString to a file. appendappend ::  ByteString ->  ByteString ->  ByteString ByteString ByteString ByteString&O(n\c)/ Append two ByteStrings appendappend ::  ByteString ->  ByteString ->  ByteStringp ByteString ByteString ByteString#O(n) Append two ByteStrings appEappE :: ExpQ -> ExpQ -> ExpQ  ExpQExpQExpQAppEAppE :: Exp -> Exp -> ExpnExpExpExpanyTokenanyToken :: (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 Char!StreamsmCharParsecTsumCharFThis parser succeeds for any character. Returns the parsed character. anyany :: (Word8 -> Bool) ->  ByteString -> BoolWord8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, any determines if any element of the ByteString satisfies the predicate. anyany :: (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 -> IOError[IOErrorStringMaybeHandleMaybeFilePathIOErrorAdds 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 aGenTokenParsersumParsecTsumaParsecTsumaLexeme parser angles p parses p enclosed in angle brackets ('<' and '>'), returning the value of p. anchoranchor :: Html -> HtmlHtmlHtmlanchoranchor :: Html -> Html  HtmlHtmlanchoranchor :: Html -> Htmlp a HtmlHtmlz Ambiguous Ambiguous :: [a] -> SearchResult a  []a SearchResulta_amapamap :: #(IArray a e', IArray a e, Ix i) =>  (e' -> e) -> a i e' -> a i e!_!IArrayae'IArrayaeIxie'eaie'aiedReturns a new array derived from the original array by applying a function to each of the elements. ]amapamap :: #(IArray a e', IArray a e, Ix i) =>  (e' -> e) -> a i e' -> a i e""IArrayae'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$p$StringHtmlAttraltcodealtcode :: String -> HtmlAttr$$StringHtmlAttraltalt :: String -> HtmlAttrA%,%StringHtmlAttraltalt :: String -> HtmlAttr%%StringHtmlAttraltalt :: String -> HtmlAttr%%StringHtmlAttralreadyInUseErrorTypealreadyInUseErrorType ::  IOErrorType]&O& IOErrorTypeyI/O error where the operation failed because one of its arguments is a single-use resource, which is already being used. alreadyExistsErrorTypealreadyExistsErrorType ::  IOErrorType@'2' 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_(zallPackagesByNameallPackagesByName :: Package pkg => PackageIndex pkg -> [[pkg]]g).)Packagepkg PackageIndexpkg[][]pkgZGet all the packages from the index. They are grouped by package name, case-sensitively. z allPackages allPackages :: Package pkg => PackageIndex pkg -> [pkg]_*,*Packagepkg PackageIndexpkg[]pkg%Get all the packages from the index.  allocaBytes allocaBytes :: Int -> (Ptr a -> IO b) -> IO b+*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-R-StorableaIntPtraIObIObZLike allocaArray, but add an extra position to hold a special termination element.  allocaArray allocaArray :: Storable a => Int -> (Ptr a -> IO b) -> IO b.X.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/g/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. allall :: (Word8 -> Bool) ->  ByteString -> Boolo1K1Word8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. allall :: (Char -> Bool) ->  ByteString -> Bool2`2CharBool ByteStringBoolApplied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. alinkalink :: String -> HtmlAttrg3R3StringHtmlAttralignalign :: String -> HtmlAttr33StringHtmlAttralignalign :: String -> HtmlAttr#44StringHtmlAttralignalign :: String -> HtmlAttr4l4StringHtmlAttrAlgRepAlgRep :: [Constr] -> DataRep44[]ConstrDataRep AlgConstr AlgConstr :: ConIndex ->  ConstrRepS5;5ConIndex ConstrReps alexProgram alexProgram :: Program55Programafileafile :: String -> Html55StringHtmlafileafile :: String -> HtmlK6:6StringHtmlafileafile :: String -> Html66StringHtml advancePtr advancePtr :: Storable a => Ptr a -> Int -> Ptr a87 7StorableaPtraIntPtra@Advance a pointer into an array by the given number of elements  addUTCTime addUTCTime :: NominalDiffTime -> UTCTime -> UTCTime 87NominalDiffTimeUTCTimeUTCTimeaddUTCTime a b = a + b addTrailingPathSeparatoraddTrailingPathSeparator :: FilePath -> FilePath88FilePathFilePathAdd a trailing file path separator if one is not already present.
hasTrailingPathSeparator (addTrailingPathSeparator x)
if hasTrailingPathSeparator x then addTrailingPathSeparator x == x else True
Posix:    addTrailingPathSeparator "test/rest" == "test/rest/"
addTrailingPathSeparatoraddTrailingPathSeparator :: FilePath -> FilePathE:.:FilePathFilePathAdd a trailing file path separator if one is not already present.
hasTrailingPathSeparator (addTrailingPathSeparator x)
if hasTrailingPathSeparator x then addTrailingPathSeparator x == x else True
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. saddKnownProgramaddKnownProgram :: Program -> ProgramConfiguration -> ProgramConfiguration,>=ProgramProgramConfigurationProgramConfiguration0Add a known program that we may configure later 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 -> DayAAIntegerDayDayAdd 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 -> Day)BBIntegerDayDayAdd 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. Y addFinalizer addFinalizer :: key -> IO () -> IO ()&C CkeyIO()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).  addExtension addExtension :: FilePath -> String -> FilePathFFFilePathStringFilePathAdd 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"
takeFileName (addExtension (addTrailingPathSeparator x) "ext") == ".ext"
Windows: addExtension "\\\\share" ".txt" == "\\\\share\\.txt"
 addExtension addExtension :: FilePath -> String -> FilePath$IIFilePathStringFilePathAdd 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"
takeFileName (addExtension (addTrailingPathSeparator x) "ext") == ".ext"
Windows: addExtension "\\\\share" ".txt" == "\\\\share\\.txt"
addErrorMessageaddErrorMessage :: Message ->  ParseError ->  ParseErrorkKGKMessage ParseError ParseErroraddDaysaddDays :: Integer -> Day -> DayKKIntegerDayDayADDATTRSclass ADDATTRS aLADDATTRSclass ADDATTRS aGLADDATTRSclass ADDATTRS a~Lactionaction :: String -> HtmlAttrLLStringHtmlAttractionaction :: String -> HtmlAttr>M)MStringHtmlAttractionaction :: String -> HtmlAttrMMStringHtmlAttracronymacronym :: Html -> HtmlMMHtmlHtmlacronymacronym :: Html -> HtmlJN;NHtmlHtmlacronymacronym :: Html -> HtmlNNHtmlHtml_ accumArray accumArray :: (IArray a e, Ix i) => e -> e' -> e -> e -> (i, i) ->  [(i, e')] -> a i eOPOIArrayaeIxiee'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]
] accumArray accumArray :: (IArray a e, Ix i) => e -> e' -> e -> e -> (i, i) ->  [(i, e')] -> a i eRRIArrayaeIxiee'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 eUUIArrayaeIxiee'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])
]accum accum :: (IArray a e, Ix i) => (e -> e' -> e) -> a i e ->  [(i, e')] -> a i eWWIArrayaeIxiee'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])
absoluteInstallDirs absoluteInstallDirs :: PackageDescription -> LocalBuildInfo -> CopyDest -> InstallDirs FilePathYYPackageDescriptionLocalBuildInfoCopyDest InstallDirsFilePathSee absoluteInstallDirs absoluteInstallDirs absoluteInstallDirs :: PackageIdentifier ->  CompilerId -> CopyDest -> InstallDirTemplates -> InstallDirs FilePath'[ZPackageIdentifier CompilerIdCopyDestInstallDirTemplates InstallDirsFilePathConvert from abstract install directories to actual absolute ones by substituting for all the variables in the abstract paths, to get real absolute path. abovesaboves :: HTMLTABLE ht => [ht] ->  HtmlTableD\\ HTMLTABLEht[]ht HtmlTableaboveabove :: "(HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 ->  HtmlTable\\ HTMLTABLEht1 HTMLTABLEht2ht1ht2 HtmlTableabbrabbr :: Html -> HtmlH]9]HtmlHtmlabbrabbr :: Html -> Html]]HtmlHtmlabbrabbr :: Html -> Html]]HtmlHtml@?= (@?=) :: (Eq a, Show a) => a -> a ->  Assertionv^N^EqaShowaaa Assertion@? (@?) :: AssertionPredicable t => t -> String ->  Assertion_^AssertionPredicablettString Assertion@=? (@=?) :: (Eq a, Show a) => a -> a ->  Assertion__EqaShowaaa Assertion>|| (>||) :: Done -> Done -> Done`_DoneDoneDone:Evaluates the first argument in parallel with the second. >| (>|) :: Done -> Done -> Done``DoneDoneDone0Evaluates the first argument before the second. *>>= (>>=) ::  Monad m => m a ->  (a -> m b) -> m bsaGaMonadmmaambmb*>> (>>) ::  Monad m => m a -> m b -> m baaMonadmmambmb<||> (<||>) :: Stream s Identity tok => StreamPermParser s st (a -> b) ->  Parsec s st a -> StreamPermParser s st bcbStreamsIdentitytokStreamPermParsersstabParsecsstaStreamPermParsersstbThe 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 bSedStreamsIdentitytokStreamPermParsersstab(,)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 aVggMonadmParsecTsumaParsecTsumaParsecTsumaThis 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 ajjMonadmParsecTsumaStringParsecTsumaThe 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 -> DocmmDocDocDocDBeside. <> is associative, with identity empty. << (<<) ::  HTML a => Html -> b -> a -> bnmnHTMLaHtmlbab&Put something inside an HTML element. << (<<) ::  HTML a => Html -> b -> a -> b1ooHTMLaHtmlbab&Put something inside an HTML element. << (<<) ::  HTML a => Html -> b -> a -> booHTMLaHtmlbab&Put something inside an HTML element.  () :: FilePath -> FilePath -> FilePathp_pFilePathFilePathFilePath!A nice alias for combine.  () :: FilePath -> FilePath -> FilePath#qqFilePathFilePathFilePath!A nice alias for combine. <.> (<.>) :: FilePath -> String -> FilePathqqFilePathStringFilePathFAlias to addExtension, for people who like that sort of thing. <.> (<.>) :: FilePath -> String -> FilePathrgrFilePathStringFilePathFAlias to addExtension, for people who like that sort of thing. <+> (<+>) :: Doc -> Doc -> Doc0ssDocDocDocBeside, separated by space, unless one of the arguments is empty. <+> is associative, with identity empty. #<++ (<++) ::  ReadPrec a ->  ReadPrec a ->  ReadPrec aMttReadPrecaReadPrecaReadPrecaxLocal, exclusive, left-biased choice: If left parser locally produces any result at all, then right parser is not used.  <++ (<++) :: ReadP a -> ReadP a -> ReadP aJu#uReadPaReadPaReadPaxLocal, 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 bvWvStreamsIdentitytokab(,)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 bxxStreamsIdentitytokabParsecsstaStreamPermParsersstb1The 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 b|{|abAssocab_// (//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i eG}}IArrayaeIxiaie[](,)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. ]// (//) :: (IArray a e, Ix i) => a i e -> [(i, e)] -> a i eYIArrayaeIxiaie[](,)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 -> c\4bcStrategybabacParallel 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 -> cwbcStrategybabacSequential 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 -> cU-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 -> HtmlkHTMLaHTMLbabHtml]Create a piece of HTML which is the concatenation of two things which can be made into HTML. +++ (+++) :: (HTML a, HTML b) => a -> b -> HtmluPHTMLaHTMLbabHtml]Create a piece of HTML which is the concatenation of two things which can be made into HTML. #+++ (+++) ::  ReadPrec a ->  ReadPrec a ->  ReadPrec ai9ReadPrecaReadPrecaReadPrecaSymmetric choice.  +++ (+++) :: ReadP a -> ReadP a -> ReadP aٍReadPaReadPaReadPaSymmetric choice. $|| ($||) :: (a -> b) ->  Strategy a -> a -> b{abStrategyaab~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. $+$ ($+$) :: Doc -> Doc -> Doc|jDocDocDocSAbove, with no overlapping. $+$ is associative, with identity empty. $$ ($$) :: Doc -> Doc -> Doc1DocDocDocAbove, 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] -> aADDATTRSaa[]HtmlAttra! (!) :: ADDATTRS a => a ->  [HtmlAttr] -> a6ADDATTRSaa[]HtmlAttra! (!) :: ADDATTRS a => a ->  [HtmlAttr] -> aADDATTRSaa[]HtmlAttra_! (!) :: (IArray a e, Ix i) => a i e -> i -> eLIArrayaeIxiaieieBReturns the element of an immutable array at the specified index. ]! (!) :: (IArray a e, Ix i) => a i e -> i -> eIArrayaeIxiaieieBReturns the element of an immutable array at the specified index. )||| (|||) :: ArrowChoice a => a b d -> a c d -> a (Either b c) dӖ ArrowChoiceaabdacdaEitherbcd9|| (||) :: Bool -> Bool -> Bool~iBoolBoolBool Boolean "or" |> (|>) :: 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 (),Monadmabmc[]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]>Monadmabmc[]a[]bm[]cMThe zipWithM function generalizes zipWith to arbitrary monads. AzipWith7zipWith7 :: &(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. AzipWith6zipWith6 :: !(a -> b -> c -> d -> e -> f -> g) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g]7abcdefg[]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. AzipWith5zipWith5 :: (a -> b -> c -> d -> e -> f) -> [a] -> [b] -> [c] -> [d] -> [e] -> [f]9abcdef[]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. AzipWith4zipWith4 :: (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. AzipWith3 zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]/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. AzipWith zipWith ::  (a -> b -> c) -> [a] -> [b] -> [c]zQabc[]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. zipWith 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. (ZipListZipList :: [a] ->  ZipList au[[]aZipLista(ZipListnewtype ZipList aLists, but with an Applicative functor based on zipping, so that
f <$> ZipList xs1 <*> ... <*> ZipList xsn = ZipList (zipWithn f xs1 ... xsn)
Azip7zip7 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [g] -> [(a, b, c, d, e, f, g)]8[]a[]b[]c[]d[]e[]f[]g[](,,,,,,)abcdefghThe zip7 function takes seven lists and returns a list of seven-tuples, analogous to zip. Azip6zip6 :: [a] -> [b] -> [c] -> [d] -> [e] -> [f] -> [(a, b, c, d, e, f)][]a[]b[]c[]d[]e[]f[](,,,,,)abcdefdThe zip6 function takes six lists and returns a list of six-tuples, analogous to zip. Azip5zip5 :: [a] -> [b] -> [c] -> [d] -> [e] -> [(a, b, c, d, e)]<[]a[]b[]c[]d[]e[](,,,,)abcdefThe zip5 function takes five lists and returns a list of five-tuples, analogous to zip. Azip4 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. Azip3 zip3 :: [a] -> [b] -> [c] ->  [(a, b, c)]Z%[]a[]b[]c[](,,)abcVzip3 takes three lists and returns a list of triples, analogous to zip. Azipzip :: [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. zipzip ::  ByteString ->  ByteString -> [(Word8, Word8)]Z$ 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. ) zeroArrow zeroArrow :: ArrowZero a => a b c ArrowZeroaabcyieldyield :: 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. eYHCYHC :: CompilerFlavor CompilerFlavorxorxor ::  Bits a => a -> a -> apBitsaaaawX86_64X86_64 :: ArchòArchE writeSTRef writeSTRef ::  STRef s a -> a -> ST s ()G%STRefsaaSTs()'Write a new value into an STRef twritePackageDescriptionwritePackageDescription :: FilePath -> PackageDescription -> IO ()#FilePathPackageDescriptionIO() WriteMode WriteMode :: IOModei`IOMode4 writeIORef writeIORef :: IORef a -> a -> IO ()ǴIORefaaIO()'Write a new value into an IORef twriteHookedBuildInfowriteHookedBuildInfo :: FilePath -> HookedBuildInfo -> IO ()FilePathHookedBuildInfoIO() writeFile writeFile :: FilePath -> String -> IO ()4FilePathStringIO()wThe computation writeFile file str function writes the string str, to the file file.  writeFile writeFile :: FilePath ->  ByteString -> IO ()4FilePath ByteStringIO()%Write a ByteString to a file. writablewritable ::  Permissions -> Bool PermissionsBool( WrappedMonadnewtype  WrappedMonad m a( WrappedArrownewtype  WrappedArrow a b cG( WrapMonad WrapMonad :: m a -> WrappedMonad m ama WrappedMonadma( WrapArrow WrapArrow :: a b c -> WrappedArrow a b c?abc WrappedArrowabcAwordswords :: String -> [String]String[]String[words breaks a string up into a list of words, which were delimited by white space. K wordPtrToPtr wordPtrToPtr :: WordPtr -> Ptr agQWordPtrPtra+casts a WordPtr to a Ptr KWordPtrdata WordPtrĺUAn unsigned integral type that can be losslessly converted to and from Ptr.  Word8data Word8G8-bit unsigned integer type  Word64data Word6464-bit unsigned integer type  Word32data Word3232-bit unsigned integer type  Word16data Word16-16-bit unsigned integer type  Worddata WordvNA Word is an unsigned integral type, with the same size as Int. T withProgName withProgName :: String -> IO a -> IO aD'StringIOaIOa{withProgName name act - while executing action act, have getProgName return name. twithLib withLib :: PackageDescription -> a -> (Library -> IO a) -> IO au>PackageDescriptionaLibraryIOaIOasIf the package description has a library section, call the given function with the library build info as argument. f withinRange withinRange :: Version ->  VersionRange -> BoolrRVersion VersionRangeBool/Does this version fall within the given range? LwithForeignPtrwithForeignPtr ::  ForeignPtr a -> (Ptr a -> IO b) -> IO bK 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. withFile withFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO rd3FilePathIOModeHandleIOrIOrwithFile 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. twithExewithExe :: PackageDescription -> (Executable -> IO a) -> IO ()PackageDescription ExecutableIOaIO()SPerform the action on each buildable Executable in the package description. withBinaryFile withBinaryFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO rFilePathIOModeHandleIOrIOrwithBinaryFile 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. TwithArgswithArgs :: [String] -> IO a -> IO a[]StringIOaIOaswithArgs args act - while executing action act, have getArgs return args. wWindowsWindows :: OSVQOSwhenwhen ::  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. o warnUnrec warnUnrec :: UnrecFieldParser a UnrecFieldParseraA default unrecognized field parser which simply returns Nothing, i.e. ignores all unrecognized fields, so warnings will be generated. owarningwarning :: String -> ParseResult ()String ParseResult()waitForProcesswaitForProcess ::  ProcessHandle ->  IO ExitCode} ProcessHandleIOExitCodeWaits for the specified process to terminate, and returns its exit code. GHC Note: in order to call waitForProcess without blocking all the other threads in the system, you must compile the program with -threaded. viewrviewr :: Seq a -> ViewR aSeqaViewRa2O(1). Analyse the right end of a sequence. ViewRdata ViewR aJ%View of the right end of a sequence. viewlviewl :: Seq a -> ViewL aSeqaViewLa1O(1). Analyse the left end of a sequence. ViewLdata ViewL a0$View of the left end of a sequence. verticesvertices :: Graph -> [Vertex]Graph[]VertexAll vertices of a graph. Vertextype Vertex = Int %Abstract representation of vertices. I 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. f VersionRangedata  VersionRangeI 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. IVersionVersion :: [Int] -> [String] -> Version[]Int[]StringVersionIVersiondata VersionA 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. x Verbositydata  Verbosityxverboseverbose ::  VerbosityOC Verbosityvectorvector :: Arbitrary a => Int -> Gen [a] ArbitraryaIntGen[]awVaxVax :: ArchArchvariantvariant :: Int -> Gen a -> Gen aw[IntGenaGenatVarVar :: c ->  Condition cc Conditioncvalidvalid ::  Ord a => Set a -> Bool:OrdaSetaBool:O(n). Test if the internal set structure is valid. validvalid ::  Ord k => Map k a -> BoolOrdkMapkaBool:O(n). Test if the internal map structure is valid. o UTFWarning UTFWarning :: LineNo -> String -> PWarningLineNoStringPWarningl UserHooks UserHooks :: Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO () -> IO (Maybe PackageDescription) -> [PPSuffixHandler] ->  [Program] -> Args ->  ConfigFlags ->  IO HookedBuildInfo ->  F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags ->  IO LocalBuildInfo -> Args ->  ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO () -> Args ->  BuildFlags -> IO HookedBuildInfo -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  BuildFlags -> IO () -> Args ->  BuildFlags -> PackageDescription -> LocalBuildInfo -> IO () ->  Args -> ! MakefileFlags -> "IO HookedBuildInfo -> #PackageDescription -> $LocalBuildInfo -> % UserHooks -> & MakefileFlags -> 'IO () -> (Args -> ) MakefileFlags -> *PackageDescription -> +LocalBuildInfo -> ,IO () -> -Args -> . CleanFlags -> /IO HookedBuildInfo -> 0PackageDescription ArgsBoolPackageDescriptionLocalBuildInfoIO()IOMaybePackageDescription[]PPSuffixHandler[]ProgramArgs ConfigFlagsIOHookedBuildInfo(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfoArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()Args BuildFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()Args BuildFlagsPackageDescriptionLocalBuildInfoIO()Args MakefileFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()Args MakefileFlagsPackageDescriptionLocalBuildInfoIO()Args CleanFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()Args CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args CopyFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO()Args CopyFlagsPackageDescriptionLocalBuildInfoIO()Args InstallFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()Args InstallFlagsPackageDescriptionLocalBuildInfoIO()Args SDistFlagsIOHookedBuildInfoPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()Args SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoc2PackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args RegisterFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()Args RegisterFlagsPackageDescriptionLocalBuildInfoIO()Args HscolourFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()Args HscolourFlagsPackageDescriptionLocalBuildInfoIO()Args HaddockFlagsIOHookedBuildInfoPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()Args HaddockFlagsPackageDescriptionLocalBuildInfoIO() UserHooks -> 1Maybe LocalBuildInfo -> 2 UserHooks -> 3 CleanFlags -> 4IO () -> 5Args -> 6 CleanFlags -> 7PackageDescription -> 8Maybe LocalBuildInfo -> 9IO () -> :Args -> ; CopyFlags -> <IO HookedBuildInfo -> =PackageDescription -> >LocalBuildInfo -> ? UserHooks -> @ CopyFlags -> AIO () -> BArgs -> C CopyFlags -> DPackageDescription -> ELocalBuildInfo -> FIO () -> GArgs -> H InstallFlags -> IIO HookedBuildInfo -> JPackageDescription -> KLocalBuildInfo -> L UserHooks -> M InstallFlags -> NIO () -> OArgs -> P InstallFlags -> QPackageDescription -> RLocalBuildInfo -> SIO () -> TArgs -> U SDistFlags -> VIO HookedBuildInfo -> WPackageDescription -> XMaybe LocalBuildInfo -> Y UserHooks -> Z SDistFlags -> [IO () -> \Args -> ] SDistFlags -> ^PackageDescription -> _Maybe LocalBuildInfo -> `IO () -> aArgs -> b RegisterFlags -> cIO HookedBuildInfo -> dPackageDescription -> eLocalBuildInfo -> f UserHooks -> g RegisterFlags -> hIO () -> iArgs -> j RegisterFlags -> kPackageDescription -> lLocalBuildInfo -> mIO () -> nArgs -> o RegisterFlags -> pIO HookedBuildInfo -> qPackageDescription -> rLocalBuildInfo -> s UserHooks -> t RegisterFlags -> uIO () -> vArgs -> w RegisterFlags -> xPackageDescription -> yLocalBuildInfo -> zIO () -> {Args -> | HscolourFlags -> }IO HookedBuildInfo -> ~PackageDescription -> LocalBuildInfo ->  UserHooks ->  HscolourFlags -> IO () -> Args ->  HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO () -> Args ->  HaddockFlags -> IO HookedBuildInfo -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HaddockFlags -> IO () -> Args ->  HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()< ->  UserHooksl UserHooksdata  UserHooks@Hooks allow authors to add specific functionality before and after a command is run, and also to specify additional preprocessors.
  • WARNING: The hooks interface is under rather constant flux as we try to understand users needs. Setup files that depend on this interface may break in future releases.
% userErrors userErrors ::  Exception ->  Maybe String9 ExceptionMaybeStringuseAsCStringLenuseAsCStringLen ::  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.  useAsCString useAsCString ::  ByteString -> (CString -> IO a) -> IO aF 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). :UppercaseLetterUppercaseLetter :: GeneralCategorybPGeneralCategoryLu: Letter, Uppercase  updateWithKey  updateWithKey ::  Ord k => (k -> a -> Maybe a) -> k -> Map k a -> Map k aDOrdkkaMaybeakMapkaMapka%O(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.  updateWithKey  updateWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> IntMap a,KeyaMaybeaKeyIntMapaIntMapa!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. tupdatePackageDescriptionupdatePackageDescription :: HookedBuildInfo -> PackageDescription -> PackageDescription)HookedBuildInfoPackageDescriptionPackageDescriptionupdateMinWithKeyupdateMinWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k akaMaybeaMapkaMapka6O(log n). Update the value at the minimal key. updateMinWithKeyupdateMinWithKey :: (Key -> a -> a) -> IntMap a -> IntMap aKeyaaIntMapaIntMapa6O(log n). Update the value at the minimal key.  updateMin updateMin :: (a -> Maybe a) -> Map k a -> Map k aUaMaybeaMapkaMapka6O(log n). Update the value at the minimal key.  updateMin updateMin :: (a -> a) -> IntMap a -> IntMap aE aaIntMapaIntMapa6O(log n). Update the value at the minimal key. updateMaxWithKeyupdateMaxWithKey :: (k -> a -> Maybe a) -> Map k a -> Map k a*kaMaybeaMapkaMapka6O(log n). Update the value at the maximal key. updateMaxWithKeyupdateMaxWithKey :: (Key -> a -> a) -> IntMap a -> IntMap aKeyaaIntMapaIntMapa6O(log n). Update the value at the maximal key.  updateMax updateMax :: (a -> Maybe a) -> Map k a -> Map k aaMaybeaMapkaMapka6O(log n). Update the value at the maximal key.  updateMax updateMax :: (a -> a) -> IntMap a -> IntMap araaIntMapaIntMapa6O(log n). Update the value at the maximal key. updateLookupWithKey updateLookupWithKey ::  Ord k => (k -> a -> Maybe a) -> k -> Map k a -> (Maybe a, Map k a)rOrdkkaMaybeakMapka(,)MaybeaMapka$O(log n). Lookup and update. updateLookupWithKey updateLookupWithKey :: (Key -> a -> Maybe a) -> Key -> IntMap a -> (Maybe a, IntMap a)KeyaMaybeaKeyIntMapa(,)MaybeaIntMapa'O(min(n,W)). Lookup and update. updateAt updateAt :: (k -> a -> Maybe a) -> Int -> Map k a -> Map k axkaMaybeaIntMapkaMapkagO(log n). Update the element at index. Calls error when an invalid index is used. update update :: Int -> a -> Seq a -> Seq axIntaSeqaSeqaIO(log(min(i,n-i))). Replace the element at the specified position update update ::  Ord k => (a -> Maybe a) -> k -> Map k a -> Map k a [ OrdkaMaybeakMapkaMapkaO(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. update update :: (a -> Maybe a) -> Key -> IntMap a -> IntMap a[ ( aMaybeaKeyIntMapaIntMapaO(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. @update update :: HashTable key val -> key -> val -> IO Bool   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. Aunzip7unzip7 :: [(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. Aunzip6unzip6 :: [(a, b, c, d, e, f)] -> ([a], [b], [c], [d], [e], [f])[](,,,,,)abcdef(,,,,,)[]a[]b[]c[]d[]e[]fhThe unzip6 function takes a list of six-tuples and returns six lists, analogous to unzip. Aunzip5unzip5 :: [(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. Aunzip4unzip4 :: [(a, b, c, d)] -> ([a], [b], [c], [d])P[](,,,)abcd(,,,)[]a[]b[]c[]diThe unzip4 function takes a list of quadruples and returns four lists, analogous to unzip. Aunzip3unzip3 ::  [(a, b, c)] -> ([a], [b], [c])M[](,,)abc(,,)[]a[]b[]cgThe unzip3 function takes a list of triples and returns three lists, analogous to unzip. Aunzipunzip :: [(a, b)] ->  ([a], [b])0[](,)ab(,)[]a[]biunzip transforms a list of pairs into a list of first components and a list of second components. unzipunzip :: [(Word8, Word8)] -> (ByteString, ByteString)9[](,)Word8Word8(,) ByteString ByteStringO(n) unzip transforms a list of pairs of bytes into a pair of ByteStrings. Note that this performs two pack operations. ( unwrapMonad unwrapMonad :: WrappedMonad m a -> m aA  WrappedMonadmama( unwrapArrow unwrapArrow :: WrappedArrow a b c -> a b c WrappedArrowabcabcAunwordsunwords :: [String] -> String,[]StringString_unwords is an inverse operation to words. It joins words with separating spaces. LunsafeForeignPtrToPtrunsafeForeignPtrToPtr ::  ForeignPtr a -> Ptr a 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 -> bZQabl unregHook unregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO ()g UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration. oUnrecFieldParsertype UnrecFieldParser a# = (String, String) -> a -> Maybe a(The type of a function which, given a name-value pair of an unrecognized field, and the current structure being built, decides whether to incorporate the unrecognized field (by returning Just x, where x is a possibly modified version of the structure being built), or not (by returning Nothing). unpackunpack ::  ByteString -> [Word8] ByteString[]Word89O(n) Converts a ByteString to a '[Word8]'. Aunlinesunlines :: [String] -> StringF - []StringStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each. iUnliftedFFITypesUnliftedFFITypes ::  Extension! ! Extensionunlessunless ::  Monad m => Bool -> m () -> m ()!w!MonadmBoolm()m()The reverse of when. rUnknownLicenseUnknownLicense :: String -> License(""StringLicenseTNot a recognised license. Allows us to deal with future extensions more gracefully. pUnknownLicenseUnknownLicense :: String -> License""StringLicenseTNot a recognised license. Allows us to deal with future extensions more gracefully. iUnknownExtensionUnknownExtension :: String ->  Extension##String ExtensiontUnknownBuildTypeUnknownBuildType :: String ->  BuildType*$$String BuildTypea package that uses an unknown build type cannot actually be built. Doing it this way rather than just giving a parse error means we get better error messages and allows you to inspect the rest of the package description. UnitUnit :: Unit@%9%UnitUnitdata Unitl%'Uniquedata Unique%An abstract unique object. Objects of type Unique may be compared for equality and ordering and hashed into Int.  unionWithKey  unionWithKey ::  Ord k => (k -> a -> a -> a) -> Map k a -> Map k a -> Map k a&&OrdkkaaaMapkaMapkaMapkaO(n+m). Union with a combining function. The implementation uses the efficient hedge-union algorithm. Hedge-union is more efficient on (bigset union smallset).  unionWithKey  unionWithKey :: (Key -> a -> a -> a) -> IntMap a -> IntMap a -> IntMap aj(0(KeyaaaIntMapaIntMapaIntMapa4O(n+m). The union with a combining function.  unionWith  unionWith ::  Ord k =>  (a -> a -> a) -> Map k a -> Map k a -> Map k ac)$)OrdkaaaMapkaMapkaMapkatO(n+m). Union with a combining function. The implementation uses the efficient hedge-union algorithm.  unionWith  unionWith ::  (a -> a -> a) -> IntMap a -> IntMap a -> IntMap a*W*aaaIntMapaIntMapaIntMapa4O(n+m). The union with a combining function. fUnionVersionRangesUnionVersionRanges ::  VersionRange ->  VersionRange ->  VersionRanger+E+ VersionRange VersionRange VersionRange unionsWith unionsWith ::  Ord k =>  (a -> a -> a) ->  [Map k a] -> Map k a!,+Ordkaaa[]MapkaMapkaThe union of a list of maps, with a combining operation: (unionsWith f == Prelude.foldl (unionWith f) empty).  unionsWith unionsWith ::  (a -> a -> a) ->  [IntMap a] -> IntMap aK--aaa[]IntMapaIntMapa8The union of a list of maps, with a combining operation unionsunions ::  Ord a => [Set a] -> Set a--Orda[]SetaSetaaThe union of a list of sets: (unions == foldl union empty). unionsunions ::  Ord k =>  [Map k a] -> Map k a..Ordk[]MapkaMapkabThe union of a list of maps: (unions == Prelude.foldl union empty). unionsunions :: [IntSet] -> IntSet//[]IntSetIntSetThe union of a list of sets. unionsunions ::  [IntMap a] -> IntMap a500[]IntMapaIntMapa6O(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) The union of a list of maps. AunionBy unionBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]21aaBool[]a[]a[]aKThe unionBy function is the non-overloaded version of union. unionunion ::  Ord a => Set a -> Set a -> Set a22OrdaSetaSetaSetaO(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). unionunion ::  Ord k => Map k a -> Map k a -> Map k a^4*4OrdkMapkaMapkaMapkawO(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) Aunionunion :: Eq a => [a] -> [a] -> [a]T6-6Eqa[]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. unionunion :: IntSet -> IntSet -> IntSet>8#8IntSetIntSetIntSet&O(n+m). The union of two sets. unionunion :: IntMap a -> IntMap a -> IntMap a88IntMapaIntMapaIntMapaO(n+m). The (left-biased) union of two maps. It prefers the first map when duplicate keys are encountered, i.e. (union == unionWith const). i UnicodeSyntax UnicodeSyntax ::  Extension99 ExtensionunfoldTreeM_BFunfoldTreeM_BF ::  Monad m => (b -> m (a, [b])) -> b ->  m (Tree a):r:Monadmbm(,)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.  unfoldTreeM unfoldTreeM ::  Monad m => (b -> m (a, [b])) -> b ->  m (Tree a)-<;Monadmbm(,)a[]bbmTreea+Monadic tree builder, in depth-first order  unfoldTree unfoldTree :: (b -> (a, [b])) -> b -> Tree a<<b(,)a[]bbTreeaBuild a tree from a seed value unfoldrN unfoldrN :: Int -> (a -> Maybe (Word8, a)) -> a -> (ByteString, Maybe a)==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:
unfoldrN n f s == take n (unfoldr f s)
Aunfoldrunfoldr :: (b -> Maybe (a, b)) -> b -> [a]??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]
unfoldrunfoldr :: (a -> Maybe (Word8, a)) -> a ->  ByteStringCCaMaybe(,)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]
unfoldForestM_BFunfoldForestM_BF ::  Monad m => (b -> m (a, [b])) -> [b] ->  m (Forest a)F_FMonadmbm(,)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.  unfoldForestM unfoldForestM ::  Monad m => (b -> m (a, [b])) -> [b] ->  m (Forest a)4HGMonadmbm(,)a[]b[]bmForesta-Monadic forest builder, in depth-first order  unfoldForest unfoldForest :: (b -> (a, [b])) -> [b] -> Forest aIHb(,)a[]b[]bForesta*Build a forest from a list of seed values % Underflow Underflow :: ArithExceptionIpIArithException%UndefinedElementUndefinedElement :: String -> ArrayExceptionJIStringArrayExceptionVAn attempt was made to evaluate an element of an array that had not been initialized. iUndecidableInstancesUndecidableInstances ::  ExtensionJJ Extensionuncurryuncurry ::  (a -> b -> c) -> (a, b) -> c6KKabc(,)abcCuncurry converts a curried function to a function on pairs. unconsuncons ::  ByteString -> Maybe (Word8, ByteString) LK ByteStringMaybe(,)Word8 ByteStringYO(1) Extract the head and tail of a ByteString, returning Nothing if it is empty. i UnboxedTuples UnboxedTuples ::  ExtensionLL Extension%unblockunblock :: IO a -> IO aMLIOaIOaTo 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. iTypeSynonymInstancesTypeSynonymInstances ::  ExtensionSNGN Extension  typeRepTyCon typeRepTyCon :: TypeRep -> TyConNNTypeRepTyCon6Observe the type constructor of a type representation   typeRepKey typeRepKey :: TypeRep -> IO IntZOCOTypeRepIOIntReturns 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 TypeRepRjA concrete representation of a (monomorphic) type. TypeRep supports reasonably efficient equality. i TypeOperators TypeOperators ::  ExtensionRR Extension  typeOfDefault typeOfDefault :: (Typeable1 t, Typeable a) => t a -> TypeRepgS4S Typeable1tTypeableataTypeRepLFor defining a Typeable instance from any Typeable1 instance.  typeOf7typeOf7 :: Typeable7 t => t a b c d e f g -> TypeRepMTT Typeable7ttabcdefgTypeRep typeOf6DefaulttypeOf6Default :: (Typeable7 t, Typeable a) => t a b c d e f g -> TypeRepUT Typeable7tTypeableatabcdefgTypeRepMFor defining a Typeable6 instance from any Typeable7 instance.  typeOf6typeOf6 :: Typeable6 t =>  t a b c d e f -> TypeRepUU Typeable6ttabcdefTypeRep typeOf5DefaulttypeOf5Default :: (Typeable6 t, Typeable a) =>  t a b c d e f -> TypeRepVrV Typeable6tTypeableatabcdefTypeRepMFor defining a Typeable5 instance from any Typeable6 instance.  typeOf5typeOf5 :: Typeable5 t =>  t a b c d e -> TypeRepWaW Typeable5ttabcdeTypeRep typeOf4DefaulttypeOf4Default :: (Typeable5 t, Typeable a) =>  t a b c d e -> TypeRepLX X Typeable5tTypeableatabcdeTypeRepMFor defining a Typeable4 instance from any Typeable5 instance.  typeOf4typeOf4 :: Typeable4 t =>  t a b c d -> TypeRep$YX Typeable4ttabcdTypeRep typeOf3DefaulttypeOf3Default :: (Typeable4 t, Typeable a) =>  t a b c d -> TypeRepYY Typeable4tTypeableatabcdTypeRepMFor defining a Typeable3 instance from any Typeable4 instance.  typeOf3typeOf3 :: Typeable3 t => t a b c -> TypeRepZZ Typeable3ttabcTypeRep typeOf2DefaulttypeOf2Default :: (Typeable3 t, Typeable a) => t a b c -> TypeRep^[%[ Typeable3tTypeableatabcTypeRepMFor defining a Typeable2 instance from any Typeable3 instance.  typeOf2typeOf2 :: Typeable2 t => t a b -> TypeRep,\\ Typeable2ttabTypeRep typeOf1DefaulttypeOf1Default :: (Typeable2 t, Typeable a) => t a b -> TypeRep\\ Typeable2tTypeableatabTypeRepMFor defining a Typeable1 instance from any Typeable2 instance.  typeOf1typeOf1 :: Typeable1 t => t a -> TypeRep]}] Typeable1ttaTypeRep typeOftypeOf :: Typeable a => a -> TypeRep^]TypeableaaTypeRepi TypeFamilies TypeFamilies ::  Extensiond^X^ Extension  Typeable7class  Typeable7 t^$Variant for 7-ary type constructors   Typeable6class  Typeable6 t^$Variant for 6-ary type constructors   Typeable5class  Typeable5 tW_$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 tn`%Variant for binary type constructors   Typeable1class  Typeable1 t`$Variant for unary type constructors  Typeableclass Typeable a'aWThe class Typeable allows a concrete representation of a type to be calculated.   tyConString tyConString :: TyCon -> StringaaTyConString1Observe string encoding of a type representation  TyCondata TyConAbjAn abstract representation of a type constructor. TyCon objects can be built using mkTyCon. twotwo ::  Monad m => m a -> m (a, a)!cbMonadmmam(,)aa%tryJusttryJust :: (Exception -> Maybe b) -> IO a -> IO (Either b a)cc 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. %trytry :: IO a -> IO (Either Exception a)edIOaIOEither 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). 9TrueTrue :: BoolhhBooltrivialtrivial :: Testable a => Bool -> a -> Propertyh}hTestableaBoolaPropertyTreedata Tree ah2Multi-way trees, also known as rose trees. ? traverse_ traverse_ :: (Foldable t, Applicative f) =>  (a -> f b) -> t a -> f ()iiFoldablet Applicativefafbtaf()qMap each element of a structure to an action, evaluate these actions from left to right, and ignore the results. Htraversetraverse :: "(Traversable t, Applicative f) =>  (a -> f b) -> t a -> f (t b)kj Traversablet ApplicativefafbtaftbH Traversableclass (Functor t, Foldable t) =>  Traversable tXkFunctors 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).
 transposeG transposeG :: Graph -> GraphooGraphGraph+The graph obtained by reversing all edges. A transpose transpose :: [[a]] -> [[a]]=pp[][]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]]
 transpose transpose ::  [ByteString] ->  [ByteString]\q5q[] ByteString[] ByteStringaThe transpose function transposes the rows and columns of its ByteString argument. Jtracetrace :: String -> a -> ar rStringaaWhen 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. :toUppertoUpper :: Char -> CharttCharCharlConvert a letter to the corresponding upper-case letter, if any. Any other character is returned unchanged. LtouchForeignPtrtouchForeignPtr ::  ForeignPtr a -> IO ()tt 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 -> CharFz7zCharCharConvert 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. topSorttopSort :: Graph -> [Vertex]v{^{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 -> Char|z|CharCharlConvert a letter to the corresponding lower-case letter, if any. Any other character is returned unchanged. toListtoList :: Set a -> [a]P}:}Seta[]a4O(n). Convert the set to a list of elements. toListtoList :: Map k a -> [(k, a)]}}Mapka[](,)ka3O(n). Convert to a list of key/value pairs. toListtoList :: IntSet -> [Int]~n~IntSet[]Int4O(n). Convert the set to a list of elements. toListtoList :: IntMap a ->  [(Key, a)],IntMapa[](,)Keya;O(n). Convert the map to a list of key/value pairs. @toListtoList :: HashTable key val -> IO [(key, val)] HashTablekeyvalIO[](,)keyval4Converts a hash table to a list of key/value pairs. ?toListtoList :: Foldable t => t a -> [a]Foldabletta[]a!List of elements of a structure. toDyntoDyn :: Typeable a => a -> Dynamic3TypeableaaDynamicoConverts 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)
 toAscList toAscList :: Set a -> [a]Seta[]a?O(n). Convert the set to an ascending list of elements.  toAscList toAscList :: Map k a -> [(k, a)]Mapka[](,)ka+O(n). Convert to an ascending list.  toAscList toAscList :: IntSet -> [Int]F0IntSet[]Int?O(n). Convert the set to an ascending list of elements.  toAscList toAscList :: IntMap a ->  [(Key, a)]ڄIntMapa[](,)KeyaaO(n). Convert the map to a list of key/value pairs where the keys are in ascending order. :TitlecaseLetterTitlecaseLetter :: GeneralCategoryąGeneralCategoryLt: Letter, Titlecase &timeouttimeout :: Int -> IO a ->  IO (Maybe a)[8IntIOaIOMaybea^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. %throwTothrowTo :: ThreadId ->  Exception -> IO ()<ThreadId ExceptionIO()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 :: ThreadId ->  Exception -> IO ()ԔThreadId ExceptionIO()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. %throwIOthrowIO ::  Exception -> IO ay ExceptionIOaA 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. % throwDynTo throwDynTo :: Typeable exception => ThreadId ->  exception -> IO () ӞTypeable exceptionThreadId exceptionIO()wA variant of throwDyn that throws the dynamic exception to an arbitrary thread (GHC only: c.f. throwTo). %throwDynthrowDyn :: Typeable exception =>  exception -> b Typeable exception exceptionbNRaise any value as an exception, provided it is in the Typeable class. %throwthrow ::  Exception -> a Exceptiona}Throw 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(,,)aaathreadWaitWritethreadWaitWrite :: Fd -> IO ()FdIO()\Block the current thread until data can be written to the given file descriptor (GHC only). threadWaitReadthreadWaitRead :: Fd -> IO ()֢ŢFdIO()bBlock the current thread until data is available to read on the given file descriptor (GHC only). % 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 ()IntIO()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. f ThisVersion ThisVersion :: Version ->  VersionRangehNVersion VersionRangeqthisPackageVersionthisPackageVersion :: PackageIdentifier ->  DependencyةPackageIdentifier DependencygTextclass Text a)t testedWith testedWith :: PackageDescription ->  [(CompilerFlavor, VersionRange)]PackageDescription[](,)CompilerFlavor VersionRangetestBittestBit ::  Bits a => a -> Int -> Bool[?BitsaaIntBoolTestableclass Testable aterminateProcessterminateProcess ::  ProcessHandle -> IO () ProcessHandleIO()Attempts to terminate the specified process. This function should not be used under normal circumstances - no guarantees are given regarding how cleanly the process is terminated. To check whether the process has indeed terminated, use getProcessExitCode. On Unix systems, terminateProcess sends the process the SIGKILL signal. On Windows systems, the Win32 TerminateProcess function is called, passing an exit code of 1. iTemplateHaskellTemplateHaskell ::  Extension' ExtensionA 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] == []
 takeWhile takeWhile :: (Word8 -> Bool) ->  ByteString ->  ByteStringrHWord8Bool ByteString ByteStringtakeWhile, applied to a predicate p and a ByteString xs, returns the longest prefix (possibly empty) of xs of elements that satisfy p. taketake :: Int -> Seq a -> Seq avIntSeqaSeqaHO(log(min(i,n-i))). The first i elements of a sequence. Ataketake :: Int -> [a] -> [a]B(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. taketake :: Int ->  ByteString ->  ByteStringsSInt 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. Atailstails :: [a] -> [[a]]r[]a[][]aThe tails function returns all final segments of the argument, longest first. For example,
tails "abc" == ["abc", "bc", "c",""]
tailstails ::  ByteString ->  [ByteString]s ByteString[] ByteStringUO(n) Return all final segments of the given ByteString, longest first. Atailtail :: [a] -> [a]=([]a[]aHExtract the elements after the head of a list, which must be non-empty. tailtail ::  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. o TabsError TabsError :: LineNo -> PErrorָLineNoPErrorn TabsError TabsError :: LineNo -> PErrorK8LineNoPErrorTabletype Table a = Array Vertex a/Table indexed by a contiguous set of vertices. systemsystem :: String ->  IO ExitCode& StringIOExitCodeComputation system cmd returns the exit code produced when the operating system processes the command cmd. This computation may fail with
  • PermissionDenied: The process has insufficient privileges to perform the operation.
  • ResourceExhausted: Insufficient resources are available to perform the operation.
  • UnsupportedOperation: The implementation does not support system calls.
On Windows, system is implemented using Windows's native system call, which ignores the SHELL environment variable, and always passes the command to the Windows command interpreter (CMD.EXE or COMMAND.COM), hence Unixy shell tricks will not work. o syntaxError syntaxError :: LineNo -> String ->  ParseResult ayLineNoString ParseResultatsynopsissynopsis :: PackageDescription -> StringPackageDescriptionString#A one-line summary of this package !SymbolSymbol :: String -> LexemeStringLexeme4Haskell symbol, e.g. >>, :% : Surrogate Surrogate :: GeneralCategory!GeneralCategoryCs: Other, Surrogate Asumsum ::  Num a => [a] -> azNuma[]aaFThe sum function computes the sum of a finite list of numbers. ?sumsum :: (Foldable t, Num a) => t a -> aR+FoldabletNumataaHThe sum function computes the sum of the numbers of a structure. +SumSum :: a -> Sum aaSuma+Sumnewtype Sum aMonoid under addition. | succeedReadE succeedReadE ::  (String -> a) -> ReadE aStringaReadEa subForest subForest :: Tree a -> Forest aTreeaForestazero or more child trees stronglyConnCompRstronglyConnCompR ::  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. stronglyConnCompstronglyConnComp ::  Ord key => [(node, key, [key])] ->  [SCC node]'Ordkey[](,,)nodekey[]key[]SCCnodeMThe strongly connected components of a directed graph, topologically sorted. A stripPrefix stripPrefix :: Eq a => [a] -> [a] ->  Maybe [a]Eqa[]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
!StringString :: String -> LexemeStringLexeme)String literal, with escapes interpreted :Stringtype String = [Char]HgA String is a list of characters. String constants in Haskell are values of type String. ESTRefdata STRef s a{a value of type STRef s a is a mutable variable in state thread s, containing a value of type a 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. stdoutstdout :: HandlejaHandleKA handle managing output to the Haskell program's standard output channel. stdinstdin :: HandleHandleKA handle managing input from the Haskell program's standard input channel. StdGendata StdGennnThe 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.
stderrstderr :: HandleHandleJA handle managing output to the Haskell program's standard error channel. iStandaloneDerivingStandaloneDeriving ::  Extension Extensionstampstamp :: Result -> [String]& Result[]String% StackOverflow StackOverflow :: AsyncExceptionsAsyncExceptionThe 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. 2 StablePtrdata  StablePtr aA 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. t stability stability :: PackageDescription -> StringPackageDescriptionStringn stability stability :: InstalledPackageInfo_ m -> StringvInstalledPackageInfo_mString splitWith splitWith :: (Word8 -> Bool) ->  ByteString ->  [ByteString]AWord8Bool 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  splitMember splitMember ::  Ord a => a -> Set a -> (Set a, Bool, Set a)OrdaaSeta(,,)SetaBoolSetasO(log n). Performs a split but also returns whether the pivot element was found in the original set.  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.  splitLookup splitLookup ::  Ord k => k -> Map k a -> (Map k a, Maybe a, Map k a)fOrdkkMapka(,,)MapkaMaybeaMapkaO(log n). The expression (splitLookup k map) splits a map just like split but also returns lookup k map.  splitLookup splitLookup :: Key -> IntMap a -> (IntMap a, Maybe a, IntMap a)xKeyIntMapa(,,)IntMapaMaybeaIntMapaoO(log n). Performs a split but also returns whether the pivot key was found in the original map. splitAtsplitAt :: Int -> Seq a -> (Seq a, Seq a)IntSeqa(,)SeqaSeqaAO(log(min(i,n-i))). Split a sequence at a given position. AsplitAtsplitAt :: Int -> [a] ->  ([a], [a])~TInt[]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. splitAtsplitAt :: 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)oL RandomGengg(,)ggsplitsplit ::  Ord a => a -> Set a -> (Set a, Set a)OrdaaSeta(,)SetaSetaO(log n). The expression (split x set) is a pair (set1,set2) where all elements in set1 are lower than x and all elements in set2 larger than x. x is not found in neither set1 nor set2. splitsplit ::  Ord k => k -> Map k a -> (Map k a, Map k a)OrdkkMapka(,)MapkaMapka O(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. splitsplit :: Int -> IntSet -> (IntSet, IntSet)pIIntIntSet(,)IntSetIntSet$O(min(n,W)). The expression (split x set) is a pair (set1,set2) where all elements in set1 are lower than x and all elements in set2 larger than x.
split 3 (fromList [1..5]) == (fromList [1,2], fromList [3,4])
splitsplit :: Key -> IntMap a -> (IntMap a, IntMap a)0KeyIntMapa(,)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. splitsplit :: Word8 ->  ByteString ->  [ByteString]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. wSparcSparc :: ArchArchspanEndspanEnd :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)yWord8Bool 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) 
Aspanspan ::  (a -> Bool) -> [a] ->  ([a], [a])V&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) spanspan :: (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 :: GeneralCategoryGeneralCategoryMc: Mark, Spacing Combining :SpaceSpace :: GeneralCategory[IGeneralCategoryZs: Separator, Space  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.  SourceNametype  SourceName = String sourceLine sourceLine ::  SourcePos -> Line SourcePosLine1Extracts the line number from a source position.  sourceColumn sourceColumn ::  SourcePos -> Columnw SourcePosColumn3Extracts the column number from a source position. AsortBysortBy :: (a -> a -> Ordering) -> [a] -> [a]J#aaOrdering[]a[]aIThe sortBy function is the non-overloaded version of sort. Asortsort ::  Ord a => [a] -> [a]Orda[]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. sortsort ::  ByteString ->  ByteString ByteString ByteString@O(n) Sort a ByteString efficiently, using counting sort. (somesome :: Alternative f => f a -> f [a] Alternativeffaf[]a One or more. wSolarisSolaris :: OS OSsnocsnoc ::  ByteString -> Word8 ->  ByteStringp ByteStringWord8 ByteString<O(n) Append a byte to the end of a ByteString sndsnd :: (a, b) -> b (,)abb(Extract the second component of a pair. sizeOfsizeOf :: Storable a => a -> IntStorableaaIntsizedsized :: (Int -> Gen a) -> Gen aIntGenaGenasizesize :: Set a -> Into]SetaInt0O(1). The number of elements in the set. sizesize :: Map k a -> IntMapkaInt0O(1). The number of elements in the map. sizesize :: IntSet -> IntyiIntSetInt%O(n). Cardinality of the set. sizesize :: IntMap a -> IntIntMapaInt,O(n). Number of elements in the map.  singleton singleton :: a -> Set a|laSeta%O(1). Create a singleton set.  singleton singleton :: a -> Seq aaSeqa#O(1). A singleton sequence.  singleton singleton :: k -> a -> Map k aukaMapka*O(1). A map with a single element.  singleton singleton :: Int -> IntSetIntIntSet#O(1). A set of one element.  singleton singleton :: Key -> a -> IntMap aKeyaIntMapa#O(1). A map of one element.  singleton singleton :: Word8 ->  ByteString2Word8 ByteString<O(1) Convert a Word8 into a ByteString lsimpleUserHookssimpleUserHooks ::  UserHooks UserHooksLHooks that correspond to a plain instantiation of the "simple" build system g simpleParse simpleParse ::  Text a => String -> Maybe apTextaStringMaybeao simpleField simpleField :: String ->  (a -> Doc) ->  ReadP a a -> (b -> a) ->  (a -> b -> b) ->  FieldDescr bCStringaDocReadPaabaabb FieldDescrbtSimpleSimple ::  BuildType BuildType/calls Distribution.Simple.defaultMain xsilentsilent ::  VerbosityF :  Verbosityf showVersion showVersion :: Version -> String  VersionStringI showVersion showVersion :: Version -> String  VersionStringProvides 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.  showTreeWith  showTreeWith ::  Show a => Bool -> Bool -> Set a -> String q ShowaBoolBoolSetaStringgO(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
 showTreeWith  showTreeWith :: (k -> a -> String) -> Bool -> Bool -> Map k a -> StringkaStringBoolBoolMapkaString.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,())
 showTreeWith  showTreeWith :: Bool -> Bool -> IntSet -> StringoBoolBoolIntSetStringO(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.  showTreeWith  showTreeWith ::  Show a => Bool -> Bool -> IntMap a -> StringS$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. showTreeshowTree ::  Show a => Set a -> StringShowaSetaStringgO(n). Show the tree that implements the set. The tree is shown in a compressed, hanging format. showTreeshowTree :: (Show k, Show a) => Map k a -> StringShowkShowaMapkaStringgO(n). Show the tree that implements the map. The tree is shown in a compressed, hanging format. showTreeshowTree :: IntSet -> StringIntSetStringgO(n). Show the tree that implements the set. The tree is shown in a compressed, hanging format. showTreeshowTree ::  Show a => IntMap a -> String\ShowaIntMapaStringgO(n). Show the tree that implements the map. The tree is shown in a compressed, hanging format. o showToken showToken :: String -> DocB2StringDocoshowTestedWithshowTestedWith :: (CompilerFlavor, VersionRange) -> Doc(,)CompilerFlavor VersionRangeDoc  showsTypeRep showsTypeRep :: TypeRep -> ShowSE2TypeRepShowSQ showString showString :: String -> ShowSStringShowSjutility function converting a String to a show function that simply prepends the string unchanged. Q showsPrec showsPrec ::  Show a => Int -> a -> ShowSsShowaIntaShowSQshowsshows ::  Show a => a -> ShowSShowaaShowS7equivalent to showsPrec with a precedence of 0. QShowStype ShowS = String -> StringmThe shows functions return a function that prepends the output String to an existing String. This allows constant-time concatenation of results using function composition. o showPWarning showPWarning :: FilePath -> PWarning -> StringFilePathPWarningStringQ showParen showParen :: Bool -> ShowS -> ShowS.BoolShowSShowSxutility function that surrounds the inner show function with parentheses when the Bool parameter is True. q showPackageId showPackageId :: PackageIdentifier -> String&PackageIdentifierStringtshowPackageDescriptionshowPackageDescription :: PackageDescription -> StringPackageDescriptionString: showLitChar showLitChar :: Char -> ShowS  CharShowSConvert a character to a string using only printable characters, using Haskell source-language escape conventions. For example:
showLitChar '\n' s  =  "\\n" ++ s
Q showListWith showListWith ::  (a -> ShowS) -> [a] -> ShowSR!3!aShowS[]aShowSWShow a list (using square brackets and commas), given a function for showing elements. QshowListshowList ::  Show a => [a] -> ShowS"!Showa[]aShowSnshowInstalledPackageInfoFieldshowInstalledPackageInfoField :: String -> &Maybe (InstalledPackageInfo -> String)""StringMaybeInstalledPackageInfoStringnshowInstalledPackageInfoshowInstalledPackageInfo :: InstalledPackageInfo -> String#`#InstalledPackageInfoStringtshowHookedBuildInfoshowHookedBuildInfo :: HookedBuildInfo -> String $#HookedBuildInfoStringo showFreeText showFreeText :: String -> Dock$[$StringDocPretty-print free-format text, ensuring that it is vertically aligned, and with blank lines replaced by dots for correct re-parsing. x showForGHC showForGHC ::  Verbosity -> StringZ%D% VerbosityString> showFixed showFixed :: HasResolution a => Bool -> Fixed a -> String%% HasResolutionaBoolFixedaString0First arg is whether to chop off trailing zeros o showFilePath showFilePath :: FilePath -> Doc&&FilePathDocQshowCharshowChar :: Char -> ShowS&&CharShowSkutility function converting a Char to a show function that simply prepends the character unchanged. Qshowshow ::  Show a => a -> String''ShowaaStringQShowclass Show a'.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 -> a0q0BitsaaIntashiftLshiftL ::  Bits a => a -> Int -> a00BitsaaIntashiftshift ::  Bits a => a -> Int -> aj1Q1BitsaaIntawSHSH :: Arch11Archt setupMessage  setupMessage ::  Verbosity -> String -> PackageDescription -> IO ()Y2%2 VerbosityStringPackageDescriptionIO()%setUncaughtExceptionHandlersetUncaughtExceptionHandler :: (Exception -> IO ()) -> IO ()22 ExceptionIO()IO() setStdGen setStdGen :: StdGen -> IO ()`3K3StdGenIO())Sets the global random number generator.  setSourceName setSourceName ::  SourcePos ->  SourceName ->  SourcePos!43 SourcePos SourceName SourcePosSet the name of the source.  setSourceLine setSourceLine ::  SourcePos -> Line ->  SourcePos44 SourcePosLine SourcePos*Set the line number of a source position. setSourceColumnsetSourceColumn ::  SourcePos -> Column ->  SourcePos5f5 SourcePosColumn SourcePos,Set the column number of a source position. setPermissionssetPermissions :: FilePath ->  Permissions -> IO ()H6$6FilePath PermissionsIO()%The setPermissions operation sets the permissions for the file or directory. The operation may fail with: setCurrentDirectorysetCurrentDirectory :: FilePath -> IO ()77FilePathIO()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: setBitsetBit ::  Bits a => a -> Int -> a;;BitsaaIntaSetdata Set a<A set of values a. ? 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. H sequenceA sequenceA :: "(Traversable t, Applicative f) => t (f a) -> f (t a)== Traversablet Applicativeftfafta? sequence_ sequence_ :: (Foldable t, Monad m) => t (m a) -> m ()z>F>FoldabletMonadmtmam()ZEvaluate each monadic action in the structure from left to right, and ignore the results.  sequence_ sequence_ ::  Monad m => [m a] -> m ()Q?+?Monadm[]mam()QEvaluate each action in the sequence from left to right, and ignore the results. Hsequencesequence :: (Traversable t, Monad m) => t (m a) -> m (t a)H@ @ TraversabletMonadmtmamtasequencesequence ::  Monad m => [m a] -> m [a]@@Monadm[]mam[]aREvaluate each action in the sequence from left to right, and collect the results. Seqdata Seq aGA"General-purpose finite sequences. SeekModedata SeekModeASA mode that determines the effect of hSeek hdl mode i, as follows:  SeekFromEnd SeekFromEnd :: SeekMode>B3BSeekModeSthe position of hdl is set to offset i from the end of the file. oSection Section :: LineNo -> String -> String -> [Field] -> FieldACCLineNoStringString[]FieldFieldA section with a name and possible parameter. The syntactic structure is:

sectionname> <arg {
  field*
}
)secondsecond ::  Arrow a => a b c -> a (d, b) (d, c)bD)DArrowaabca(,)db(,)dc searchable searchable ::  Permissions -> BoolDD PermissionsBooll sDistHook sDistHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  SDistFlags -> IO ()EE UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks SDistFlagsIO()<Over-ride this hook to get different behavior during sdist. iScopedTypeVariablesScopedTypeVariables ::  Extension~FrF Extensionsccscc :: Graph ->  Forest VertexFFGraphForestVertex.The strongly connected components of a graph. SCCdata SCC vertexBGStrongly connected component. Ascanr1scanr1 ::  (a -> a -> a) -> [a] -> [a]GGaaa[]a[]aPscanr1 is a variant of scanr that has no starting value argument. scanr1scanr1 :: (Word8 -> Word8 -> Word8) ->  ByteString ->  ByteStringHHWord8Word8Word8 ByteString ByteStringPscanr1 is a variant of scanr that has no starting value argument. Ascanr scanr ::  (a -> b -> b) -> b -> [a] -> [b]IIabbb[]a[]buscanr is the right-to-left dual of scanl. Note that
head (scanr f z xs) == foldr f z xs.
scanr scanr :: (Word8 -> Word8 -> Word8) -> Word8 ->  ByteString ->  ByteStringJJWord8Word8Word8Word8 ByteString ByteString*scanr is the right-to-left dual of scanl. Ascanl1scanl1 ::  (a -> a -> a) -> [a] -> [a]KgKaaa[]a[]ascanl1 is a variant of scanl that has no starting value argument:
scanl1 f [x1, x2, ...] == [x1, x1 `f` x2, ...]
scanl1scanl1 :: (Word8 -> Word8 -> Word8) ->  ByteString ->  ByteStringLLWord8Word8Word8 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, ...]
Ascanl scanl ::  (a -> b -> a) -> a -> [b] -> [a]MMabaa[]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.
scanl scanl :: (Word8 -> Word8 -> Word8) -> Word8 ->  ByteString ->  ByteStringOfOWord8Word8Word8Word8 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.
wS390S390 :: ArchPPArchlrunTestsrunTests ::  UserHooks -> Args -> Bool -> PackageDescription -> LocalBuildInfo -> IO ()QQ UserHooksArgsBoolPackageDescriptionLocalBuildInfoIO()Used for ./setup test |runReadErunReadE :: ReadE a -> String -> Either ErrorMsg aR^RReadEaStringEitherErrorMsga runProcess runProcess :: FilePath -> [String] -> Maybe FilePath -> Maybe [(String, String)] ->  Maybe Handle ->  Maybe Handle ->  Maybe Handle -> IO ProcessHandleTSFilePath[]StringMaybeFilePathMaybe[](,)StringStringMaybeHandleMaybeHandleMaybeHandleIO ProcessHandle?Runs a raw command, optionally specifying Handles from which to take the stdin, stdout and stderr channels for the new process (otherwise these handles are inherited from the current process). Any Handles passed to runProcess are placed immediately in the closed state. orunP runP :: LineNo -> String ->  ReadP a a -> String ->  ParseResult aVULineNoStringReadPaaString ParseResulta) runKleisli runKleisli ::  Kleisli m a b -> a -> m bVVKleislimabambrunInUnboundThreadrunInUnboundThread :: IO a -> IO aWWIOaIOa=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. runInteractiveProcess runInteractiveProcess :: FilePath -> [String] -> Maybe FilePath -> Maybe [(String, String)] -> *IO (Handle, Handle, Handle, ProcessHandle)Z1ZFilePath[]StringMaybeFilePathMaybe[](,)StringStringIO(,,,)HandleHandleHandle ProcessHandleFRuns a raw command, and returns Handles that may be used to communicate with the process via its stdin, stdout and stderr respectively. For example, to start a process and feed a string to its stdin:
(inp,out,err,pid) <- runInteractiveProcess "..."
forkIO (hPutStr inp str)
runInteractiveCommandrunInteractiveCommand :: String -> *IO (Handle, Handle, Handle, ProcessHandle)\\StringIO(,,,)HandleHandleHandle ProcessHandleRuns a command using the shell, and returns Handles that may be used to communicate with the process via its stdin, stdout, and stderr respectively. runInBoundThreadrunInBoundThread :: IO a -> IO a]]IOaIOaRun 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. orunE runE :: LineNo -> String -> ReadE a -> String ->  ParseResult aT``LineNoStringReadEaString ParseResulta runCommand runCommand :: String -> IO ProcessHandle``StringIO ProcessHandle Runs a command using the shell. rtsSupportsBoundThreadsrtsSupportsBoundThreads :: BoolMaFaBoolTrue if bound threads are supported. If rtsSupportsBoundThreads is False, isCurrentThreadBound will always return False and both forkOS and runInBoundThread will fail. wRs6000Rs6000 :: Archdb]bArchrotateRrotateR ::  Bits a => a -> Int -> abbBitsaaIntarotateLrotateL ::  Bits a => a -> Int -> aJc1cBitsaaIntarotaterotate ::  Bits a => a -> Int -> accBitsaaInta rootLabel rootLabel :: Tree a -> addTreeaa label value )rightright :: ArrowChoice a => a b c -> a (Either d b) (Either d c)dd ArrowChoiceaabcaEitherdbEitherdc$RightRight :: b ->  Either a b/eebEitherabreversereverse :: Seq a -> Seq aexeSeqaSeqa(O(n). The reverse of a sequence. Areversereverse :: [a] -> [a]fe[]a[]amreverse xs returns the elements of xs in reverse order. xs must be finite. reversereverse ::  ByteString ->  ByteStringff ByteString ByteStringiO(n) reverse xs efficiently returns the elements of xs in reverse order. )returnAreturnA ::  Arrow a => a b bggArrowaabbMThe identity arrow, which plays the role of return in arrow notation. returnreturn ::  Monad m => a -> m achIhMonadmamaResult Result ::  Maybe Bool -> [String] -> [String] -> ResultihMaybeBool[]String[]StringResultResultdata Result>iiRestrictedTypeSynonymsRestrictedTypeSynonyms ::  Extensionii Extension> resolution resolution :: HasResolution a => a -> Integer'jj HasResolutionaaIntegerresizeresize :: Int -> Gen a -> Gen aj}jIntGenaGena replicateM_ replicateM_ ::  Monad m => Int -> m a -> m ()&kkMonadmIntmam()1Like replicateM, but discards the result.  replicateM replicateM ::  Monad m => Int -> m a -> m [a]kkMonadmIntmam[]a^replicateM n act performs the action n times, gathering the results. A replicate replicate :: Int -> a -> [a]llInta[]a replicate replicate :: Int -> Word8 ->  ByteString,mmIntWord8 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) Arepeatrepeat :: a -> [a]xnina[]aZrepeat x is an infinite list, with x the value of every element.  renameFile renameFile :: FilePath -> FilePath -> IO ()Yo8oFilePathFilePathIO()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: renameDirectoryrenameDirectory :: FilePath -> FilePath -> IO ()uuFilePathFilePathIO()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:  removeFile removeFile :: FilePath -> IO ()||FilePathIO()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: removeDirectoryRecursiveremoveDirectoryRecursive :: 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. removeDirectoryremoveDirectory :: FilePath -> IO ()oFilePathIO()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: iRelaxedPolyRecRelaxedPolyRec ::  Extension Extension RelativeSeek RelativeSeek :: SeekModedYSeekModeTthe position of hdl is set to offset i from the current position. lregHookregHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  RegisterFlags -> IO ()k UserHooksPackageDescriptionLocalBuildInfo UserHooks RegisterFlagsIO()COver-ride this hook to get different behavior during registration. i RecursiveDo RecursiveDo ::  ExtensionTH Extension% RecUpdError RecUpdError :: String ->  ExceptionString 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. % RecSelError RecSelError :: String ->  ExceptioncMString 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. iRecordWildCardsRecordWildCards ::  Extension֍ Extensioni RecordPuns RecordPuns ::  Extension0$ Extension% 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. ;realPartrealPart :: RealFloat a =>  Complex a -> a RealFloataComplexaa,Extracts the real part of a complex number.  ReadWriteMode ReadWriteMode :: IOMode[RIOModeE readSTRef readSTRef ::  STRef s a -> ST s aːSTRefsaSTsa"Read the value of an STRef ! readsPrec readsPrec ::  Read a => Int -> ReadS acDReadaIntReadSa!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 a“ReadaReadPreca! readParen readParen :: Bool -> ReadS a -> ReadS aD#BoolReadSaReadSareadParen True p parses what p parses, but surrounded with parentheses. readParen False p parses what p parses, but optionally surrounded with parentheses. treadPackageDescriptionreadPackageDescription ::  Verbosity -> FilePath -> IO GenericPackageDescription VerbosityFilePathIOGenericPackageDescriptionParse the given package file. | readP_to_E readP_to_E :: (String -> ErrorMsg) ->  ReadP a a -> ReadE aStringErrorMsgReadPaaReadEaReadModeReadMode :: IOModeIOModereadLnreadLn ::  Read a => IO aM8ReadaIOaFThe readLn function combines getLine and readIO. : readLitChar readLitChar ::  ReadS CharؗReadSCharRead 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]B!ReadaReadPrec[]apA possible replacement definition for the readListPrec method, defined using readPrec (GHC only). ! readListPrec readListPrec ::  Read a =>  ReadPrec [a]&ReadaReadPrec[]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[]a4 readIORef readIORef :: IORef a -> IO aD,IORefaIOa"Read the value of an IORef readIOreadIO ::  Read a => String -> IO a֜ReadaStringIOaThe readIO function is similar to read except that it signals parse failure to the IO monad instead of terminating the program. treadHookedBuildInforeadHookedBuildInfo ::  Verbosity -> FilePath -> IO HookedBuildInfo  VerbosityFilePathIOHookedBuildInforeadFilereadFile :: FilePath ->  IO StringrFilePathIOStringThe 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. readFilereadFile :: FilePath ->  IO ByteStringFilePathIO 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. o readFields readFields :: String -> ParseResult [Field]xQString ParseResult[]Field| readEOrFail readEOrFail :: ReadE a -> String -> a١ReadEaStringa|ReadEReadE :: String -> Either ErrorMsg a -> ReadE aXStringEitherErrorMsgaReadEa|ReadEnewtype ReadE a#Parser with simple error reporting lreadDescreadDesc ::  UserHooks -> IO (Maybe PackageDescription)tC UserHooksIOMaybePackageDescriptionRead the description file readablereadable ::  Permissions -> Boolޣ PermissionsBool!readread ::  Read a => String -> aW>ReadaStringalThe read function reads input from a string, which must be completely consumed by the input process. !Readclass Read a 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
 reachable reachable :: Graph -> Vertex -> [Vertex]GraphVertex[]Vertex2A list of vertices reachable from a given vertex.  rawSystem rawSystem :: String -> [String] ->  IO ExitCodeٯString[]StringIOExitCodeThe computation rawSystem cmd args runs the operating system command cmd in such a way that it receives as arguments the args strings exactly as given, with no funny escaping or shell meta-syntax expansion. It will therefore behave more portably between operating systems than system. The return codes and possible failures are the same as for system. DRationaltype Rational = Ratio IntegerArbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator. DRatiodata Integral a => Ratio aORational numbers, with numerator and denominator of some Integral type. !RatRat :: Rational -> Lexeme4RationalLexemeFloating point literal i RankNTypes RankNTypes ::  Extension Extensioni Rank2Types Rank2Types ::  Extension۳ ExtensionB rangeSize rangeSize :: Ix a => (a, a) -> IntY;Ixa(,)aaIntBrangerange :: Ix a => (a, a) -> [a]ǴIxa(,)aa[]arandomsrandoms :: (Random a, RandomGen g) => g -> [a]Q%Randoma RandomGengg[]arandomRsrandomRs :: (Random a, RandomGen g) => (a, a) -> g -> [a]õRandoma RandomGeng(,)aag[]a randomRIO randomRIO ::  Random a => (a, a) -> IO a{URandoma(,)aaIOarandomRrandomR :: (Random a, RandomGen g) => (a, a) -> g -> (a, g)+Randoma RandomGeng(,)aag(,)agrandomIOrandomIO ::  Random a => IO apRandomaIOa RandomGenclass  RandomGen gThe 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(,)agRandomclass Random aWith 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 StdGen&GenStdGen quickCheck quickCheck :: Testable a => a -> IO ()TestableaaIO()oPWarningPWarning :: String -> PWarningStringPWarningoPWarningdata PWarning6nPWarningdata PWarningjJ putTraceMsg putTraceMsg :: String -> IO ()ѻStringIO()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. putStrLnputStrLn :: String -> IO () StringIO()9The same as putStr, but adds a newline character. putStrLnputStrLn ::  ByteString -> IO () ByteStringIO()7Write a ByteString to stdout, appending a newline byte putStrputStr :: String -> IO ()U@StringIO()UWrite a string to the standard output device (same as hPutStr stdout). putStrputStr ::  ByteString -> IO () ByteStringIO()Write a ByteString to stdout putCharputChar :: Char -> IO ()tCharIO()YWrite a character to the standard output device (same as hPutChar stdout). )purepure ::  Arrow a => (b -> c) -> a b cS1Arrowabcabc(purepure :: Applicative f => a -> f a Applicativefafa!PuncPunc :: String -> LexemeStringLexeme=Punctuation or reserved symbol, e.g. (, :: r PublicDomain PublicDomain :: LicenseLicense?Holder makes no claim to ownership, least restrictive license. p PublicDomain PublicDomain :: License1'License?Holder makes no claim to ownership, least restrictive license. K ptrToWordPtr ptrToWordPtr :: Ptr a -> WordPtrPtraWordPtr+casts a Ptr to a WordPtr K ptrToIntPtr ptrToIntPtr :: Ptr a -> IntPtrmXPtraIntPtr+casts a Ptr to an IntPtr KPtrdata Ptr aA 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 -> babbRSemantically 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. propertyproperty :: Testable a => a -> PropertyTestableaaPropertyPropertydata Propertypromotepromote ::  (a -> Gen b) ->  Gen (a -> b)tSaGenbGenabAproductproduct ::  Num a => [a] -> aNuma[]aaNThe product function computes the product of a finite list of numbers. ?productproduct :: (Foldable t, Num a) => t a -> aFoldabletNumataaPThe product function computes the product of the numbers of a structure. +ProductProduct :: a ->  Product aUAaProducta+Productnewtype Product aMonoid under multiplication.  ProcessHandledata  ProcessHandle: PrivateUse PrivateUse :: GeneralCategoryA/GeneralCategoryCo: Other, Private Use Z PrintfTypeclass  PrintfType tZThe 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. Z PrintfArgclass  PrintfArg a&Zprintfprintf :: PrintfType r => String -> rz 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
printprint ::  Show a => a -> IO ()nShowaaIO()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]])
@primeprime :: Int32jbInt320A prime larger than the maximum hash table size lpreUnreg preUnreg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfoY UserHooksArgs RegisterFlagsIOHookedBuildInfo&Hook to run before unregister command lpreSDist preSDist ::  UserHooks -> Args ->  SDistFlags -> IO HookedBuildInfo8 UserHooksArgs SDistFlagsIOHookedBuildInfoHHook to run before sdist command. Second arg indicates verbosity level. lpreReg preReg ::  UserHooks -> Args ->  RegisterFlags -> IO HookedBuildInfo; UserHooksArgs RegisterFlagsIOHookedBuildInfo$Hook to run before register command l preMakefile  preMakefile ::  UserHooks -> Args ->  MakefileFlags -> IO HookedBuildInfo$ UserHooksArgs MakefileFlagsIOHookedBuildInfoKHook to run before makefile command. Second arg indicates verbosity level. lpreInst preInst ::  UserHooks -> Args ->  InstallFlags -> IO HookedBuildInfo* UserHooksArgs InstallFlagsIOHookedBuildInfo#Hook to run before install command l preHscolour  preHscolour ::  UserHooks -> Args ->  HscolourFlags -> IO HookedBuildInfo UserHooksArgs HscolourFlagsIOHookedBuildInfoKHook to run before hscolour command. Second arg indicates verbosity level. l preHaddock  preHaddock ::  UserHooks -> Args ->  HaddockFlags -> IO HookedBuildInfo UserHooksArgs HaddockFlagsIOHookedBuildInfoJHook to run before haddock command. Second arg indicates verbosity level. lpreCopy preCopy ::  UserHooks -> Args ->  CopyFlags -> IO HookedBuildInfo UserHooksArgs CopyFlagsIOHookedBuildInfo Hook to run before copy command lpreConf preConf ::  UserHooks -> Args ->  ConfigFlags -> IO HookedBuildInfo UserHooksArgs ConfigFlagsIOHookedBuildInfo%Hook to run before configure command lpreClean preClean ::  UserHooks -> Args ->  CleanFlags -> IO HookedBuildInfo UserHooksArgs CleanFlagsIOHookedBuildInfoHHook to run before clean command. Second arg indicates verbosity level. lpreBuild preBuild ::  UserHooks -> Args ->  BuildFlags -> IO HookedBuildInfo UserHooksArgs BuildFlagsIOHookedBuildInfoHHook to run before build command. Second arg indicates verbosity level. oppFieldsppFields :: a -> [FieldDescr a] -> Doc|a[] FieldDescraDocoppFieldppField :: String -> Doc -> Doc StringDocDocwPPC64PPC64 :: ArchD=ArchwPPCPPC :: ArchzsArchl postUnreg postUnreg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO ()}, UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()%Hook to run after unregister command l postSDist postSDist ::  UserHooks -> Args ->  SDistFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()W UserHooksArgs SDistFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after sdist command. Second arg indicates verbosity level. lpostRegpostReg ::  UserHooks -> Args ->  RegisterFlags -> PackageDescription -> LocalBuildInfo -> IO () UserHooksArgs RegisterFlagsPackageDescriptionLocalBuildInfoIO()#Hook to run after register command l postMakefile postMakefile ::  UserHooks -> Args ->  MakefileFlags -> PackageDescription -> LocalBuildInfo -> IO ()  UserHooksArgs MakefileFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after makefile command. Second arg indicates verbosity level. lpostInstpostInst ::  UserHooks -> Args ->  InstallFlags -> PackageDescription -> LocalBuildInfo -> IO ()i UserHooksArgs InstallFlagsPackageDescriptionLocalBuildInfoIO()cHook to run after install command. postInst should be run on the target, not on the build machine. l postHscolour postHscolour ::  UserHooks -> Args ->  HscolourFlags -> PackageDescription -> LocalBuildInfo -> IO () UserHooksArgs HscolourFlagsPackageDescriptionLocalBuildInfoIO()JHook to run after hscolour command. Second arg indicates verbosity level. l postHaddock postHaddock ::  UserHooks -> Args ->  HaddockFlags -> PackageDescription -> LocalBuildInfo -> IO ()$ UserHooksArgs HaddockFlagsPackageDescriptionLocalBuildInfoIO()IHook to run after haddock command. Second arg indicates verbosity level. lpostCopypostCopy ::  UserHooks -> Args ->  CopyFlags -> PackageDescription -> LocalBuildInfo -> IO ()f UserHooksArgs CopyFlagsPackageDescriptionLocalBuildInfoIO()Hook to run after copy command lpostConfpostConf ::  UserHooks -> Args ->  ConfigFlags -> PackageDescription -> LocalBuildInfo -> IO ()3 UserHooksArgs ConfigFlagsPackageDescriptionLocalBuildInfoIO()$Hook to run after configure command l postClean postClean ::  UserHooks -> Args ->  CleanFlags -> PackageDescription -> Maybe LocalBuildInfo -> IO ()[ UserHooksArgs CleanFlagsPackageDescriptionMaybeLocalBuildInfoIO()GHook to run after clean command. Second arg indicates verbosity level. l postBuild postBuild ::  UserHooks -> Args ->  BuildFlags -> PackageDescription -> LocalBuildInfo -> IO () UserHooksArgs BuildFlagsPackageDescriptionLocalBuildInfoIO()GHook to run after build command. Second arg indicates verbosity level. iPolymorphicComponentsPolymorphicComponents ::  Extension Extension;polarpolar :: RealFloat a =>  Complex a -> (a, a)( RealFloataComplexa(,)aa pokeElemOff  pokeElemOff :: Storable a => Ptr a -> Int -> a -> IO ()StorableaPtraIntaIO() pokeByteOff  pokeByteOff :: Storable a => Ptr b -> Int -> a -> IO ()zLStorableaPtrbIntaIO()pokepoke :: Storable a => Ptr a -> a -> IO ()StorableaPtraaIO()KplusPtrplusPtr :: Ptr a -> Int -> Ptr buYPtraIntPtrb9Advances the given address by the given offset in bytes. q pkgVersion pkgVersion :: PackageIdentifier -> Version* PackageIdentifierVersion$the version of this package, eg 1.2 tpkgUrlpkgUrl :: PackageDescription -> StringPackageDescriptionStringnpkgUrlpkgUrl :: InstalledPackageInfo_ m -> StringCInstalledPackageInfo_mStringqpkgNamepkgName :: PackageIdentifier -> StringPackageIdentifierString"The name of this package, eg. foo tpkgconfigDependspkgconfigDepends ::  BuildInfo ->  [Dependency]_? BuildInfo[] Dependency"pkg-config packages that are used >Picotype Pico = Fixed E12;phasephase :: RealFloat a =>  Complex a -> a3 RealFloataComplexaaoPErrordata PErrorcnPErrordata PError Permissions  Permissions :: Bool -> Bool -> Bool -> Bool ->  PermissionsABoolBoolBoolBool Permissions Permissionsdata  Permissions{W performGC performGC :: IO ()IO())Triggers an immediate garbage collection  peekElemOff peekElemOff :: Storable a => Ptr a -> Int -> IO aXStorableaPtraIntIOa peekByteOff peekByteOff :: Storable a => Ptr b -> Int -> IO aStorableaPtrbIntIOapeekpeek :: Storable a => Ptr a -> IO aiStorableaPtraIOaiPatternSignaturesPatternSignatures ::  Extension Extension%PatternMatchFailPatternMatchFail :: String ->  Exception`JString ExceptionA pattern matching failure. The String argument should contain a descriptive message including the function name, source file and line number. i PatternGuards PatternGuards ::  ExtensionJ> Extensionpath path :: Graph -> Vertex -> Vertex -> BoolGraphVertexVertexBool/Is the second vertex reachable from the first? partitionWithKeypartitionWithKey ::  Ord k => (k -> a -> Bool) -> Map k a -> (Map k a, Map k a)OrdkkaBoolMapka(,)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. partitionWithKeypartitionWithKey :: (Key -> a -> Bool) -> IntMap a -> (IntMap a, IntMap a)d#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.  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.  partition partition ::  Ord k =>  (a -> Bool) -> Map k a -> (Map k a, Map k a)O OrdkaBoolMapka(,)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. A partition partition ::  (a -> Bool) -> [a] ->  ([a], [a])waBool[]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)
 partition partition ::  (Int -> Bool) -> IntSet -> (IntSet, IntSet)+IntBoolIntSet(,)IntSetIntSet<O(n). partition the set according to some predicate.  partition partition ::  (a -> Bool) -> IntMap a -> (IntMap a, IntMap a)aBoolIntMapa(,)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 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)
oparseVersionRangeQparseVersionRangeQ :: ReadP r VersionRange  ReadPr VersionRangef parseVersion parseVersion :: ReadP r Versionq [ ReadPrVersionI parseVersion parseVersion ::  ReadP Version  ReadPVersionDA parser for versions in the format produced by showVersion. o parseTokenQ parseTokenQ :: ReadP r Stringp [ ReadPrStringoparseTestedWithQparseTestedWithQ :: &ReadP r (CompilerFlavor, VersionRange)  ReadPr(,)CompilerFlavor VersionRangeo parseSepList parseSepList ::  ReadP r b ->  ReadP r a ->  ReadP r [a]  ReadPrbReadPraReadPr[]ao ParseResultdata  ParseResult a t ParseResultdata  ParseResult a-n ParseResultdata  ParseResult ai| parseReadE parseReadE :: ReadE a ->  ReadP r aReadEaReadPrao parseQuoted parseQuoted ::  ReadP r a ->  ReadP r aV5ReadPraReadPraoparsePkgconfigDependencyparsePkgconfigDependency :: ReadP r DependencyReadPr DependencyoparsePackageNameQparsePackageNameQ :: ReadP r String@+ReadPrStringqparsePackageNameparsePackageName :: ReadP r StringReadPrStringtparsePackageDescriptionparsePackageDescription :: String -> %ParseResult GenericPackageDescriptiong2String ParseResultGenericPackageDescriptionParses the given file into a GenericPackageDescription. In Cabal 1.2 the syntax for package descriptions was changed to a format with sections and possibly indented property descriptions. oparseOptVersionparseOptVersion :: ReadP r Version}ReadPrVersionoparseOptCommaListparseOptCommaList ::  ReadP r a ->  ReadP r [a]!ReadPraReadPr[]aoParseOkParseOk ::  [PWarning] -> a ->  ParseResult a[]PWarninga ParseResultatParseOkParseOk ::  [PWarning] -> a ->  ParseResult a7[]PWarninga ParseResultanParseOkParseOk ::  [PWarning] -> a ->  ParseResult a[]PWarninga ParseResultaoparseModuleNameQparseModuleNameQ :: ReadP r String*ReadPrStringparse a module name o parseLicenseQ parseLicenseQ :: ReadP r LicenseReadPrLicensenparseInstalledPackageInfoparseInstalledPackageInfo :: String ->  ParseResult InstalledPackageInfo[+String ParseResultInstalledPackageInfotparseHookedBuildInfoparseHookedBuildInfo :: String -> ParseResult HookedBuildInfoString ParseResultHookedBuildInfooparseFilePathQparseFilePathQ :: ReadP r FilePathhQReadPrFilePatho ParseFailed ParseFailed :: PError ->  ParseResult aPError ParseResultat ParseFailed ParseFailed :: PError ->  ParseResult aV9PError ParseResultan ParseFailed ParseFailed :: PError ->  ParseResult aPError ParseResultao parseFail parseFail :: PError ->  ParseResult a@#PError ParseResultaoparseExtensionQparseExtensionQ :: ReadP r ExtensionReadPr Extension 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. eparseCompilerFlavorCompatparseCompilerFlavorCompat :: ReadP r CompilerFlavorReadPrCompilerFlavorLike classifyCompilerFlavor but compatible with the old ReadS parser. It is compatible in the sense that it accepts only the same strings, eg GHC but not ghc. However other strings get mapped to OtherCompiler. The point of this is that we do not allow extra valid values that would upset older Cabal versions that had a stricter parser however we cope with new values more gracefully so that we'll be able to introduce new value in future without breaking things so much. oparseCommaListparseCommaList ::  ReadP r a ->  ReadP r [a])ReadPraReadPr[]aoparseBuildToolparseBuildTool :: ReadP r Dependency|ReadPr Dependencygparseparse ::  Text a =>  ReadP r aTextaReadPra!parensparens ::  ReadPrec a ->  ReadPrec adCReadPrecaReadPreca(parens p) parses "P", "(P0)", "((P0))", etc, where p parses "P" in the current precedence context and parses "P0" in precedence context zero iParallelListCompParallelListComp ::  Extension^ R  Extension:ParagraphSeparatorParagraphSeparator :: GeneralCategory  GeneralCategoryZp: Separator, Paragraph parpar :: a -> b -> b3!'!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. packCStringLenpackCStringLen ::  CStringLen ->  IO ByteStringp$O$ 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.  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. qpackageVersionpackageVersion :: Package pkg => pkg -> Versionr'Q'PackagepkgpkgVersionq packageName packageName :: Package pkg => pkg -> String''PackagepkgpkgStringqPackageIdentifierPackageIdentifier :: String -> Version -> PackageIdentifier(n(StringVersionPackageIdentifierqPackageIdentifierdata PackageIdentifier(#The name and version of a package. q packageId packageId :: Package pkg => pkg -> PackageIdentifier)d)PackagepkgpkgPackageIdentifierqPackageFixedDepsclass Package pkg => PackageFixedDeps pkg)_Subclass of packages that have specific versioned dependencies. So for example a not-yet-configured package has dependencies on version ranges, not specific versions. A configured or an already installed package depends on exact versions. Some operations or data structures (like dependency graphs) only make sense on this subclass of package types. tpackageDescriptionpackageDescription :: GenericPackageDescription -> PackageDescription++GenericPackageDescriptionPackageDescriptiontPackageDescription2PackageDescription :: PackageIdentifier -> License -> FilePath -> String -> String -> String -> String ->  [(CompilerFlavor, VersionRange)] -> String ->  String ->  String ->  String ->  String ->  [(String, String)] ->  [Dependency] ->  VersionRange -> Maybe BuildType ->  Maybe Library ->  [Executable] ->  [FilePath] -> FilePath ->  [FilePath] ->  [FilePath] -> PackageDescription/U.PackageIdentifierLicenseFilePathStringStringStringString[](,)CompilerFlavor VersionRangeStringStringStringStringString[](,)StringString[] Dependency VersionRangeMaybe BuildTypeMaybeLibrary[] Executable[]FilePathFilePath[]FilePath[]FilePathPackageDescriptiontPackageDescriptiondata PackageDescription/KThis data type is the internal representation of the file pkg.cabal. It contains two kinds of information about the package: information which is needed for all packages, such as the package name and version, and information which is needed for the simple build system only, such as the compiler options and library name. tpackagepackage :: PackageDescription -> PackageIdentifier11PackageDescriptionPackageIdentifiernpackagepackage :: InstalledPackageInfo_ m -> PackageIdentifierl2:2InstalledPackageInfo_mPackageIdentifierqPackageclass Package pkg2Class of things that can be identified by a PackageIdentifier Types in this class are all notions of a package. This allows us to have different types for the different phases that packages go though, from simple name/id, package description, configured or installed packages. packpack :: [Word8] ->  ByteString&4 4[]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). iOverloadedStringsOverloadedStrings ::  ExtensionE595 ExtensioniOverlappingInstancesOverlappingInstances ::  Extension55 Extension%OverflowOverflow :: ArithException55ArithException outdegree outdegree :: Graph ->  Table Intd6L6GraphTableInt.A table of the count of edges from each node. 9 otherwise otherwise :: Bool66Boolotherwise is defined as the value True. It helps to make guards more readable. eg.
f x | x < 0     = ...
    | otherwise = ...
: OtherSymbol OtherSymbol :: GeneralCategory77GeneralCategorySo: Symbol, Other :OtherPunctuationOtherPunctuation :: GeneralCategoryF848GeneralCategoryPo: Punctuation, Other wOtherOSOtherOS :: String -> OS88StringOS: OtherNumber OtherNumber :: GeneralCategory98GeneralCategoryNo: Number, Other t otherModules otherModules ::  BuildInfo -> [String]9{9 BuildInfo[]String non-exposed or non-main modules r OtherLicense OtherLicense :: License:9LicenseSome other license. p OtherLicense OtherLicense :: Licenseg:]:LicenseSome other license. : OtherLetter OtherLetter :: GeneralCategory::GeneralCategoryLo: Letter, Other e OtherCompiler OtherCompiler :: String -> CompilerFlavorc;H;StringCompilerFlavorw OtherArch OtherArch :: String -> Arch;;StringArchwOSXOSX :: OS;;OSVosos :: String+<"<String6The operating system on which the program is running. wOSdata OS<tOSOS :: OS -> ConfVar<<OSConfVarforLaterVersionorLaterVersion :: Version ->  VersionRangeQ=7=Version VersionRangeforEarlierVersionorEarlierVersion :: Version ->  VersionRange==Version VersionRangeCOrderingdata Ordering>Represents an ordering relationship between two values: less than, equal to, or greater than. An Ordering is returned by compare. :ordord :: Char -> Int>>CharIntCThe Prelude.fromEnum method restricted to the type Data.Char.Char. COrdclass Eq a => Ord aW?The 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. Aoror :: [Bool] -> BoolAA[]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. ?oror :: Foldable t => t Bool -> BoolCBFoldablettBoolBoolor 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. o optsField  optsField :: String -> CompilerFlavor -> #(b -> [(CompilerFlavor, [String])]) -> (([(CompilerFlavor, [String])] -> b -> b) ->  FieldDescr b9EDStringCompilerFlavorb[](,)CompilerFlavor[]String[](,)CompilerFlavor[]Stringbb FieldDescrbtoptionsoptions ::  BuildInfo -> [(CompilerFlavor, [String])]EE BuildInfo[](,)CompilerFlavor[]String(optionaloptional :: Alternative f => f a ->  f (Maybe a)dF6F AlternativeffafMaybea One or none.  openTempFile openTempFile :: FilePath -> String -> IO (FilePath, Handle)GFFilePathStringIO(,)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. :OpenPunctuationOpenPunctuation :: GeneralCategoryJnJGeneralCategoryPs: Punctuation, Open openFileopenFile :: FilePath -> IOMode ->  IO HandleKJFilePathIOModeIOHandle/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. wOpenBSDOpenBSD :: OSPPOSopenBinaryTempFileopenBinaryTempFile :: FilePath -> String -> IO (FilePath, Handle)>Q QFilePathStringIO(,)FilePathHandlejLike openTempFile, but opens the file in binary mode. See openBinaryFile for more comments. openBinaryFileopenBinaryFile :: FilePath -> IOMode ->  IO Handle;RRFilePathIOModeIOHandleLike 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.) oneofoneof :: [Gen a] -> Gen a|T_T[]GenaGena5on on ::  (b -> b -> c) -> (a -> b) -> a -> a -> c UTbbcabaacz(*) `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)
okok :: Result ->  Maybe BoolVVResultMaybeBoolD numerator numerator :: Integral a => Ratio a -> a_W>WIntegralaRatioaaExtract the numerator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive. KnullPtrnullPtr :: Ptr a+X XPtra~The constant nullPtr contains a distinguished value of Ptr that is not associated with a valid memory location. K nullFunPtr nullFunPtr :: FunPtr aXXFunPtraThe constant nullFunPtr contains a distinguished value of FunPtr that is not associated with a valid memory location. nullnull :: Set a -> BoolYYSetaBool$O(1). Is this the empty set? nullnull :: Seq a -> BoolJZ7ZSeqaBool)O(1). Is this the empty sequence? nullnull :: Map k a -> BoolZZMapkaBoolO(1). Is the map empty? Anullnull :: [a] -> Bool>[,[[]aBoolTest whether a list is empty. nullnull :: IntSet -> Bool[[IntSetBoolO(1). Is the set empty? nullnull :: IntMap a -> Bool*\\IntMapaBoolO(1). Is the map empty? nullnull ::  ByteString -> Bool\\ ByteStringBool0O(1) Test whether a ByteString is empty. AnubBynubBy :: (a -> a -> Bool) -> [a] -> [a]U]2]aaBool[]a[]aThe nubBy function behaves just like nub, except it uses a user-supplied equality predicate instead of the overloaded == function. Anubnub :: Eq a => [a] -> [a]P^2^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. fnotThisVersionnotThisVersion :: Version ->  VersionRange__Version VersionRangeqnotThisPackageVersionnotThisPackageVersion :: PackageIdentifier ->  Dependencyq`O`PackageIdentifier Dependency notMember notMember ::  Ord a => a -> Set a -> Bool``OrdaaSetaBool0O(log n). Is the element not in the set?  notMember notMember ::  Ord k => k -> Map k a -> BoolaaOrdkkMapkaBool5O(log n). Is the key not a member of the map?  notMember notMember :: Int -> IntSet -> BoolQb;bIntIntSetBool3O(min(n,W)). Is the element not in the set?  notMember notMember :: Key -> IntMap a -> BoolbbKeyIntMapaBool5O(log n). Is the key not a member of the map?  NothingNothing :: Maybe ayclcMaybeaAnotElemnotElem :: Eq a => a -> [a] -> BoolccEqaa[]aBool/notElem is the negation of elem. ?notElemnotElem :: (Foldable t, Eq a) => a -> t a -> BoolddFoldabletEqaataBool/notElem is the negation of elem. notElemnotElem :: Word8 ->  ByteString -> Bool_eCeWord8 ByteStringBool9O(n) notElem is the inverse of elem : NotAssigned NotAssigned :: GeneralCategoryeeGeneralCategoryCn: Other, Not Assigned 9notnot :: Bool -> BoolZfKfBoolBoolBoolean "not" xnormalnormal ::  Verbosityff VerbosityoNoParseNoParse :: String -> LineNo -> PError&g gStringLineNoPErrornNoParseNoParse :: String -> LineNo -> PErrorggStringLineNoPError%NonTerminationNonTermination ::  Exceptiongg Exception~The current thread is stuck in an infinite loop. This exception may or may not be thrown when the program is non-terminating. :NonSpacingMarkNonSpacingMark :: GeneralCategoryhhGeneralCategoryMn: Mark, Non-Spacing iNoMonoPatBindsNoMonoPatBinds ::  Extension@i4i ExtensioniNoMonomorphismRestrictionNoMonomorphismRestriction ::  Extensionii Extension% NoMethodError NoMethodError :: String ->  ExceptionjjString 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. iNoImplicitPreludeNoImplicitPrelude ::  Extension`kTk ExtensionNodeNode :: a -> Forest a -> Tree akkaForestaTreea NoBuffering NoBuffering ::  BufferMode$ll BufferMode#buffering is disabled if possible. nmergeIOnmergeIO :: [[a]] -> IO [a]ll[][]aIO[]aeNHCNHC :: CompilerFlavorllCompilerFlavornextnext :: RandomGen g => g -> (Int, g)tmOm RandomGengg(,)Intg' newUnique newUnique ::  IO UniquemmIOUniqueCreates 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. EnewSTRefnewSTRef :: a -> ST s (STRef s a)+o oaSTsSTRefsa5Build a new STRef in the current state thread  newStdGen newStdGen ::  IO StdGenooIOStdGenxApplies split to the current global random generator, updates it with one of the results, and returns the other. 2 newStablePtr newStablePtr :: a -> IO (StablePtr a)ppaIO StablePtra>Create a stable pointer referring to the given Haskell value. 4newIORefnewIORef :: a ->  IO (IORef a)Aq)qaIOIORefaBuild a new IORef LnewForeignPtrEnv newForeignPtrEnv :: FinalizerEnvPtr env a -> Ptr env -> Ptr a -> IO (ForeignPtr a)@rqFinalizerEnvPtrenvaPtrenvPtraIO 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. LnewForeignPtr_newForeignPtr_ :: Ptr a -> IO (ForeignPtr a)ssPtraIO ForeignPtraTurns a plain memory reference into a foreign pointer that may be associated with finalizers by using addForeignPtrFinalizer. L newForeignPtr newForeignPtr :: FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)tt 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)wwPtraIO()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. @newnew :: key -> key -> Bool -> key -> Int32 -> IO (HashTable key val)PzzkeykeyBoolkeyInt32IO 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
wNetBSDNetBSD :: OS9{4{OS%NestedAtomicallyNestedAtomically ::  Exception{{ ExceptionThe runtime detected an attempt to nest one STM transaction inside another one, presumably due to the use of unsafePeformIO with atomically. iNamedFieldPunsNamedFieldPuns ::  Extensionv|j| Extensionmzeromzero :: MonadPlus m => m a|| MonadPlusmma myThreadId myThreadId ::  IO ThreadId%}}IOThreadId>Returns the ThreadId of the calling thread (GHC only). iMultiParamTypeClassesMultiParamTypeClasses ::  Extension}} Extension?msummsum :: (Foldable t, MonadPlus m) => t (m a) -> m a^~'~Foldablet 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 MonadPlusmmamamax moreVerbose moreVerbose ::  Verbosity ->  VerbosityK2 Verbosity Verbosity+Monoidclass Monoid a~The monoid class. A minimal complete definition must supply mempty and mappend, and these should satisfy the monoid laws.  MonadPlusclass  Monad m =>  MonadPlus mJ-Monads that also support choice and failure. 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. t modulePath modulePath ::  Executable -> FilePath ExecutableFilePathE modifySTRef modifySTRef ::  STRef s a -> (a -> a) -> ST s ()4 STRefsaaaSTs()'Mutate the contents of an STRef 4 modifyIORef modifyIORef :: IORef a -> (a -> a) -> IO ()†IORefaaaIO()'Mutate the contents of an IORef :ModifierSymbolModifierSymbol :: GeneralCategorylZGeneralCategorySk: Symbol, Modifier :ModifierLetterModifierLetter :: GeneralCategoryчGeneralCategoryLm: Letter, Modifier >mod'mod' ::  Real a => a -> a -> aaJRealaaaa5generalisation of mod to any instance of Real 4 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 -> TyConmStringTyConBuilds a TyCon object representing a type constructor. An implementation of Data.Typeable should ensure that the following holds:
mkTyCon "a" == mkTyCon "a"
mkStdGenmkStdGen :: Int -> StdGenIntStdGenThe 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. ;mkPolarmkPolar :: RealFloat a => a -> a ->  Complex aɌ RealFloataaaComplexa mkFunTymkFunTy :: TypeRep -> TypeRep -> TypeRepnPTypeRepTypeRepTypeRepeA special case of mkTyConApp, which applies the function type constructor to a pair of types. tMkFlag MkFlag :: FlagName -> String -> Bool -> Flag_>FlagNameStringBoolFlag mkAppTymkAppTy :: TypeRep -> TypeRep -> TypeRepݎTypeRepTypeRepTypeRep&Adds a TypeRep argument to a TypeRep. wMipsMips :: Arch;4ArchminViewWithKeyminViewWithKey ::  Monad m => Map k a -> m ((k, a), Map k a)MonadmMapkam(,)(,)kaMapkaO(log n). Retrieves the minimal (key,value) pair of the map, and the map stripped from that element fails (in the monad) when passed an empty map. minViewWithKeyminViewWithKey ::  Monad m => IntMap a -> m ((Key, a), IntMap a)LMonadmIntMapam(,)(,)KeyaIntMapaO(log n). Retrieves the minimal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. minViewminView ::  Monad m => Set a ->  m (a, Set a)MMonadmSetam(,)aSetaO(log n). Retrieves the minimal key of the set, and the set stripped from that element fails (in the monad) when passed an empty set. minViewminView ::  Monad m => Map k a -> m (a, Map k a)tMonadmMapkam(,)aMapkaO(log n). Retrieves the minimal key's value of the map, and the map stripped from that element fails (in the monad) when passed an empty map. minViewminView ::  Monad m => IntSet -> m (Int, IntSet)ٔMonadmIntSetm(,)IntIntSetO(min(n,W)). Retrieves the minimal key of the set, and the set stripped from that element fails (in the monad) when passed an empty set. KminusPtrminusPtr :: Ptr a -> Ptr b -> Int̕PtraPtrbIntComputes the offset required to get from the first to the second argument. We have
p2 == p1 `plusPtr` (p2 `minusPtr` p1)
A 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. ? minimumBy minimumBy :: Foldable t => (a -> a -> Ordering) -> t a -> aMFoldabletaaOrderingtaaZThe least element of a non-empty structure with respect to the given comparison function. Aminimumminimum ::  Ord a => [a] -> a 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. ?minimumminimum :: (Foldable t, Ord a) => t a -> akDFoldabletOrdataa,The least element of a non-empty structure. minimumminimum ::  ByteString -> Word8 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. Cminmin ::  Ord a => a -> a -> aOrdaaaa>Microtype Micro = Fixed E6BmergeIOmergeIO :: [a] -> [a] -> IO [a][]a[]aIO[]a+memptymempty ::  Monoid a => a Monoidaamembermember ::  Ord a => a -> Set a -> BoolhOrdaaSetaBool,O(log n). Is the element in the set? membermember ::  Ord k => k -> Map k a -> Bool5OrdkkMapkaBool1O(log n). Is the key a member of the map? membermember :: Int -> IntSet -> BoolҞIntIntSetBool6O(min(n,W)). Is the value a member of the set? membermember :: Key -> IntMap a -> Bool{`KeyIntMapaBool4O(min(n,W)). Is the key a member of the map? +mconcatmconcat ::  Monoid a => [a] -> aMonoida[]aa  maybeToList maybeToList :: Maybe a -> [a]kMaybea[]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 -> bjbabMaybeab 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¢-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. maxViewWithKeymaxViewWithKey ::  Monad m => Map k a -> m ((k, a), Map k a)aMonadmMapkam(,)(,)kaMapkaO(log n). Retrieves the maximal (key,value) pair of the map, and the map stripped from that element fails (in the monad) when passed an empty map. maxViewWithKeymaxViewWithKey ::  Monad m => IntMap a -> m ((Key, a), IntMap a)MonadmIntMapam(,)(,)KeyaIntMapaO(log n). Retrieves the maximal (key,value) couple of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. maxViewmaxView ::  Monad m => Set a ->  m (a, Set a)3MonadmSetam(,)aSetaO(log n). Retrieves the maximal key of the set, and the set stripped from that element fails (in the monad) when passed an empty set. maxViewmaxView ::  Monad m => Map k a -> m (a, Map k a)`(MonadmMapkam(,)aMapkaO(log n). Retrieves the maximal key's value of the map, and the map stripped from that element fails (in the monad) when passed an empty map. maxViewmaxView ::  Monad m => IntSet -> m (Int, IntSet)]MonadmIntSetm(,)IntIntSetO(min(n,W)). Retrieves the maximal key of the set, and the set stripped from that element fails (in the monad) when passed an empty set. A maximumBy maximumBy :: (a -> a -> Ordering) -> [a] -> aaaOrdering[]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. ? maximumBy maximumBy :: Foldable t => (a -> a -> Ordering) -> t a -> aجFoldabletaaOrderingtaa\The largest element of a non-empty structure with respect to the given comparison function. Amaximummaximum ::  Ord a => [a] -> aȭOrda[]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. ?maximummaximum :: (Foldable t, Ord a) => t a -> a'FoldabletOrdataa.The largest element of a non-empty structure. maximummaximum ::  ByteString -> Word8 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. Cmaxmax ::  Ord a => a -> a -> aŰOrdaaaa: MathSymbol MathSymbol :: GeneralCategory GeneralCategorySm: Symbol, Math  mapWithKey mapWithKey ::  (k -> a -> b) -> Map k a -> Map k bıkabMapkaMapkb8O(n). Map a function over all values in the map.  mapWithKey mapWithKey :: (Key -> a -> b) -> IntMap a -> IntMap blKeyabIntMapaIntMapb8O(n). Map a function over all values in the map. +mappendmappend ::  Monoid a => a -> a -> aA(Monoidaaaa mapMonotonic mapMonotonic :: (a -> b) -> Set a -> Set bdzabSetaSetbMO(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
mapMaybeWithKeymapMaybeWithKey ::  Ord k => (k -> a -> Maybe b) -> Map k a -> Map k bԵOrdkkaMaybebMapkaMapkbBO(n). Map keys/values and collect the Just results. mapMaybeWithKeymapMaybeWithKey :: (Key -> a -> Maybe b) -> IntMap a -> IntMap bɶKeyaMaybebIntMapaIntMapbBO(n). Map keys/values and collect the Just results.  mapMaybemapMaybe :: (a -> Maybe b) -> [a] -> [b]laMaybeb[]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. mapMaybemapMaybe ::  Ord k => (a -> Maybe b) -> Map k a -> Map k bMOrdkaMaybebMapkaMapkb=O(n). Map values and collect the Just results. mapMaybemapMaybe :: (a -> Maybe b) -> IntMap a -> IntMap b[-aMaybebIntMapaIntMapb=O(n). Map values and collect the Just results. ?mapM_mapM_ :: (Foldable t, Monad m) =>  (a -> m b) -> t a -> m ()E FoldabletMonadmambtam()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 ()N Monadmamb[]am()SmapM_ f is equivalent to sequence_ . map f. HmapMmapM :: (Traversable t, Monad m) =>  (a -> m b) -> t a -> m (t b)Y TraversabletMonadmambtamtbmapMmapM ::  Monad m =>  (a -> m b) -> [a] -> m [b]Monadmamb[]am[]bQmapM f is equivalent to sequence . map f.  mapKeysWith  mapKeysWith ::  Ord k2 =>  (a -> a -> a) ->  (k1 -> k2) -> Map k1 a -> Map k2 aϾOrdk2aaak1k2Mapk1aMapk2a*O(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. mapKeysMonotonicmapKeysMonotonic ::  (k1 -> k2) -> Map k1 a -> Map k2 ak1k2Mapk1aMapk2a_O(n). mapKeysMonotonic f s == mapKeys f s, but works only when f is strictly monotonic. 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
mapKeysmapKeys ::  Ord k2 =>  (k1 -> k2) -> Map k1 a -> Map k2 aOrdk2k1k2Mapk1aMapk2a O(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. % mapException mapException :: (Exception -> Exception) -> a -> ai Exception ExceptionaaoThis function maps one exception into another as proposed in the paper "A semantics for imprecise exceptions". mapEitherWithKeymapEitherWithKey ::  Ord k => (k -> a -> Either b c) -> Map k a -> (Map k b, Map k c)OrdkkaEitherbcMapka(,)MapkbMapkcTO(n). Map keys/values and separate the Left and Right results. mapEitherWithKeymapEitherWithKey :: (Key -> a -> Either b c) -> IntMap a -> (IntMap b, IntMap c)KeyaEitherbcIntMapa(,)IntMapbIntMapcTO(n). Map keys/values and separate the Left and Right results.  mapEither mapEither ::  Ord k => (a -> Either b c) -> Map k a -> (Map k b, Map k c)7OrdkaEitherbcMapka(,)MapkbMapkcOO(n). Map values and separate the Left and Right results.  mapEither mapEither :: (a -> Either b c) -> IntMap a -> (IntMap b, IntMap c)HaEitherbcIntMapa(,)IntMapbIntMapcOO(n). Map values and separate the Left and Right results.  mapAndUnzipM mapAndUnzipM ::  Monad m => (a -> m (b, c)) -> [a] ->  m ([b], [c])bMonadmam(,)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. mapAccumWithKey mapAccumWithKey :: (a -> k -> b -> (a, c)) -> a -> Map k b ->  (a, Map k c)akb(,)acaMapkb(,)aMapkc~O(n). The function mapAccumWithKey threads an accumulating argument through the map in ascending order of keys. mapAccumWithKey mapAccumWithKey :: (a -> Key -> b -> (a, c)) -> a -> IntMap b ->  (a, IntMap c)ZaKeyb(,)acaIntMapb(,)aIntMapcO(n). The function mapAccumWithKey threads an accumulating argument through the map in ascending order of keys. A mapAccumR  mapAccumR :: (acc -> x -> (acc, y)) -> acc -> [x] ->  (acc, [y])baccx(,)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.  mapAccumR  mapAccumR :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)DaccWord8(,)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. A mapAccumL  mapAccumL :: (acc -> x -> (acc, y)) -> acc -> [x] ->  (acc, [y])i*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.  mapAccumL  mapAccumL :: (acc -> Word8 -> (acc, Word8)) -> acc ->  ByteString -> (acc, ByteString)Y 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. mapAccum mapAccum :: (a -> b -> (a, c)) -> a -> Map k b ->  (a, Map k c))ab(,)acaMapkb(,)aMapkcwO(n). The function mapAccum threads an accumulating argument through the map in ascending order of keys. mapAccum 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. mapmap :: (Ord a, Ord b) => (a -> b) -> Set a -> Set bzGOrdaOrdbabSetaSetbO(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 mapmap :: (a -> b) -> Map k a -> Map k babMapkaMapkb8O(n). Map a function over all values in the map. Amapmap :: (a -> b) -> [a] -> [b]wab[]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, ...]
mapmap ::  (Int -> Int) -> IntSet -> IntSetIntIntIntSetIntSetO(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 mapmap :: (a -> b) -> IntMap a -> IntMap b\7abIntMapaIntMapb8O(n). Map a function over all values in the map. mapmap :: (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. Mapdata Map k a1A Map from keys k to values a. (manymany :: Alternative f => f a -> f [a]x Alternativeffaf[]aZero or more. LmallocForeignPtrBytesmallocForeignPtrBytes :: 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. LmallocForeignPtrArray0mallocForeignPtrArray0 :: Storable a => Int -> IO (ForeignPtr a)wIStorableaIntIO 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. LmallocForeignPtrArraymallocForeignPtrArray :: Storable a => Int -> IO (ForeignPtr a)6StorableaIntIO 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. LmallocForeignPtrmallocForeignPtr :: Storable a => IO (ForeignPtr a)StorableaIO 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. makeRelativeToCurrentDirectorymakeRelativeToCurrentDirectory :: FilePath ->  IO FilePathtWFilePathIOFilePath+makeRelative the current directory. l makefileHook makefileHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  MakefileFlags -> IO ()\ UserHooksPackageDescriptionLocalBuildInfo UserHooks MakefileFlagsIO()?Over-ride this hook to get different behavior during makefile. tMakeMake ::  BuildType3' BuildType-calls Distribution.Make.defaultMain t maintainer maintainer :: PackageDescription -> StringPackageDescriptionStringn maintainer maintainer :: InstalledPackageInfo_ m -> Stringe>InstalledPackageInfo_mString; magnitude magnitude :: RealFloat a =>  Complex a -> a RealFloataComplexaai MagicHash MagicHash ::  Extension1% ExtensionwM68kM68k :: ArchibArchCLTLT :: OrderingOrdering:LowercaseLetterLowercaseLetter :: GeneralCategory GeneralCategoryLl: Letter, Lowercase %LossOfPrecisionLossOfPrecision :: ArithExceptionpArithException)looploop :: ArrowLoop a => a (b, d) (c, d) -> a b c ArrowLoopaa(,)bd(,)cdabc lookupIndex lookupIndex :: (Monad m, Ord k) => k -> Map k a -> m IntMonadmOrdkkMapkamIntO(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. lookuplookup :: (Monad m, Ord k) => k -> Map k a -> m aMonadmOrdkkMapkamaO(log n). Lookup the value at a key in the map. The function will return the result in the monad or fail in it the key isn't in the map. Often, the monad to use is Maybe, so you get either (Just result) or Nothing. Alookuplookup :: Eq a => a -> [(a, b)] -> Maybe b`Eqaa[](,)abMaybebIlookup key assocs looks up a key in an association list. lookuplookup ::  Monad m => Key -> IntMap a -> m ab9MonadmKeyIntMapama:O(min(n,W)). Lookup the value at a key in the map. @lookuplookup :: HashTable key val -> key -> IO (Maybe val): HashTablekeyvalkeyIOMaybeval/Looks up the value of a key in the hash table. @ longestChain longestChain :: HashTable key val -> IO [(key, val)]  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. olocatedErrorMsglocatedErrorMsg :: PError -> (Maybe LineNo, String)PError(,)MaybeLineNoStringtLitLit :: Bool ->  Condition c^EBool Conditionc  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. o listField listField :: String ->  (a -> Doc) ->  ReadP [a] a ->  (b -> [a]) -> ([a] -> b -> b) ->  FieldDescr biStringaDocReadP[]aab[]a[]abb FieldDescrbwLinuxLinux :: OSOS: LineSeparator LineSeparator :: GeneralCategoryGeneralCategoryZl: Separator, Line Alineslines :: String -> [String]u\String[]String}lines breaks a string up into a list of strings at newline characters. The resulting strings do not contain newlines. olineNolineNo :: Field -> LineNoL:FieldLineNooLineNotype LineNo = InttLineNotype LineNo = Int LineBuffering LineBuffering ::  BufferMode BufferMode.line-buffering should be enabled if possible. Linetype Line = InttliftM5liftM5 ::  Monad m => !(a1 -> a2 -> a3 -> a4 -> a5 -> r) -> m a1 -> m a2 -> m a3 -> m a4 -> m a5 -> m r0Monadma1a2a3a4a5rma1ma2ma3ma4ma5mrfPromote 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 rMonadma1a2a3a4rma1ma2ma3ma4mrfPromote 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 r8Monadma1a2rma1ma2mrPromote 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 ryPMonadma1rma1mrPromote a function to a monad. o liftField  liftField :: (b -> a) ->  (a -> b -> b) ->  FieldDescr a ->  FieldDescr bX baabb FieldDescra FieldDescrb(liftA3 liftA3 :: Applicative f => (a -> b -> c -> d) -> f a -> f b -> f c -> f d+ Applicativefabcdfafbfcfd$Lift a ternary function to actions. (liftA2 liftA2 :: Applicative f =>  (a -> b -> c) -> f a -> f b -> f c Applicativefabcfafbfc#Lift a binary function to actions. (liftAliftA :: 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. t licenseFile licenseFile :: PackageDescription -> FilePathPackageDescriptionFilePathtlicenselicense :: PackageDescription -> License"PackageDescriptionLicensenlicenselicense :: InstalledPackageInfo_ m -> LicenseInstalledPackageInfo_mLicenserLicensedata LicenseThis datatype indicates the license under which your package is released. It is also wise to add your license to each source file using the license-file field. The AllRightsReserved constructor is not actually a license, but states that you are not giving anyone else a license to use or distribute your work. The comments below are general guidelines. Please read the licenses themselves and consult a lawyer if you are unsure of your rights to release the software. pLicensedata LicenseThis datatype indicates the license under which your package is released. It is also wise to add your license to each source file using the license-file field. The AllRightsReserved constructor is not actually a license, but states that you are not giving anyone else a license to use or distribute your work. The comments below are general guidelines. Please read the licenses themselves and consult a lawyer if you are unsure of your rights to release the software. n libraryDirs libraryDirs :: InstalledPackageInfo_ m ->  [FilePath]X ) InstalledPackageInfo_m[]FilePathtlibrarylibrary :: PackageDescription ->  Maybe Library  PackageDescriptionMaybeLibrarytLibraryLibrary :: [String] ->  BuildInfo -> Libraryg B []String BuildInfoLibrarytLibrarydata Library t libModules libModules :: PackageDescription -> [String]  PackageDescription[]String<Get all the module names from the libraries in this package iLiberalTypeSynonymsLiberalTypeSynonyms ::  Extension   Extensiont libBuildInfo libBuildInfo :: Library ->  BuildInfo)Library BuildInforLGPLLGPL :: Licenseg]License=Lesser GPL, Less restrictive than GPL, useful for libraries. pLGPLLGPL :: LicenseLicense=Lesser GPL, Less restrictive than GPL, useful for libraries. !lexPlexP :: ReadPrec Lexemep[ReadPrecLexemeParse a single lexeme : lexLitChar lexLitChar ::  ReadS StringReadSStringRead a string representation of a character, using Haskell source-language escape conventions. For example:
lexLitChar  "\\nHello"  =  [("\\n", "Hello")]
!Lexemedata LexemeHaskell lexemes. !lexlex ::  ReadS StringReadSStringThe 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
levelslevels :: Tree a -> [[a]]:Treea[][]a*Lists of nodes at each level of the tree. : LetterNumber LetterNumber :: GeneralCategoryGeneralCategoryNl: Number, Letter x lessVerbose lessVerbose ::  Verbosity ->  VerbosityG. Verbosity Verbositylengthlength :: Seq a -> IntSeqaInt5O(1). The number of elements in the sequence. Alengthlength :: [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. lengthlength ::  ByteString -> Int<( ByteStringIntOO(1) length returns the length of a ByteString as an Int. )leftAppleftApp :: ArrowApply a => a b c -> a (Either b d) (Either c d)> ArrowApplyaabcaEitherbdEithercdAny instance of ArrowApply can be made into an instance of ArrowChoice by defining left = leftApp. )leftleft :: ArrowChoice a => a b c -> a (Either b d) (Either c d)l' ArrowChoiceaabcaEitherbdEithercd$LeftLeft :: a ->  Either a baEitherabt ldOptions ldOptions ::  BuildInfo -> [String]6 BuildInfo[]Stringoptions for linker n ldOptions ldOptions :: InstalledPackageInfo_ m -> [String]InstalledPackageInfo_m[]Stringf LaterVersion LaterVersion :: Version ->  VersionRangeN4Version VersionRangeAlastlast :: [a] -> a[]aaHExtract the last element of a list, which must be finite and non-empty. lastlast ::  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. +LastLast :: Maybe a -> Last a: MaybeaLasta+Lastnewtype Last ak8Maybe monoid returning the rightmost non-Nothing value. labellabel :: Testable a => String -> a -> Property.TestableaStringaPropertytknownBuildTypesknownBuildTypes ::  [BuildType]|[] BuildType)KleisliKleisli :: a -> m b ->  Kleisli m a b ambKleislimab)Kleislinewtype Kleisli m a bGKleisli arrows of a monad. iKindSignaturesKindSignatures ::  Extension Extension 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 (AsyncException ThreadKilled)
keysSetkeysSet :: Map k a -> Set k""MapkaSetk-O(n). The set of all keys of the map. keysSetkeysSet :: IntMap a -> IntSet""IntMapaIntSet6O(n*min(n,W)). The set of all keys of the map. keyskeys :: Map k a -> [k]@#'#Mapka[]k<O(n). Return all keys of the map in ascending order. keyskeys :: IntMap a -> [Key]##IntMapa[]Key<O(n). Return all keys of the map in ascending order. Keytype Key = IntK$ JustJust :: a -> Maybe a$$aMaybeajoinjoin ::  Monad m => m (m a) -> m a%$MonadmmmamaThe 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. eJHCJHC :: CompilerFlavor&%CompilerFlavorBIxclass  Ord a => Ix a9&WThe 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. Aiterateiterate :: (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), ...]
:isUpperisUpper :: Char -> Bool**CharBoolSelects 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. :isSymbolisSymbol :: Char -> Bool++CharBoolPSelects Unicode symbol characters, including mathematical and currency symbols. A isSuffixOf isSuffixOf :: Eq a => [a] -> [a] -> Bool,,Eqa[]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.  isSuffixOf isSuffixOf ::  ByteString ->  ByteString -> Bool-- 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..  isSubsetOf isSubsetOf ::  Ord a => Set a -> Set a -> Bool//OrdaSetaSetaBoolzO(n+m). Is this a subset? (s1 isSubsetOf s2) tells whether s1 is a subset of s2.  isSubsetOf isSubsetOf :: IntSet -> IntSet -> Bool00IntSetIntSetBoolzO(n+m). Is this a subset? (s1 isSubsetOf s2) tells whether s1 is a subset of s2.  isSubmapOfBy  isSubmapOfBy ::  Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> Bool11OrdkabBoolMapkaMapkbBoolO(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)])
 isSubmapOfBy  isSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> Bool55abBoolIntMapaIntMapbBoolO(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)])
 isSubmapOf isSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> Bool699OrdkEqaMapkaMapkaBooldO(n+m). This function is defined as (isSubmapOf = isSubmapOfBy (==)).  isSubmapOf isSubmapOf :: Eq a => IntMap a -> IntMap a -> Bool3::EqaIntMapaIntMapaBooleO(n+m). Is this a submap? Defined as (isSubmapOf = isSubmapOfBy (==)). IsStringclass IsString a:mClass for string-like datastructures; used by the overloaded string extension (-foverloaded-strings in GHC). :isSpaceisSpace :: Char -> Bool;;CharBool{Selects white-space characters in the Latin-1 range. (In Unicode terms, this includes spaces and some control characters.) isSignedisSigned ::  Bits a => a -> Boolt<]<BitsaaBool: isSeparator isSeparator :: Char -> Bool<<CharBool0Selects Unicode space and separator characters. : isPunctuation isPunctuation :: Char -> Boold=U=CharBooldSelects Unicode punctuation characters, including various kinds of connectors, brackets and quotes. isProperSubsetOfisProperSubsetOf ::  Ord a => Set a -> Set a -> Boolc><>OrdaSetaSetaBoolFO(n+m). Is this a proper subset? (ie. a subset but not equal). isProperSubsetOfisProperSubsetOf :: IntSet -> IntSet -> Bool/??IntSetIntSetBoolFO(n+m). Is this a proper subset? (ie. a subset but not equal). isProperSubmapOfBy isProperSubmapOfBy ::  Ord k => (a -> b -> Bool) -> Map k a -> Map k b -> BoolH@ @OrdkabBoolMapkaMapkbBool*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)])
isProperSubmapOfBy isProperSubmapOfBy :: (a -> b -> Bool) -> IntMap a -> IntMap b -> Bool4DDabBoolIntMapaIntMapbBool*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)])
isProperSubmapOfisProperSubmapOf :: (Ord k, Eq a) => Map k a -> Map k a -> BoolHGOrdkEqaMapkaMapkaBoolO(n+m). Is this a proper submap? (ie. a submap but not equal). Defined as (isProperSubmapOf = isProperSubmapOfBy (==)). isProperSubmapOfisProperSubmapOf :: Eq a => IntMap a -> IntMap a -> BoolOI#IEqaIntMapaIntMapaBoolO(log n). Retrieves the maximal key of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. O(log n). Retrieves the minimal key of the map, and the map stripped from that element. fails (in the monad) when passed an empty map. O(log n). Delete and find the maximal element. O(log n). Delete and find the minimal element. O(log n). The minimal key of the map. O(log n). The maximal key of the map. O(log n). Delete the minimal key. O(log n). Delete the maximal key. O(n+m). Is this a proper submap? (ie. a submap but not equal). Defined as (isProperSubmapOf = isProperSubmapOfBy (==)). :isPrintisPrint :: Char -> BoolLzLCharBoolaSelects printable Unicode characters (letters, numbers, marks, punctuation, symbols and spaces). A isPrefixOf isPrefixOf :: Eq a => [a] -> [a] -> BoolqMMMEqa[]a[]aBooluThe isPrefixOf function takes two lists and returns True iff the first list is a prefix of the second.  isPrefixOf isPrefixOf ::  ByteString ->  ByteString -> BoolpNON ByteString ByteStringBoolO(n) The isPrefixOf function takes two ByteStrings and returns True iff the first is a prefix of the second. : isOctDigit isOctDigit :: Char -> BoolNO?OCharBool=Selects ASCII octal digits, i.e. '0'..'7'. :isNumberisNumber :: Char -> BoolOOCharBool`Selects Unicode numeric characters, including digits from various scripts, Roman numerals, etc.   isNothing isNothing :: Maybe a -> BoolPPMaybeaBoolVThe isNothing function returns True iff its argument is Nothing. :isMarkisMark :: Char -> BoolPQAQCharBoolbSelects Unicode mark characters, e.g. accents and the like, which combine with preceding letters. :isLowerisLower :: Char -> BoolRQCharBool<Selects lower-case alphabetic Unicode characters (letters). :isLetterisLetter :: Char -> BoolRRCharBoolSelects 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 -> BoolSSCharBoolxSelects the first 256 characters of the Unicode character set, corresponding to the ISO 8859-1 (Latin-1) character set.  isJustisJust :: Maybe a -> BoolTuTMaybeaBool`The isJust function returns True iff its argument is of the form Just _. A isInfixOf isInfixOf :: Eq a => [a] -> [a] -> BooloUKUEqa[]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
 isInfixOf isInfixOf ::  ByteString ->  ByteString -> BoolWV ByteString ByteStringBoolCheck whether one string is a substring of another. isInfixOf p s is equivalent to not (null (findSubstrings p s)). : isHexDigit isHexDigit :: Char -> BoolWWCharBool{Selects ASCII hexadecimal digits, i.e. '0'..'9', 'a'..'f', 'A'..'F'. isEOFisEOF :: IO BoolXXIOBoolgThe computation isEOF is identical to hIsEOF, except that it works only on stdin. :isDigitisDigit :: Char -> BooloY`YCharBool7Selects ASCII digits, i.e. '0'..'9'. isCurrentThreadBoundisCurrentThreadBound :: IO BoolZYIOBoolReturns 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[ZCharBooldSelects control characters, which are the non-printing characters of the Latin-1 subset of Unicode. ZIsCharclass 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|]m]CharBooliSelects the first 128 characters of the Unicode character set, corresponding to the ASCII character set. f isAnyVersion isAnyVersion ::  VersionRange -> BoolU^>^ VersionRangeBool: 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 -> 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.isLetter. wIRIXIRIX :: OSaaOS4IORefdata IORef a8a*A mutable variable in the IO monad IOModedata IOModea% IOExceptiondata  IOExceptionaExceptions 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. % IOException IOException ::  IOException ->  Exceptioncb IOException ExceptionuThese are the standard IO exceptions generated by Haskell's IO operations. See also System.IO.Error. %ioErrorsioErrors ::  Exception ->  Maybe IOErrorcc ExceptionMaybeIOError%ioErrorioError :: IOError -> IO aMd8dIOErrorIOa0Raise an IOError in the IO monad. IOdata IO adA 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. xintToVerbosityintToVerbosity :: Int -> Maybe VerbosityggIntMaybe Verbosity: intToDigit intToDigit :: Int -> Char hgIntCharConvert 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. IntSetdata IntSethA set of integers. K intPtrToPtr intPtrToPtr :: IntPtr -> Ptr asi^iIntPtrPtra+casts an IntPtr to a Ptr KIntPtrdata IntPtriRA signed integral type that can be losslessly converted to and from Ptr. IntMapdata IntMap aRj(A map of integers to values a. A intersperse intersperse :: a -> [a] -> [a]jja[]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"
 intersperse intersperse :: Word8 ->  ByteString ->  ByteString:llWord8 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. fIntersectVersionRangesIntersectVersionRanges ::  VersionRange ->  VersionRange ->  VersionRangemm VersionRange VersionRange VersionRangeintersectionWithKey intersectionWithKey ::  Ord k => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k cnnnOrdkkabcMapkaMapkbMapkcyO(n+m). Intersection with a combining function. Intersection is more efficient on (bigset intersection smallset) intersectionWithKey :: Ord k => (k -> a -> b -> c) -> Map k a -> Map k b -> Map k c intersectionWithKey f Tip t = Tip intersectionWithKey f t Tip = Tip intersectionWithKey f t1 t2 = intersectWithKey f t1 t2 intersectWithKey f Tip t = Tip intersectWithKey f t Tip = Tip intersectWithKey f t (Bin _ kx x l r) = case found of Nothing -> merge tl tr Just y -> join kx (f kx y x) tl tr where (lt,found,gt) = splitLookup kx t tl = intersectWithKey f lt l tr = intersectWithKey f gt r intersectionWithKey intersectionWithKey :: (Key -> a -> b -> a) -> IntMap a -> IntMap b -> IntMap aqqKeyabaIntMapaIntMapbIntMapa;O(n+m). The intersection with a combining function. intersectionWith intersectionWith ::  Ord k =>  (a -> b -> c) -> Map k a -> Map k b -> Map k c srOrdkabcMapkaMapkbMapkc7O(n+m). Intersection with a combining function. intersectionWith intersectionWith ::  (a -> b -> a) -> IntMap a -> IntMap b -> IntMap atsabaIntMapaIntMapbIntMapa;O(n+m). The intersection with a combining function.  intersection intersection ::  Ord a => Set a -> Set a -> Set attOrdaSetaSetaSetaO(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]).  intersection intersection ::  Ord k => Map k a -> Map k b -> Map k a'wvOrdkMapkaMapkbMapkaO(n+m). Intersection of two maps. The values in the first map are returned, i.e. (intersection m1 m2 == intersectionWith const m1 m2).  intersection intersection :: IntSet -> IntSet -> IntSetUx:xIntSetIntSetIntSet-O(n+m). The intersection of two sets.  intersection intersection :: IntMap a -> IntMap b -> IntMap ayxIntMapaIntMapbIntMapaKO(n+m). The (left-biased) intersection of two maps (based on keys). A intersectBy  intersectBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]zyaaBool[]a[]a[]aSThe intersectBy function is the non-overloaded version of intersect. A intersect intersect :: Eq a => [a] -> [a] -> [a]zzEqa[]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. A intercalate intercalate :: [a] -> [[a]] -> [a]|s|[]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.  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. interactinteract :: (String -> String) -> IO ()D%StringStringIO()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. interactinteract :: (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.  Int8data Int88-bit signed integer type  Int64data Int64B64-bit signed integer type  Int32data Int3232-bit signed integer type  Int16data Int16Ԃ16-bit signed integer type !IntInt :: Integer -> LexemeG3IntegerLexemeInteger literal  Intdata IntA fixed-precision integer type with at least the range [-2^29 .. 2^29-1]. The exact range for a given implementation can be determined by using Prelude.minBound and Prelude.maxBound from the Prelude.Bounded class. linstHookinstHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  InstallFlags -> IO ()i UserHooksPackageDescriptionLocalBuildInfo UserHooks InstallFlagsIO()>Over-ride this hook to get different behavior during install. tinstallIncludesinstallIncludes ::  BuildInfo ->  [FilePath]'  BuildInfo[]FilePath%.h files to install with the package nInstalledPackageInfo_data InstalledPackageInfo_ mnInstalledPackageInfotype InstalledPackageInfo = InstalledPackageInfo_ String nInstalledPackageInfo<InstalledPackageInfo :: PackageIdentifier -> License -> String -> String -> String -> String -> String -> String -> String ->  String ->  Bool ->  [m] ->  [m] ->  [FilePath] ->  [FilePath] -> [String] -> [String] -> [String] ->  [FilePath] -> [String] -> [PackageIdentifier] -> [String] -> [String] -> [String] ->  [FilePath] -> [String] ->  [FilePath] ->  [FilePath] -> InstalledPackageInfo_ mPackageIdentifierLicenseStringStringStringStringStringStringStringStringBool[]m[]m[]FilePath[]FilePath[]String[]String[]String[]FilePath[]String[]PackageIdentifier[]String[]String[]String[]FilePath[]String[]FilePath[]FilePathInstalledPackageInfo_minsertWithKey' insertWithKey' ::  Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k aOrdkkaaakaMapkaMapkaNSame as insertWithKey, but the combining function is applied strictly.  insertWithKey  insertWithKey ::  Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> Map k aٌOrdkkaaakaMapkaMapkafO(log n). 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 the pair (key,f key new_value old_value). Note that the key passed to f is the same key passed to insertWithKey.  insertWithKey  insertWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> IntMap aFKeyaaaKeyaIntMapaIntMapa O(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.  insertWith'  insertWith' ::  Ord k =>  (a -> a -> a) -> k -> a -> Map k a -> Map k aOrdkaaakaMapkaMapkaKSame as insertWith, but the combining function is applied strictly.  insertWith  insertWith ::  Ord k =>  (a -> a -> a) -> k -> a -> Map k a -> Map k a-OrdkaaakaMapkaMapkaO(log n). 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 the pair (key, f new_value old_value).  insertWith  insertWith ::  (a -> a -> a) -> Key -> a -> IntMap a -> IntMap aɓaaaKeyaIntMapaIntMapaO(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. insertLookupWithKey insertLookupWithKey ::  Ord k => (k -> a -> a -> a) -> k -> a -> Map k a -> (Maybe a, Map k a)OrdkkaaakaMapka(,)MaybeaMapkaO(log n). 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). insertLookupWithKey insertLookupWithKey :: (Key -> a -> a -> a) -> Key -> a -> IntMap a -> (Maybe a, IntMap a)ۗKeyaaaKeyaIntMapa(,)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). AinsertBy insertBy :: (a -> a -> Ordering) -> a -> [a] -> [a]d:aaOrderinga[]a[]a-The non-overloaded version of insert. insertinsert ::  Ord a => a -> Set a -> Set aOrdaaSetaSetaO(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. insert insert ::  Ord k => k -> a -> Map k a -> Map k a>OrdkkaMapkaMapkaO(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, i.e. insert is equivalent to insertWith const. Ainsertinsert ::  Ord a => a -> [a] -> [a]Ordaa[]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. insertinsert :: Int -> IntSet -> IntSetjIntIntSetIntSetO(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. insert insert :: Key -> a -> IntMap a -> IntMap aKeyaIntMapaIntMapaO(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 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. BinRangeinRange :: Ix a => (a, a) -> a -> Bool;Ixa(,)aaaBoolInrInr :: b -> :+: a bzb:+:abInlInl :: a -> :+: a bߣ̣a:+:abAinitsinits :: [a] -> [[a]]="[]a[][]aThe inits function returns all initial segments of the argument, shortest first. For example,
inits "abc" == ["","a","ab","abc"]
initsinits ::  ByteString ->  [ByteString]E$ ByteString[] ByteStringXO(n) Return all initial segments of the given ByteString, shortest first. : InitialQuote InitialQuote :: GeneralCategoryGeneralCategoryPi: Punctuation, Initial quote Ainitinit :: [a] -> [a]nY[]a[]a^Return all the elements of a list except the last one. The list must be finite and non-empty. initinit ::  ByteString ->  ByteString4 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. %IndexOutOfBoundsIndexOutOfBounds :: String -> ArrayExceptionD)StringArrayExceptionCAn attempt was made to index an array outside its declared bounds. indexindex :: Seq a -> Int -> aרSeqaIntaAO(log(min(i,n-i))). The element at the specified position Bindexindex :: Ix a => (a, a) -> a -> IntIxa(,)aaaIntindexindex ::  ByteString -> Int -> Word8 ByteStringIntWord8KO(1) ByteString index (subscript) operator, starting from 0. indegreeindegree :: Graph ->  Table IntͪGraphTableInt.A table of the count of edges into each node.  incSourceLine incSourceLine ::  SourcePos -> Line ->  SourcePosh SourcePosLine SourcePos1Increments the line number of a source position. incSourceColumnincSourceColumn ::  SourcePos -> Column ->  SourcePosL+ SourcePosColumn SourcePos3Increments the column number of a source position. iIncoherentInstancesIncoherentInstances ::  Extension߬Ӭ Extensiontincludesincludes ::  BuildInfo ->  [FilePath]Q3 BuildInfo[]FilePath(The .h files to be found in includeDirs nincludesincludes :: InstalledPackageInfo_ m -> [String]٭InstalledPackageInfo_m[]Stringt includeDirs includeDirs ::  BuildInfo ->  [FilePath]~` BuildInfo[]FilePathdirectories to find .h files n includeDirs includeDirs :: InstalledPackageInfo_ m ->  [FilePath]2InstalledPackageInfo_m[]FilePathn importDirs importDirs :: InstalledPackageInfo_ m ->  [FilePath]ǯInstalledPackageInfo_m[]FilePathiImplicitParamsImplicitParams ::  Extension ExtensiontImplImpl :: CompilerFlavor ->  VersionRange -> ConfVarCompilerFlavor VersionRangeConfVar;imagPartimagPart :: RealFloat a =>  Complex a -> a+ RealFloataComplexaa1Extracts the imaginary part of a complex number. o ignoreUnrec ignoreUnrec :: UnrecFieldParser aUnrecFieldParseraA default unrecognized field parser which silently (i.e. no warnings will be generated) ignores unrecognized fields, by returning the structure being built unmodified. oIfBlock IfBlock :: LineNo -> String -> [Field] -> [Field] -> FieldLineNoString[]Field[]FieldFieldA conditional block with an optional else branch:

if condition {
  field*
} else {
  field*
}
!IdentIdent :: String -> LexemeStringLexeme4Haskell identifier, e.g. foo, Baz 5idid :: a -> aofaaIdentity function. wIA64IA64 :: ArchArchwI386I386 :: ArchArch hWaitForInput hWaitForInput :: Handle -> Int -> IO BooluYHandleIntIOBoolComputation 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. n hugsOptions hugsOptions :: InstalledPackageInfo_ m -> [String]InstalledPackageInfo_m[]StringeHugsHugs :: CompilerFlavorCompilerFlavorhTellhTell :: Handle ->  IO Integer`FHandleIOIntegert hsSourceDirs hsSourceDirs ::  BuildInfo ->  [FilePath]ڹ BuildInfo[]FilePath/where to look for the haskell module hierarchy n hsLibraries hsLibraries :: InstalledPackageInfo_ m -> [String]oInstalledPackageInfo_m[]StringhShowhShow :: Handle ->  IO StringHandleIOStringhShow is in the IO monad, and gives more comprehensive output than the (pure) instance of Show for Handle. hSetPosnhSetPosn ::  HandlePosn -> IO ()ֻ 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:  hSetFileSize hSetFileSize :: Handle -> Integer -> IO ()ʽHandleIntegerIO()|hSetFileSize hdl size truncates the physical file with handle hdl to size bytes. hSetEchohSetEcho :: Handle -> Bool -> IO ()HandleBoolIO()<Set the echoing status of a handle connected to a terminal.  hSetBuffering hSetBuffering :: Handle ->  BufferMode -> IO ()eHandle 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.
hSetBinaryModehSetBinaryMode :: Handle -> Bool -> IO ()~cHandleBoolIO()qSelect binary mode (True) or text mode (False) on a open handle. (See also openBinaryFile.) hSeek 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: l hscolourHook hscolourHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HscolourFlags -> IO ()! UserHooksPackageDescriptionLocalBuildInfo UserHooks HscolourFlagsIO()?Over-ride this hook to get different behavior during hscolour. hReadyhReady :: Handle -> IO BoolHandleIOBoolComputation 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.
wHPUXHPUX :: OSOS hPutStrLn hPutStrLn :: Handle -> String -> IO ()bEHandleStringIO():The same as hPutStr, but adds a newline character.  hPutStrLn hPutStrLn :: Handle ->  ByteString -> IO ()!Handle ByteStringIO()9Write a ByteString to a handle, appending a newline byte hPutStrhPutStr :: Handle -> String -> IO ()HandleStringIO().Computation hPutStr hdl s writes the string s to the file or channel managed by hdl. This operation may fail with: hPutStrhPutStr :: Handle ->  ByteString -> IO ()aHandle ByteStringIO()/A synonym for hPut, for compatibility hPutCharhPutChar :: 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: hPutBufNonBlocking hPutBufNonBlocking :: Handle -> Ptr a -> Int -> IO IntG"HandlePtraIntIOInthPutBuf hPutBuf :: Handle -> Ptr a -> Int -> IO ()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).
hPuthPut :: Handle ->  ByteString -> IO ()Handle ByteStringIO()<Outputs a ByteString to the specified Handle. Z HPrintfTypeclass  HPrintfType tThe HPrintfType class provides the variable argument magic for hPrintf. Its implementation is intentionally not visible from this module. ZhPrintfhPrintf :: HPrintfType r => Handle -> String -> r HPrintfTyperHandleStringrSimilar to printf, except that output is via the specified Handle. The return type is restricted to (IO a). hPrinthPrint ::  Show a => Handle -> a -> IO ()ShowaHandleaIO()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.
wHppaHppa :: ArchArchlhookedProgramshookedPrograms ::  UserHooks ->  [Program] UserHooks[]ProgramfThese programs are detected at configure time. Arguments for them are added to the configure command. lhookedPreProcessorshookedPreProcessors ::  UserHooks -> [PPSuffixHandler] UserHooks[]PPSuffixHandlerHCustom preprocessors in addition to and overriding knownSuffixHandlers. tHookedBuildInfotype HookedBuildInfo+ = (Maybe BuildInfo, [(String, BuildInfo)])thomepagehomepage :: PackageDescription -> String.PackageDescriptionStringnhomepagehomepage :: InstalledPackageInfo_ m -> StringInstalledPackageInfo_mString hLookAhead hLookAhead :: Handle -> IO CharHandleIOCharComputation 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:  hIsWritable hIsWritable :: Handle -> IO BoolxHandleIOBoolhIsTerminalDevicehIsTerminalDevice :: Handle -> IO BoolHandleIOBool'Is the handle connected to a terminal?  hIsSeekable hIsSeekable :: Handle -> IO BoolHandleIOBool hIsReadable hIsReadable :: Handle -> IO BoolHandleIOBoolhIsOpenhIsOpen :: Handle -> IO BoolfOHandleIOBoolhIsEOFhIsEOF :: Handle -> IO BoolHandleIOBoolyFor 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.  hIsClosed hIsClosed :: Handle -> IO BoolHandleIOBooln hiddenModules hiddenModules :: InstalledPackageInfo_ m -> [m]4 InstalledPackageInfo_m[]mhGetPosnhGetPosn :: Handle ->  IO HandlePosnHandleIO HandlePosnComputation hGetPosn hdl returns the current I/O position of hdl as a value of the abstract type HandlePosn. hGetNonBlockinghGetNonBlocking :: Handle -> Int ->  IO ByteStringHandleIntIO 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. hGetLinehGetLine :: Handle ->  IO StringHandleIOStringComputation 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. hGetLinehGetLine :: Handle ->  IO ByteStringHandleIO ByteStringRead a line from a handle hGetEchohGetEcho :: Handle -> IO BoolhQHandleIOBool<Get the echoing status of a handle connected to a terminal.  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:  hGetContents hGetContents :: Handle ->  IO ByteStringH+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. hGetCharhGetChar :: 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: hGetBufNonBlocking hGetBufNonBlocking :: Handle -> Ptr a -> Int -> IO IntDHandlePtraIntIOInthGetBufNonBlocking 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.  hGetBuffering hGetBuffering :: Handle ->  IO BufferModeL/HandleIO BufferModecComputation hGetBuffering hdl returns the current buffering mode for hdl. hGetBuf hGetBuf :: Handle -> Ptr a -> Int -> IO Int?HandlePtraIntIOInthGetBuf 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. hGethGet :: 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. hFlushhFlush :: 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.
 hFileSize hFileSize :: Handle ->  IO IntegerT:HandleIOIntegerFor a handle hdl which attached to a physical file, hFileSize hdl returns the size of that file in 8-bit bytes. i HereDocuments HereDocuments ::  Extension1% ExtensioneHeliumHelium :: CompilerFlavorpCompilerFlavor% 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.
Aheadhead :: [a] -> a8)[]aa>Extract the first element of a list, which must be non-empty. headhead ::  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. t hcOptions hcOptions :: CompilerFlavor ->  BuildInfo -> [String]CompilerFlavor BuildInfo[]String2Select options for a particular Haskell compiler. hClosehClose :: Handle -> IO ()xHandleIO()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. eHBCHBC :: CompilerFlavorCompilerFlavor> HasResolutionclass  HasResolution athasLibshasLibs :: PackageDescription -> BoolePackageDescriptionBool&does this package have any libraries? ' 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 -> Int32VDStringInt32=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 -> Int32IntInt32A 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 thasExeshasExes :: PackageDescription -> Bool  PackageDescriptionBool(does this package have any executables?  HandlePosndata  HandlePosna % handleJust  handleJust :: (Exception -> Maybe b) ->  (b -> IO a) -> IO a -> IO a#   ExceptionMaybebbIOaIOaIOaUA version of catchJust with the arguments swapped around (see handle). %handlehandle :: (Exception -> IO a) -> IO a -> IO a   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)) $
   ...
Handledata 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. nhaddockInterfaceshaddockInterfaces :: InstalledPackageInfo_ m ->  [FilePath]InstalledPackageInfo_m[]FilePathn haddockHTMLs haddockHTMLs :: InstalledPackageInfo_ m ->  [FilePath]InstalledPackageInfo_m[]FilePathl haddockHook haddockHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  HaddockFlags -> IO ()q UserHooksPackageDescriptionLocalBuildInfo UserHooks HaddockFlagsIO()>Over-ride this hook to get different behavior during haddock. guardguard :: MonadPlus m => Bool -> m ()xV MonadPlusmBoolm()guard b is return () if b is True, and mzero if b is False. CGTGT :: Ordering7,OrderingAgroupBygroupBy :: (a -> a -> Bool) -> [a] -> [[a]]aaBool[]a[][]aKThe groupBy function is the non-overloaded version of group. groupBygroupBy :: (Word8 -> Word8 -> Bool) ->  ByteString ->  [ByteString]Word8Word8Bool ByteString[] ByteStringKThe groupBy function is the non-overloaded version of group. Agroupgroup :: Eq a => [a] -> [[a]]xTEqa[]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. groupgroup ::  ByteString ->  [ByteString]rQ 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 (==) graphFromEdges'graphFromEdges' ::  Ord key => [(node, key, [key])] -> %(Graph, Vertex -> (node, key, [key]))2 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. graphFromEdgesgraphFromEdges ::  Ord key => [(node, key, [key])] -> :(Graph, Vertex -> (node, key, [key]), key -> Maybe Vertex)"!Ordkey[](,,)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. Graphtype Graph = Table [Vertex]7#YAdjacency list representation of a graph, mapping each vertex to its list of successors. rGPLGPL :: License##License<GNU Public License. Source code must accompany alterations. pGPLGPL :: LicenseD$:$License<GNU Public License. Source code must accompany alterations. tghcSharedOptionsghcSharedOptions ::  BuildInfo -> [String]$$ BuildInfo[]StringtghcProfOptionsghcProfOptions ::  BuildInfo -> [String]x%\% BuildInfo[]StringeGHCGHC :: CompilerFlavor%%CompilerFlavor( getZipList getZipList ::  ZipList a -> [a]-&&ZipLista[]agetUserDocumentsDirectorygetUserDocumentsDirectory ::  IO FilePath&&IOFilePathReturns 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: %getUncaughtExceptionHandlergetUncaughtExceptionHandler :: IO (Exception -> IO ()) **IO ExceptionIO()getTemporaryDirectorygetTemporaryDirectory ::  IO FilePath*z*IOFilePathReturns 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. +getSumgetSum :: Sum a -> a}-m-Sumaa getStdRandom getStdRandom :: (StdGen -> (a, StdGen)) -> IO a .-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 StdGen/~/IOStdGen)Gets the global random number generator. T getProgName getProgName ::  IO String 0/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. + getProduct getProduct ::  Product a -> a#22ProductaagetProcessExitCodegetProcessExitCode ::  ProcessHandle -> IO (Maybe ExitCode)22 ProcessHandleIOMaybeExitCodeThis is a non-blocking version of waitForProcess. If the process is still running, Nothing is returned. If the process has exited, then Just e is returned where e is the exit code of the process. Subsequent calls to getProcessExitStatus always return Just ExitSuccess, regardless of what the original exit code was. getPermissionsgetPermissions :: FilePath -> IO Permissions44FilePathIO Permissions+The getPermissions operation returns the permissions for the file or directory. The operation may fail with: getModificationTimegetModificationTime :: FilePath ->  IO ClockTime}6_6FilePathIO ClockTimeLThe getModificationTime operation returns the clock time at which the file or directory was last modified. The operation may fail with: getLinegetLine ::  IO String88IOStringSRead a line from the standard input device (same as hGetLine stdin). getLinegetLine ::  IO ByteString88IO ByteStringRead a line from stdin. +getLastgetLast :: Last a -> Maybe a899LastaMaybeagetHomeDirectorygetHomeDirectory ::  IO FilePath99IOFilePathReturns 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: +getFirstgetFirst :: First a -> Maybe a<<FirstaMaybeaTgetEnvironmentgetEnvironment :: IO [(String, String)]P=,=IO[](,)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. TgetEnvgetEnv :: String ->  IO String>>StringIOStringComputation 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.
+getDualgetDual :: Dual a -> a??DualaagetDirectoryContentsgetDirectoryContents :: FilePath ->  IO [FilePath]{@X@FilePathIO[]FilePath(getDirectoryContents dir returns a list of all entries in dir. The operation may fail with: getCurrentDirectorygetCurrentDirectory ::  IO FilePath DCIOFilePathIf 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: S getCPUTime getCPUTime ::  IO IntegerZGJGIOIntegerComputation getCPUTime returns the number of picoseconds CPU time used by the current program. The precision of this result is implementation-dependent.  getContents getContents ::  IO StringMH>HIOStringThe getContents operation returns all user input as a single string, which is read lazily as it is needed (same as hGetContents stdin).  getContents getContents ::  IO ByteStringEI2IIO ByteStringgetContents. Read stdin strictly. Equivalent to hGetContents stdin The Handle is closed after the contents have been read. (getConstgetConst ::  Const a b -> a'JJConstabagetChargetChar :: IO CharnJaJIOCharXRead a character from the standard input device (same as hGetChar stdin). TgetArgsgetArgs ::  IO [String]KKIO[]StringtComputation getArgs returns a list of the program's command line arguments (not including the program name). getAppUserDataDirectorygetAppUserDataDirectory :: String ->  IO FilePathLKStringIOFilePathReturns 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: +getAnygetAny :: Any -> Bool(PPAnyBool+getAllgetAll :: All -> BoolzPlPAllBoolgenRangegenRange :: RandomGen g => g ->  (Int, Int)PP RandomGengg(,)IntInttgenPackageFlagsgenPackageFlags :: GenericPackageDescription -> [Flag]QjQGenericPackageDescription[]FlagA genericTake genericTake :: Integral i => i -> [a] -> [a]#RQIntegralii[]a[]aThe genericTake function is an overloaded version of take, which accepts any Integral value as the number of elements to take. AgenericSplitAtgenericSplitAt :: Integral i => i -> [b] ->  ([b], [b])cS,SIntegralii[]b(,)[]b[]bThe genericSplitAt function is an overloaded version of splitAt, which accepts any Integral value as the position at which to split. iGenericsGenerics ::  ExtensionGT;T ExtensionAgenericReplicategenericReplicate :: Integral i => i -> a -> [a]TTIntegraliia[]aThe genericReplicate function is an overloaded version of replicate, which accepts any Integral value as the number of repetitions to make. tGenericPackageDescription GenericPackageDescription :: PackageDescription -> [Flag] -> -Maybe (CondTree ConfVar [Dependency] Library) -> 4[(String, CondTree ConfVar [Dependency] Executable)] -> GenericPackageDescriptionQWVPackageDescription[]FlagMaybeCondTreeConfVar[] DependencyLibrary[](,)StringCondTreeConfVar[] Dependency ExecutableGenericPackageDescriptiontGenericPackageDescriptiondata GenericPackageDescriptionWA genericLength genericLength ::  Num i => [b] -> iXWNumi[]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. A genericIndex genericIndex :: Integral a => [b] -> a -> bYkYIntegrala[]bab~The genericIndex function is an overloaded version of !!, which accepts any Integral value as the index. A genericDrop genericDrop :: Integral i => i -> [a] -> [a]ZrZIntegralii[]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 -> a[[IntStdGenGenaaiGeneralizedNewtypeDerivingGeneralizedNewtypeDeriving ::  Extension \\ Extension:generalCategorygeneralCategory :: Char -> GeneralCategory\\CharGeneralCategory/The Unicode general category of the character. :GeneralCategorydata GeneralCategory ]uUnicode General Categories (column 2 of the UnicodeData table) in the order they are listed in the Unicode standard. Gendata Gen a] gcast2gcast2 :: (Typeable2 t, Typeable2 t') =>  c (t a b) -> Maybe (c (t' a b))s^%^ Typeable2t Typeable2t'ctabMaybect'abCast for * -> * -> *  gcast1gcast1 :: (Typeable1 t, Typeable1 t') => c (t a) -> Maybe (c (t' a))I__ Typeable1t Typeable1t'ctaMaybect'aCast for * -> *  gcastgcast :: (Typeable a, Typeable b) => c a ->  Maybe (c b)__TypeableaTypeablebcaMaybecb9A flexible variation parameterised in a type constructor iGADTsGADTs ::  Extensionx`l` Extension  funResultTy funResultTy :: TypeRep -> TypeRep ->  Maybe TypeRep a`TypeRepTypeRepMaybeTypeRepApplies 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. KFunPtrdata FunPtr a.bA 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 fKiCThe 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. iFunctionalDependenciesFunctionalDependencies ::  Extensionjj Extensionfstfst :: (a, b) -> aEk2k(,)aba'Extract the first component of a pair.  fromString fromString :: IsString a => String -> akkIsStringaStringao FromString FromString :: String ->  Maybe LineNo -> PErrorplLlStringMaybeLineNoPErrorn FromString FromString :: String ->  Maybe LineNo -> PErrorllStringMaybeLineNoPError  fromMaybe fromMaybe :: a -> Maybe a -> ajmUmaMaybeaaThe 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. fromListWithKeyfromListWithKey ::  Ord k => (k -> a -> a -> a) -> [(k, a)] -> Map k annOrdkkaaa[](,)kaMapka}O(n*log n). Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey. fromListWithKeyfromListWithKey :: (Key -> a -> a -> a) ->  [(Key, a)] -> IntMap a2poKeyaaa[](,)KeyaIntMapazO(n*min(n,W)). Build a map from a list of key/value pairs with a combining function. See also fromAscListWithKey'.  fromListWith fromListWith ::  Ord k =>  (a -> a -> a) -> [(k, a)] -> Map k a^q&qOrdkaaa[](,)kaMapkazO(n*log n). Build a map from a list of key/value pairs with a combining function. See also fromAscListWith.  fromListWith fromListWith ::  (a -> a -> a) ->  [(Key, a)] -> IntMap a|rLraaa[](,)KeyaIntMapa~O(n*min(n,W)). Create a map from a list of key/value pairs with a combining function. See also fromAscListWith. fromListfromList ::  Ord a => [a] -> Set alsLsOrda[]aSeta9O(n*log n). Create a set from a list of elements. fromListfromList :: [a] -> Seq ats[]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. fromListfromList ::  Ord k => [(k, a)] -> Map k aKuuOrdk[](,)kaMapka\O(n*log n). Build a map from a list of key/value pairs. See also fromAscList. fromListfromList :: [Int] -> IntSet vu[]IntIntSet<O(n*min(n,W)). Create a set from a list of integers. fromListfromList ::  [(Key, a)] -> IntMap avv[](,)KeyaIntMapaCO(n*min(n,W)). Create a map from a list of key/value pairs. @fromListfromList ::  Eq key => (key -> Int32) ->  [(key, val)] -> IO (HashTable key val)wwEqkeykeyInt32[](,)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 -> axxMaybeaa~The fromJust function extracts the element out of a Just and throws an error if its argument is Nothing.  fromDynamic fromDynamic :: Typeable a => Dynamic -> Maybe ayyTypeableaDynamicMaybeasConverts a Dynamic object back into an ordinary Haskell value of the correct type. See also fromDyn. fromDynfromDyn :: Typeable a => Dynamic -> a -> azzTypeableaDynamicaawConverts a Dynamic object back into an ordinary Haskell value of the correct type. See also fromDynamic. fromDistinctAscListfromDistinctAscList :: [a] -> Set a{|{[]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. fromDistinctAscListfromDistinctAscList :: [(k, a)] -> Map k a||[](,)kaMapka}O(n). Build a map from an ascending list of distinct elements in linear time. The precondition is not checked. fromDistinctAscListfromDistinctAscList :: [Int] -> IntSet}}[]IntIntSetOO(n*min(n,W)). Build a set from an ascending list of distinct elements. fromDistinctAscListfromDistinctAscList ::  [(Key, a)] -> IntMap a~h~[](,)KeyaIntMapayO(n*min(n,W)). Build a map from a list of key/value pairs where the keys are in ascending order and all distinct. fromAscListWithKeyfromAscListWithKey :: Eq k => (k -> a -> a -> a) -> [(k, a)] -> Map k aEqkkaaa[](,)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. fromAscListWithKeyfromAscListWithKey :: (Key -> a -> a -> a) ->  [(Key, a)] -> IntMap a1Keyaaa[](,)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. fromAscListWithfromAscListWith :: Eq k =>  (a -> a -> a) -> [(k, a)] -> Map k axAEqkaaa[](,)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. fromAscListWithfromAscListWith ::  (a -> a -> a) ->  [(Key, a)] -> IntMap a̓aaa[](,)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.  fromAscList fromAscList :: Eq a => [a] -> Set aԄEqa[]aSetaO(n). Build a set from an ascending list in linear time. The precondition (input list is ascending) is not checked.  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 fromAscList :: [Int] -> IntSetʆ[]IntIntSetFO(n*min(n,W)). Build a set from an ascending list of elements.  fromAscList fromAscList ::  [(Key, a)] -> IntMap ai[](,)KeyaIntMapahO(n*min(n,W)). Build a map from a list of key/value pairs where the keys are in ascending order.  frequency frequency :: [(Int, Gen a)] -> Gen auL[](,)IntGenaGenatfreeVarsfreeVars :: CondTree ConfVar c a ->  [FlagName]ԈCondTreeConfVarca[]FlagName2 freeStablePtr freeStablePtr ::  StablePtr a -> IO ()z] 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. KfreeHaskellFunPtrfreeHaskellFunPtr :: FunPtr a -> IO ()ۋFunPtraIO()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. wFreeBSDFreeBSD :: OS72OSt frameworks frameworks ::  BuildInfo -> [String] BuildInfo[]String support frameworks for Mac OS X n frameworks frameworks :: InstalledPackageInfo_ m -> [String]Z-InstalledPackageInfo_m[]Stringn frameworkDirs frameworkDirs :: InstalledPackageInfo_ m ->  [FilePath]ƎInstalledPackageInfo_m[]FilePathfourfour ::  Monad m => m a -> m (a, a, a, a){JMonadmmam(,,,)aaaa:FormatFormat :: GeneralCategory͏GeneralCategoryCf: Other, Format ?forM_forM_ :: (Foldable t, Monad m) => t a ->  (a -> m b) -> m ()PFoldabletMonadmtaambm()9forM_ is mapM_ with its arguments flipped. forM_forM_ ::  Monad m => [a] ->  (a -> m b) -> m ()V(Monadm[]aambm()8forM_ is mapM_ with its arguments flipped HforMforM :: (Traversable t, Monad m) => t a ->  (a -> m b) -> m (t b)F 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 forkOSforkOS :: IO () ->  IO ThreadIdIO()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 uses operating system-supplied multithreading support to create a new operating system thread. The new thread is bound, which means that all foreign calls made by the IO computation are guaranteed to be executed in this new operating system thread; also, the operating system thread is not used for any other foreign calls. This means that you can use all kinds of foreign libraries from this thread (even those that rely on thread-local state), without the limitations of forkIO. Just to clarify, forkOS is only necessary if you need to associate a Haskell thread with a particular OS thread. It is not necessary if you only need to make non-blocking foreign calls (see Control.Concurrent#osthreads). Neither is it necessary if you want to run threads in parallel on a multiprocessor: threads created with forkIO will be shared out amongst the running CPUs (using GHC, -threaded, and the +RTS -N runtime option). forkIOforkIO :: IO () ->  IO ThreadIdIO()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). foreverforever ::  Monad m => m a -> m ()šMonadmmam();forever act repeats the action infinitely. Foresttype Forest a = [Tree a]<L ForeignPtrdata  ForeignPtr av`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. iForeignFunctionInterfaceForeignFunctionInterface ::  Extension@4 ExtensionforAllforAll :: (Show a, Testable b) => Gen a -> (a -> b) -> PropertyShowaTestablebGenaabProperty?for_for_ :: (Foldable t, Applicative f) => t a ->  (a -> f b) -> f ()dFoldablet Applicativeftaafbf()<for_ is traverse_ with its arguments flipped. Hforfor :: "(Traversable t, Applicative f) => t a ->  (a -> f b) -> f (t b)[ Traversablet Applicativeftaafbftb:for is traverse with its arguments flipped.  foldWithKey  foldWithKey :: (k -> a -> b -> b) -> b -> Map k a -> b|XkabbbMapkabO(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
 foldWithKey  foldWithKey :: (Key -> a -> b -> b) -> b -> IntMap a -> bݣKeyabbbIntMapabO(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
?foldrM foldrM :: (Foldable t, Monad m) => (a -> b -> m b) -> b -> t a -> m bkFoldabletMonadmabmbbtambbMonadic fold over the elements of a structure, associating to the right, i.e. from right to left. foldr1'foldr1' :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8Word8Word8Word8 ByteStringWord8L'foldr1\'' is a variant of foldr1, but is strict in the accumulator. Afoldr1foldr1 ::  (a -> a -> a) -> [a] -> anTaaa[]aa}foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty lists. ?foldr1foldr1 :: Foldable t =>  (a -> a -> a) -> t a -> a{SFoldabletaaataafoldr1foldr1 :: (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. ?foldr' foldr' :: Foldable t =>  (a -> b -> b) -> b -> t a -> bWFoldabletabbbtabOFold over the elements of a structure, associating to the right, but strictly. foldr' foldr' :: (Word8 -> a -> a) -> a ->  ByteString -> agCWord8aaa ByteStringa?'foldr\'' is like foldr, but strict in the accumulator. Afoldr 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)...)
?foldr foldr :: Foldable t =>  (a -> b -> b) -> b -> t a -> bέFoldabletabbbtabfoldr foldr :: (Word8 -> a -> a) -> a ->  ByteString -> ab>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. HfoldMapDefaultfoldMapDefault :: (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. ?foldMapfoldMap :: (Foldable t, Monoid m) => (a -> m) -> t a -> m߰FoldabletMonoidmamtamfoldM_ foldM_ ::  Monad m => (a -> b -> m a) -> a -> [b] -> m ()VMonadmabmaa[]bm(),Like foldM, but discards the result. foldM foldM ::  Monad m => (a -> b -> m a) -> a -> [b] -> m a]*Monadmabmaa[]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. ?foldlM 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. Afoldl1'foldl1' ::  (a -> a -> a) -> [a] -> aʵaaa[]aa"A strict version of foldl1 foldl1'foldl1' :: (Word8 -> Word8 -> Word8) ->  ByteString -> Word8_Word8Word8Word8 ByteStringWord8'foldl1\'' is like foldl1, but strict in the accumulator. An exception will be thrown in the case of an empty ByteString. Afoldl1foldl1 ::  (a -> a -> a) -> [a] -> agaaa[]aa}foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty lists. ?foldl1foldl1 :: Foldable t =>  (a -> a -> a) -> t a -> afFoldabletaaataafoldl1foldl1 :: (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. An exception will be thrown in the case of an empty ByteString. Afoldl' foldl' ::  (a -> b -> a) -> a -> [b] -> aabaa[]ba"A strict version of foldl. ?foldl' foldl' :: Foldable t =>  (a -> b -> a) -> a -> t b -> a_4FoldabletabaatbaNFold over the elements of a structure, associating to the left, but strictly. foldl' foldl' :: (a -> Word8 -> a) -> a ->  ByteString -> aCaWord8aa ByteStringa'foldl\'' is like foldl, but strict in the accumulator. However, for ByteStrings, all left folds are strict in the accumulator. Afoldl foldl ::  (a -> b -> a) -> a -> [b] -> aL/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. ?foldl foldl :: Foldable t =>  (a -> b -> a) -> a -> t b -> aFoldabletabaatbafoldl foldl :: (a -> Word8 -> a) -> a ->  ByteString -> aaWord8aa 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. ?Foldableclass 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. fold fold ::  (a -> b -> b) -> b -> Set a -> b<abbbSetabFO(n). Fold over the elements of a set in an unspecified order. fold fold ::  (a -> b -> b) -> b -> Map k a -> b abbbMapkabO(n). Fold the values in the map, such that fold f z == Prelude.foldr f z . elems. For example,
elems map = fold (:) [] map
fold fold :: (Int -> b -> b) -> b -> IntSet -> b8IntbbbIntSetbO(n). Fold over the elements of a set in an unspecified order.
sum set   == fold (+) 0 set
elems set == fold (:) [] set
fold fold ::  (a -> b -> b) -> b -> IntMap a -> bN-abbbIntMapabO(n). Fold the values in the map, such that fold f z == Prelude.foldr f z . elems. For example,
elems map = fold (:) [] map
?foldfold :: (Foldable t, Monoid m) => t m -> mwMFoldabletMonoidmtmmofNamefName :: Field -> StringFieldStringH fmapDefault fmapDefault :: Traversable t => (a -> b) -> t a -> t bnA TraversabletabtatbSThis function may be used as a value for fmap in a Functor instance. fmapfmap ::  Functor f => (a -> b) -> f a -> f bJ!Functorfabfafb5flip flip ::  (a -> b -> c) -> b -> a -> cabcbac[flip f takes its (first) two arguments in the reverse order of f. iFlexibleInstancesFlexibleInstances ::  Extensionym ExtensioniFlexibleContextsFlexibleContexts ::  Extension Extension flattenSCCs flattenSCCs :: [SCC a] -> [a]@$[]SCCa[]a9The vertices of a list of strongly connected components.  flattenSCC flattenSCC ::  SCC vertex -> [vertex]SCCvertex[]vertex0The vertices of a strongly connected component. flattenflatten :: Tree a -> [a]hTreea[]a%The elements of a tree in pre-order. xflagToVerbosityflagToVerbosity :: ReadE Verbosity ReadE VerbositytflagNameflagName :: Flag -> FlagNamekXFlagFlagNametFlagNameFlagName :: String -> FlagNameStringFlagNametFlagNamenewtype FlagNameCA FlagName is the name of a user-defined configuration flag tflagDescriptionflagDescription :: Flag -> StringFlagStringt flagDefault flagDefault :: Flag -> BoolFlagBooltFlagAssignmenttype FlagAssignment = [(FlagName, Bool)]hA FlagAssignment is a total or partial mapping of FlagNames to Bool flag values. It represents the flags chosen by the user or discovered during configuration. For example --flags=foo --flags=-bar becomes [(foo, True), (bar, False)] tFlagFlag :: FlagName -> ConfVarFlagNameConfVartFlagdata FlagA flag can represent a feature to be included, or a way of linking a target against its dependencies, or in fact whatever you can think of. fixIOfixIO ::  (a -> IO a) -> IO aaIOaIOa>Fixeddata Fixed a05fixfix :: (a -> a) -> a~paaafix f is the least fixed point of the function f, i.e. the least defined x such that f x = x. )firstfirst ::  Arrow a => a b c -> a (b, d) (c, d)aArrowaabca(,)bd(,)cd+FirstFirst :: Maybe a -> First aMaybeaFirsta+Firstnewtype First a17Maybe monoid returning the leftmost non-Nothing value. findWithDefault findWithDefault ::  Ord k => a -> k -> Map k a -> aOrdkakMapkaaO(log n). The expression (findWithDefault def k map) returns the value at key k or returns def when the key is not in the map. findWithDefault findWithDefault :: a -> Key -> IntMap a -> a<!aKeyIntMapaaO(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. findSubstringsfindSubstrings ::  ByteString ->  ByteString -> [Int]d ByteString ByteString[]IntVFind the indexes of all (possibly overlapping) occurances of a substring in a string.  findSubstring findSubstring ::  ByteString ->  ByteString ->  Maybe Int}T 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). findMinfindMin :: Set a -> a}Setaa/O(log n). The minimal element of a set. findMinfindMin :: Map k a -> (k, a)%Mapka(,)ka-O(log n). The minimal key of the map. findMinfindMin :: IntSet -> IntIntSetInt2O(min(n,W)). The minimal element of a set. findMaxfindMax :: Set a -> a1!Setaa/O(log n). The maximal element of a set. findMaxfindMax :: Map k a -> (k, a)Mapka(,)ka-O(log n). The maximal key of the map. findMaxfindMax :: IntSet -> IntN>IntSetInt2O(min(n,W)). The maximal element of a set. A 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.  findIndices findIndices :: (Word8 -> Bool) ->  ByteString -> [Int]3 Word8Bool ByteString[]IntThe findIndices function extends findIndex, by returning the indices of all elements satisfying the predicate, in ascending order.  findIndex findIndex ::  Ord k => k -> Map k a -> IntI'OrdkkMapkaIntO(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. A 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.  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. findExecutablefindExecutable :: 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. Afindfind ::  (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. ?findfind :: 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. findfind :: (Word8 -> Bool) ->  ByteString ->  Maybe Word8-Word8Bool 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 %finallyfinally :: IO a -> IO b -> IO a%IOaIObIOaRA specialised variant of bracket with just a computation to run afterward. L 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. LFinalizerEnvPtrtype FinalizerEnvPtr env a% = FunPtr (Ptr env -> Ptr a -> IO ())LfinalizeForeignPtrfinalizeForeignPtr ::  ForeignPtr a -> IO ()j ForeignPtraIO()OCauses the finalizers associated with a foreign pointer to be run immediately.  filterWithKey filterWithKey ::  Ord k => (k -> a -> Bool) -> Map k a -> Map k aUOrdkkaBoolMapkaMapka@O(n). Filter all keys/values that satisfy the predicate.  filterWithKey filterWithKey :: (Key -> a -> Bool) -> IntMap a -> IntMap apCKeyaBoolIntMapaIntMapaAO(n). Filter all keys/values that satisfy some predicate. filterMfilterM ::  Monad m =>  (a -> m Bool) -> [a] -> m [a]RMonadmamBool[]am[]a8This generalizes the list-based filter function. filterfilter ::  Ord a =>  (a -> Bool) -> Set a -> Set aOrdaaBoolSetaSeta=O(n). Filter all elements that satisfy the predicate. filterfilter ::  Ord k =>  (a -> Bool) -> Map k a -> Map k aOrdkaBoolMapkaMapka;O(n). Filter all values that satisfy the predicate. Afilterfilter ::  (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]
filterfilter ::  (Int -> Bool) -> IntSet -> IntSetIntBoolIntSetIntSet>O(n). Filter all elements that satisfy some predicate. filterfilter ::  (a -> Bool) -> IntMap a -> IntMap azaBoolIntMapaIntMapa<O(n). Filter all values that satisfy some predicate. filterfilter :: (Word8 -> Bool) ->  ByteString ->  ByteStringtJWord8Bool 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. FilePathtype FilePath = StringnFile 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. ofieldSet fieldSet ::  FieldDescr a -> LineNo -> String -> a ->  ParseResult a  FieldDescraLineNoStringa ParseResultafieldSet n str x Parses the field value from the given input string str and stores the result in x if the parse was successful. Otherwise, reports an error on line number n. tfieldSet fieldSet ::  FieldDescr a -> LineNo -> String -> a ->  ParseResult af FieldDescraLineNoStringa ParseResultafieldSet n str x Parses the field value from the given input string str and stores the result in x if the parse was successful. Otherwise, reports an error on line number n. o fieldName fieldName ::  FieldDescr a -> String FieldDescraStringt fieldName fieldName ::  FieldDescr a -> StringS7 FieldDescraStringofieldGetfieldGet ::  FieldDescr a -> a -> Doc FieldDescraaDoctfieldGetfieldGet ::  FieldDescr a -> a -> DocE) FieldDescraaDoco FieldDescr FieldDescr :: String -> a -> Doc -> LineNo -> String -> a ->  ParseResult a ->  FieldDescr aKStringaDocLineNoStringa ParseResulta FieldDescrao FieldDescrdata  FieldDescr adField descriptor. The parameter a parameterizes over where the field's value is stored in. t FieldDescr FieldDescr :: String -> a -> Doc -> LineNo -> String -> a ->  ParseResult a ->  FieldDescr aStringaDocLineNoStringa ParseResulta FieldDescrat FieldDescrdata  FieldDescr a)dField descriptor. The parameter a parameterizes over where the field's value is stored in. ofield field :: String ->  (a -> Doc) ->  ReadP a a ->  FieldDescr a:StringaDocReadPaa FieldDescraoFielddata Fieldh9FalseFalse :: BoolBool| failReadE failReadE :: ErrorMsg -> ReadE a ErrorMsgReadEafailfail ::  Monad m => String -> m ayZMonadmStringmaoF F :: LineNo -> String -> String -> FieldLineNoStringStringField8A regular property>: <value field t extraTmpFiles extraTmpFiles :: PackageDescription ->  [FilePath]PackageDescription[]FilePatht extraSrcFiles extraSrcFiles :: PackageDescription ->  [FilePath]Q*PackageDescription[]FilePatht extraLibs extraLibs ::  BuildInfo -> [String] BuildInfo[]StringLwhat libraries to link with when compiling a program that uses your package nextraLibrariesextraLibraries :: InstalledPackageInfo_ m -> [String]yInstalledPackageInfo_m[]Stringt extraLibDirs extraLibDirs ::  BuildInfo -> [String] BuildInfo[]StringnextraGHCiLibrariesextraGHCiLibraries :: InstalledPackageInfo_ m -> [String]InstalledPackageInfo_m[]Stringt extensions extensions ::  BuildInfo ->  [Extension]5 BuildInfo[] Extensioni Extensiondata  ExtensionkThis represents language extensions beyond Haskell 98 that are supported by some implementations, usually in some special mode. iExtensibleRecordsExtensibleRecords ::  ExtensionG; ExtensioniExtendedDefaultRulesExtendedDefaultRules ::  Extension ExtensiontexposedModulesexposedModules :: Library -> [String]Library[]StringnexposedModulesexposedModules :: InstalledPackageInfo_ m -> [m]InstalledPackageInfo_m[]mnexposedexposed :: InstalledPackageInfo_ m -> Bool-InstalledPackageInfo_mBoolUexitWithexitWith :: ExitCode -> IO azExitCodeIOaComputation 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. U ExitSuccess ExitSuccess :: ExitCode z ExitCode"indicates successful termination; U exitFailure exitFailure :: IO a  IOaThe computation exitFailure is equivalent to exitWith (ExitFailure exitfail), where exitfail is implementation-dependent. U 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). % ExitException ExitException :: ExitCode ->  Exception;#ExitCode 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. UExitCodedata ExitCodeiExistentialQuantificationExistentialQuantification ::  Extension  ExtensiontexeNameexeName ::  Executable -> StringpY ExecutableStringt exeModules exeModules :: PackageDescription -> [String]PackageDescription[]String7Get all the module names from the exes in this package t executables executables :: PackageDescription ->  [Executable]PackageDescription[] Executable executable executable ::  Permissions -> Bool#  PermissionsBoolt Executable  Executable :: String -> FilePath ->  BuildInfo ->  ExecutableStringFilePath BuildInfo Executablet Executabledata  Executable% 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.Exception#DynamicExceptions). evaluateevaluate :: Testable a => a ->  Gen ResultTestableaaGenResult%evaluateevaluate :: a -> IO a7(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
errorPoserrorPos ::  ParseError ->  SourcePos ParseError SourcePos2Extracts the source position from the parse error % errorCalls errorCalls ::  Exception ->  Maybe StringyZ ExceptionMaybeString% ErrorCall ErrorCall :: String ->  ExceptionString ExceptionThe ErrorCall exception is thrown by error. The String argument of ErrorCall is the string passed to error when it was called. =Eqclass Eq a?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 /=. CEQEQ :: Ordering)Ordering!EOFEOF :: LexemecZLexeme+EndoEndo :: a -> a -> Endo aaaEndoa+Endonewtype Endo a/The monoid of endomorphisms under composition. : EnclosingMark EnclosingMark :: GeneralCategoryrGeneralCategoryMe: Mark, Enclosing lemptyUserHooksemptyUserHooks ::  UserHooks UserHooks)Empty UserHooks which do nothing. EmptyREmptyR :: ViewR a\OViewRaempty sequence temptyPackageDescriptionemptyPackageDescription :: PackageDescriptionPackageDescriptiont emptyLibrary emptyLibrary :: Library3)LibraryEmptyLEmptyL :: ViewL axkViewLaempty sequence nemptyInstalledPackageInfoemptyInstalledPackageInfo :: InstalledPackageInfo_ mInstalledPackageInfo_mtemptyHookedBuildInfoemptyHookedBuildInfo :: HookedBuildInfonHookedBuildInfotemptyExecutableemptyExecutable ::  Executable ExecutableiEmptyDataDeclsEmptyDataDecls ::  Extension0 $  ExtensiontemptyBuildInfoemptyBuildInfo ::  BuildInfo z  BuildInfoemptyempty :: Set a  SetaO(1). The empty set. emptyempty :: Seq a !!Seqa!O(1). The empty sequence. emptyempty :: Map k a!w!MapkaO(1). The empty map. emptyempty :: IntSet!!IntSetO(1). The empty set. emptyempty :: IntMap a@"2"IntMapaO(1). The empty map. emptyempty ::  ByteString"" ByteString(O(1) The empty ByteString (emptyempty :: Alternative f => f a(# # Alternativeffaelemselems :: Set a -> [a]#k#Seta[]a$O(n). The elements of a set. elemselems :: Map k a -> [a]$#Mapka[]aRO(n). Return all elements of the map in the ascending order of their keys. elemselems :: IntSet -> [Int]$$IntSet[]IntMO(n). The elements of a set. (For sets, this is equivalent to toList) elemselems :: IntMap a -> [a]]%D%IntMapa[]aRO(n). Return all elements of the map in the ascending order of their keys. A elemIndices elemIndices :: Eq a => a -> [a] -> [Int]6&&Eqaa[]a[]IntThe elemIndices function extends elemIndex, by returning the indices of all elements equal to the query element, in ascending order.  elemIndices elemIndices :: Word8 ->  ByteString -> [Int]Q'0'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).  elemIndexEnd elemIndexEnd :: Word8 ->  ByteString ->  Maybe Int((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)
A elemIndex elemIndex :: Eq a => a -> [a] ->  Maybe Intb*<*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.  elemIndex elemIndex :: Word8 ->  ByteString ->  Maybe Int++Word8 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 a,,[]aGenaelemAtelemAt :: Int -> Map k a -> (k, a)i-G-IntMapka(,)kahO(log n). Retrieve an element by index. Calls error when an invalid index is used. Aelemelem :: Eq a => a -> [a] -> BoolD.&.Eqaa[]aBoolielem is the list membership predicate, usually written in infix form, e.g., x `elem` xs. ?elemelem :: (Foldable t, Eq a) => a -> t a -> Bool  ByteString -> Bool//Word8 ByteStringBoolGO(n) elem is the ByteString membership predicate. $either either :: (a -> c) -> (b -> c) ->  Either a b -> c00acbcEitherabcCase 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 b1The 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"). edgesedges :: Graph -> [Edge]33Graph[]EdgeAll edges of a graph. Edgetype Edge = (Vertex, Vertex)$4-An edge from the first vertex to the second. fEarlierVersionEarlierVersion :: Version ->  VersionRange44Version VersionRange>E6data E64>E12data E125 dynTypeRep dynTypeRep :: Dynamic -> TypeRep5p5DynamicTypeRep% dynExceptions dynExceptions ::  Exception ->  Maybe Dynamic65 ExceptionMaybeDynamic% DynException DynException :: Dynamic ->  Exceptionv6_6Dynamic ExceptionnDynamically typed exceptions (see section on Dynamic Exceptions: Control.Exception#DynamicExceptions). dynApplydynApply :: Dynamic -> Dynamic ->  Maybe Dynamics7L7DynamicDynamicMaybeDynamicdynAppdynApp :: Dynamic -> Dynamic -> Dynamic77DynamicDynamicDynamicDynamicdata Dynamic!8A 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. +DualDual :: a -> Dual a::aDuala+Dualnewtype Dual aC:LThe dual of a monoid, obtained by swapping the arguments of mappend. A 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]
 dropWhile dropWhile :: (Word8 -> Bool) ->  ByteString ->  ByteString<n<Word8Bool ByteString ByteStringbdropWhile p xs returns the suffix remaining after takeWhile p xs. dropdrop :: Int -> Seq a -> Seq ah=L=IntSeqaSeqaNO(log(min(i,n-i))). Elements of a sequence after the first i. Adropdrop :: 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. dropdrop :: Int ->  ByteString ->  ByteString<@@Int ByteString ByteStringO(1) drop n xs returns the suffix of xs after the first n elements, or [] if n > length xs. drawTreedrawTree ::  Tree String -> StringJA/ATreeStringString&Neat 2-dimensional drawing of a tree.  drawForest drawForest ::  Forest String -> StringAAForestStringString(Neat 2-dimensional drawing of a forest.  doesFileExist doesFileExist :: FilePath -> IO BoolBgBFilePathIOBoolThe operation doesFileExist returns True if the argument file exists and is not a directory, and False otherwise. doesDirectoryExistdoesDirectoryExist :: FilePath -> IO BoolCkCFilePathIOBoolThe operation doesDirectoryExist returns True if the argument file exists and is a directory, and False otherwise. >divMod'divMod' :: (Real a, Integral b) => a -> a -> (b, a)DwDRealaIntegralbaa(,)ba8generalisation of divMod to any instance of Real % DivideByZero DivideByZero :: ArithException;E*EArithException>div'div' :: (Real a, Integral b) => a -> a -> bEERealaIntegralbaab5generalisation of div to any instance of Real gdisplaydisplay ::  Text a => a -> String_FFFTextaaStringgdispdisp ::  Text a => a -> DocFFTextaaDociDisambiguateRecordFieldsDisambiguateRecordFields ::  Extension&GG Extension: digitToInt digitToInt :: Char -> IntGrGCharInt 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'). differenceWithKey differenceWithKey ::  Ord k => (k -> a -> b -> Maybe a) -> Map k a -> Map k b -> Map k aIAIOrdkkabMaybeaMapkaMapkbMapkaO(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. differenceWithKey differenceWithKey :: (Key -> a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap aLKKeyabMaybeaIntMapaIntMapbIntMapaDO(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. differenceWith differenceWith ::  Ord k => (a -> b -> Maybe a) -> Map k a -> Map k b -> Map k a2NMOrdkabMaybeaMapkaMapkbMapkaO(n+m). Difference with a combining function. The implementation uses an efficient hedge algorithm comparable with hedge-union. differenceWith differenceWith :: (a -> b -> Maybe a) -> IntMap a -> IntMap b -> IntMap aOWOabMaybeaIntMapaIntMapbIntMapa5O(n+m). Difference with a combining function.  difference difference ::  Ord a => Set a -> Set a -> Set a^P3POrdaSetaSetaSetaO(n+m). Difference of two sets. The implementation uses an efficient hedge algorithm comparable with hedge-union.  difference difference ::  Ord k => Map k a -> Map k b -> Map k aQTQOrdkMapkaMapkbMapkaO(n+m). Difference of two maps. The implementation uses an efficient hedge algorithm comparable with hedge-union.  difference difference :: IntSet -> IntSet -> IntSetRrRIntSetIntSetIntSet,O(n+m). Difference between two sets.  difference difference :: IntMap a -> IntMap b -> IntMap aLS"SIntMapaIntMapbIntMapa<O(n+m). Difference between two maps (based on keys). dfsdfs :: Graph -> [Vertex] ->  Forest VertexTSGraph[]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. dffdff :: Graph ->  Forest Vertex%U UGraphForestVertexA spanning forest of the graph, obtained from a depth-first search of the graph starting from each vertex in an unspecified order. t description description :: PackageDescription -> String&VVPackageDescriptionString+A more verbose description of this package n description description :: InstalledPackageInfo_ m -> StringVVInstalledPackageInfo_mStringtdescCabalVersiondescCabalVersion :: PackageDescription ->  VersionRangepWKWPackageDescription VersionRangeHIf this package depends on a specific version of Cabal, give that here. iDeriveDataTypeableDeriveDataTypeable ::  ExtensionX X Extension2deRefStablePtrdeRefStablePtr ::  StablePtr a -> IO aXrX 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. qdependsdepends :: PackageFixedDeps pkg => pkg -> [PackageIdentifier]PZZPackageFixedDepspkgpkg[]PackageIdentifierndependsdepends :: InstalledPackageInfo_ m -> [PackageIdentifier]ZZInstalledPackageInfo_m[]PackageIdentifierq Dependency Dependency :: String ->  VersionRange ->  Dependency[^[String VersionRange Dependencyq Dependencydata  Dependency[%DenormalDenormal :: ArithException\[ArithExceptionD denominator denominator :: Integral a => Ratio a -> a\l\IntegralaRatioaaExtract the denominator of the ratio in reduced form: the numerator and denominator have no common factor and the denominator is positive.  deleteMin deleteMin :: Set a -> Set a|]e]SetaSeta-O(log n). Delete the minimal element.  deleteMin deleteMin :: Map k a -> Map k a^]MapkaMapka)O(log n). Delete the minimal key.  deleteMin deleteMin :: IntSet -> IntSet^^IntSetIntSet0O(min(n,W)). Delete the minimal element.  deleteMax deleteMax :: Set a -> Set a6__SetaSeta-O(log n). Delete the maximal element.  deleteMax deleteMax :: Map k a -> Map k a__MapkaMapka)O(log n). Delete the maximal key.  deleteMax deleteMax :: IntSet -> IntSet\`I`IntSetIntSet0O(min(n,W)). Delete the maximal element. AdeleteFirstsBy deleteFirstsBy :: (a -> a -> Bool) -> [a] -> [a] -> [a]6a aaaBool[]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.  deleteFindMin deleteFindMin :: Set a ->  (a, Set a)Ub4bSeta(,)aSetauO(log n). Delete and find the minimal element.
deleteFindMin set = (findMin set, deleteMin set)
 deleteFindMin deleteFindMin :: Map k a -> ((k, a), Map k a)^c-cMapka(,)(,)kaMapka6O(log n). Delete and find the minimal element.  deleteFindMin deleteFindMin :: IntSet ->  (Int, IntSet)dcIntSet(,)IntIntSetxO(min(n,W)). Delete and find the minimal element.
deleteFindMin set = (findMin set, deleteMin set)
 deleteFindMax deleteFindMax :: Set a ->  (a, Set a)edSeta(,)aSetauO(log n). Delete and find the maximal element.
deleteFindMax set = (findMax set, deleteMax set)
 deleteFindMax deleteFindMax :: Map k a -> ((k, a), Map k a) feMapka(,)(,)kaMapka6O(log n). Delete and find the maximal element.  deleteFindMax deleteFindMax :: IntSet ->  (Int, IntSet)ffIntSet(,)IntIntSetxO(min(n,W)). Delete and find the maximal element.
deleteFindMax set = (findMax set, deleteMax set)
AdeleteBy deleteBy :: (a -> a -> Bool) -> a -> [a] -> [a]ggaaBoola[]a[]agThe deleteBy function behaves like delete, but takes a user-supplied equality predicate. deleteAtdeleteAt :: Int -> Map k a -> Map k ahhIntMapkaMapkaO(log n). Delete the element at index. Defined as (deleteAt i map = updateAt (k x -> Nothing) i map). deletedelete ::  Ord a => a -> Set a -> Set aiiOrdaaSetaSeta/O(log n). Delete an element from a set. deletedelete ::  Ord k => k -> Map k a -> Map k aj[jOrdkkMapkaMapkaO(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. Adeletedelete :: Eq a => a -> [a] -> [a]k^kEqaa[]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. deletedelete :: Int -> IntSet -> IntSetllIntIntSetIntSethO(min(n,W)). Delete a value in the set. Returns the original set when the value was not present. deletedelete :: Key -> IntMap a -> IntMap ammKeyIntMapaIntMapaO(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. @deletedelete :: HashTable key val -> key -> IO ()nn HashTablekeyvalkeyIO()%Remove an entry from the hash table. ldefaultUserHooksdefaultUserHooks ::  UserHooksboVo UserHooksBasic autoconf UserHooks: Thus configure can use local system information to generate package.buildinfo and possibly other files. ldefaultMainWithHooksArgsdefaultMainWithHooksArgs ::  UserHooks -> [String] -> IO ()qq UserHooks[]StringIO()YA customizable version of defaultMain that also takes the command line arguments. ldefaultMainWithHooksdefaultMainWithHooks ::  UserHooks -> IO ()rr UserHooksIO().A customizable version of defaultMain. ldefaultMainNoReaddefaultMainNoRead :: PackageDescription -> IO ()tsSsPackageDescriptionIO()gLike defaultMain, but accepts the package description as input rather than using IO to read it. rdefaultMainNoReaddefaultMainNoRead :: PackageDescription -> IO ()ftEtPackageDescriptionIO()ldefaultMainArgsdefaultMainArgs :: [String] -> IO ()tt[]StringIO()zA version of defaultMain that is passed the command line arguments, rather than getting them from the environment. rdefaultMainArgsdefaultMainArgs :: [String] -> IO ()uu[]StringIO()l defaultMain defaultMain :: IO ()vvIO()A simple implementation of main for a Cabal setup script. It reads the package description file using IO, and performs the action specified on the command line. r defaultMain defaultMain :: IO ()wwIO()ldefaultHookedPackageDescdefaultHookedPackageDesc :: IO (Maybe FilePath)wvwIOMaybeFilePathPOptional auxiliary package information file (pkgname.buildinfo)  defaultConfig defaultConfig :: Config.x%xConfigedefaultCompilerFlavordefaultCompilerFlavor :: Maybe CompilerFlavorxxMaybeCompilerFlavorThe default compiler flavour to pick when compiling stuff. This defaults to the compiler used to build the Cabal lib. However if it's not a recognised compiler then it's Nothing and the user will have to specify which compiler they want. : DecimalNumber DecimalNumber :: GeneralCategoryzyGeneralCategoryNd: Number, Decimal x deafening deafening ::  VerbosityazUz Verbosity%DeadlockDeadlock ::  Exceptionzz ExceptionThere are no runnable threads, so the program is deadlocked. The Deadlock exception is raised in the main thread only (see also: Control.Concurrent). t dataFiles dataFiles :: PackageDescription ->  [FilePath]{{PackageDescription[]FilePathtdataDirdataDir :: PackageDescription -> FilePathO|.|PackageDescriptionFilePath:DashPunctuationDashPunctuation :: GeneralCategory||GeneralCategoryPd: Punctuation, Dash  CyclicSCC CyclicSCC :: [vertex] ->  SCC vertex>}}[]vertexSCCvertex.A maximal set of mutually reachable vertices. Acyclecycle :: [a] -> [a]}}[]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. tcustomFieldsPDcustomFieldsPD :: PackageDescription -> [(String, String)]~PackageDescription[](,)StringString?Custom fields starting with x-, stored in a simple assoc-list. tcustomFieldsBIcustomFieldsBI ::  BuildInfo -> [(String, String)] BuildInfo[](,)StringString?Custom fields starting with x-, stored in a simple assoc-list. tCustomCustom ::  BuildTypeXL BuildTypeEuses user-supplied Setup.hs or Setup.lhs (default) curry curry ::  ((a, b) -> c) -> a -> b -> c(,)abcabcCcurry converts an uncurried function to a curried function. :CurrencySymbolCurrencySymbol :: GeneralCategoryÁGeneralCategorySc: Symbol, Currency tcSourcescSources ::  BuildInfo ->  [FilePath]J, BuildInfo[]FilePathcreateDirectoryIfMissingcreateDirectoryIfMissing :: 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. createDirectorycreateDirectory :: FilePath -> IO ()6FilePathIO(),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: ScpuTimePrecisioncpuTimePrecision :: 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. t cppOptions cppOptions ::  BuildInfo -> [String]؉ BuildInfo[]String(options for pre-processing Haskell code iCPPCPP ::  Extension@4 Extensioncountcount :: 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. tCOrCOr ::  Condition c ->  Condition c ->  Condition c΋ Conditionc Conditionc Conditionct copyright copyright :: PackageDescription -> String{\PackageDescriptionStringn copyright copyright :: InstalledPackageInfo_ m -> StringیInstalledPackageInfo_mStringlcopyHookcopyHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  CopyFlags -> IO () UserHooksPackageDescriptionLocalBuildInfo UserHooks CopyFlagsIO();Over-ride this hook to get different behavior during copy. copyFilecopyFile :: FilePath -> FilePath -> IO ()ÎFilePathFilePathIO()(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. copycopy ::  ByteString ->  ByteStringS8 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. :ControlControl :: GeneralCategoryёGeneralCategoryCc: Other, Control iConstrainedClassMethodsConstrainedClassMethods ::  ExtensionL@ Extension5constconst :: a -> b -> aabaConstant function. (ConstConst :: a ->  Const a baConstab(Constnewtype Const a bDconscons :: Word8 ->  ByteString ->  ByteStringēWord8 ByteString ByteStringmO(n) cons is analogous to (:) for lists, but of different complexity, as it requires a memcpy. :ConnectorPunctuationConnectorPunctuation :: GeneralCategoryGeneralCategoryPc: Punctuation, Connector ; conjugate conjugate :: RealFloat a =>  Complex a ->  Complex aM RealFloataComplexaComplexatConfVardata ConfVar6A ConfVar represents the variable type used. t Configure Configure ::  BuildType BuildTypecalls Distribution.Simple.defaultMainWithHooks defaultUserHooks, which invokes configure to generate additional build information used by later phases.  configSize configSize :: Config -> Int -> IntConfigIntInt configMaxTest configMaxTest :: Config -> IntqConfigInt configMaxFail configMaxFail :: Config -> Int՗ConfigInt configEvery  configEvery :: Config -> Int -> [String] -> String[ConfigInt[]StringStringConfigConfig :: Int -> Int -> Int -> Int -> Int -> [String] -> String -> Configc)IntIntIntIntInt[]StringStringConfigConfigdata ConfiglconfHook confHook ::  UserHooks -> F(Either GenericPackageDescription PackageDescription, HookedBuildInfo) ->  ConfigFlags -> IO LocalBuildInfoٚW UserHooks(,)EitherGenericPackageDescriptionPackageDescriptionHookedBuildInfo ConfigFlagsIOLocalBuildInfo@Over-ride this hook to get different behavior during configure. t condTreeData condTreeData :: CondTree v c a -> aqCondTreevcaatcondTreeConstraintscondTreeConstraints :: CondTree v c a -> c CondTreevcactcondTreeComponentscondTreeComponents :: CondTree v c a -> 7[(Condition v, CondTree v c a, Maybe (CondTree v c a))]CondTreevca[](,,) ConditionvCondTreevcaMaybeCondTreevcatCondTreedata CondTree v c aJtCondNode CondNode :: a -> c -> 7[(Condition v, CondTree v c a, Maybe (CondTree v c a))] -> CondTree v c aYac[](,,) ConditionvCondTreevcaMaybeCondTreevcaCondTreevcat condLibrary condLibrary :: GenericPackageDescription -> -Maybe (CondTree ConfVar [Dependency] Library)=GenericPackageDescriptionMaybeCondTreeConfVar[] DependencyLibraryt Conditiondata  Condition cu@A boolean expression parameterized over the variable type used. tcondExecutablescondExecutables :: GenericPackageDescription -> 4[(String, CondTree ConfVar [Dependency] Executable)]QGenericPackageDescription[](,)StringCondTreeConfVar[] Dependency ExecutableA concatMap concatMap ::  (a -> [b]) -> [a] -> [b]9a[]b[]a[]b8Map a function over a list and concatenate the results. ? 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.  concatMap concatMap :: (Word8 -> ByteString) ->  ByteString ->  ByteStringWord8 ByteString ByteString ByteStringDMap a function over a ByteString and concatenate the results Aconcatconcat :: [[a]] -> [a][][]a[]aConcatenate a list of lists. ?concatconcat :: Foldable t => t [a] -> [a]M$Foldablett[]a[]a?The concatenation of all the elements of a container of lists. concatconcat ::  [ByteString] ->  ByteStringߤ[] ByteString ByteString/O(n) Concatenate a list of ByteStrings.  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. ;Complexdata RealFloat a => Complex al 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 -> aާBitsaaInta complement complement ::  Bits a => a -> a\HBitsaaaVcompilerVersioncompilerVersion :: VersionVersion`The version of compilerName with which the program was compiled or is being interpreted. V compilerName compilerName :: String\SStringXThe Haskell implementation with which the program was compiled or is being interpreted. e CompilerId CompilerId :: CompilerFlavor -> Version ->  CompilerIdL$CompilerFlavorVersion CompilerIde CompilerIddata  CompilerIdeCompilerFlavordata CompilerFlavorĪC comparing  comparing ::  Ord a => (b -> a) -> b -> b -> Ordering_:OrdababbOrdering
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) ...
Ccomparecompare ::  Ord a => a -> a -> OrderingOrdaaaOrderingocommaListFieldcommaListField :: String ->  (a -> Doc) ->  ReadP [a] a ->  (b -> [a]) -> ([a] -> b -> b) ->  FieldDescr b˭qStringaDocReadP[]aab[]a[]abb FieldDescrbColumntype Column = Intcollectcollect :: (Show a, Testable b) => a -> b -> PropertypShowaTestablebabProperty coarbitrary coarbitrary :: Arbitrary a => a -> Gen b -> Gen b4  ArbitraryaaGenbGenbtCNotCNot ::  Condition c ->  Condition c Conditionc Conditionc:ClosePunctuationClosePunctuation :: GeneralCategory GeneralCategoryPe: Punctuation, Close clearBitclearBit ::  Bits a => a -> Int -> aBitsaaIntal cleanHook cleanHook ::  UserHooks -> PackageDescription -> Maybe LocalBuildInfo ->  UserHooks ->  CleanFlags -> IO ()R UserHooksPackageDescriptionMaybeLocalBuildInfo UserHooks CleanFlagsIO()<Over-ride this hook to get different behavior during clean. classify classify :: Testable a => Bool -> String -> a -> PropertydTestableaBoolStringaProperty;ciscis :: RealFloat a => a ->  Complex a RealFloataaComplexa:chrchr :: Int -> CharQCIntCharAThe Prelude.toEnum method restricted to the type Data.Char.Char. choosechoose ::  Random a => (a, a) -> Gen a Randoma(,)aaGenacheckcheck :: Testable a => Config -> a -> IO ()nTestableaConfigaIO()!CharChar :: Char -> LexemeشCharLexemeCharacter literal :Chardata Char'dThe character type Char is an enumeration whose values represent Unicode (or equivalently ISO/IEC 10646) characters (see http://www.unicode.org/ for details). This set extends the ISO 8859-1 (Latin-1) character set (the first 256 charachers), which is itself an extension of the ASCII character set (the first 128 characters). A character literal in Haskell has type Char. To convert a Char to or from the corresponding Int value defined by Unicode, use Prelude.toEnum and Prelude.fromEnum from the Prelude.Enum class respectively (or equivalently ord and chr). t ccOptions ccOptions ::  BuildInfo -> [String]߷ BuildInfo[]Stringoptions for C compiler n ccOptions ccOptions :: InstalledPackageInfo_ m -> [String]tInstalledPackageInfo_m[]String  catMaybes catMaybes ::  [Maybe a] -> [a][]Maybea[]anThe catMaybes function takes a list of Maybes and returns a list of all the Just values. tcategorycategory :: PackageDescription -> StringչPackageDescriptionStringncategorycategory :: InstalledPackageInfo_ m -> StringyRInstalledPackageInfo_mStringocatchParseErrorcatchParseError ::  ParseResult a -> (PError -> ParseResult a) ->  ParseResult aJ ParseResultaPError ParseResulta ParseResulta% 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. %catchDyncatchDyn :: Typeable exception => IO a -> (exception -> IO a) -> IO a:Typeable 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. %catch catch :: IO a ->  Exception -> IO a -> IO aIOa 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.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 2castStablePtrToPtrcastStablePtrToPtr ::  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. 2castPtrToStablePtrcastPtrToStablePtr :: Ptr () ->  StablePtr a Ptr() 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. KcastPtrToFunPtrcastPtrToFunPtr :: 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. KcastPtrcastPtr :: Ptr a -> Ptr b_HPtraPtrbFThe castPtr function casts a pointer from one type to another. KcastFunPtrToPtrcastFunPtrToPtr :: FunPtr a -> Ptr bFunPtraPtrbCasts 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. K castFunPtr castFunPtr :: FunPtr a -> FunPtr b~FunPtraFunPtrb>Casts a FunPtr to a FunPtr of a different type. LcastForeignPtrcastForeignPtr ::  ForeignPtr a ->  ForeignPtr bc> ForeignPtra ForeignPtrbUThis function casts a ForeignPtr parameterised by one type into another type.  castcast :: (Typeable a, Typeable b) => a -> Maybe bETypeableaTypeablebaMaybebThe type-safe cast operation canonicalizePathcanonicalizePath :: FilePath ->  IO FilePathFilePathIOFilePathtGiven 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. tCAndCAnd ::  Condition c ->  Condition c ->  Condition c Conditionc Conditionc Conditionct cabalVersion cabalVersion :: Version>4Version ByteStringdata  ByteStringvA 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 t buildType buildType :: PackageDescription -> Maybe BuildTypePackageDescriptionMaybe BuildTypet BuildTypedata  BuildType/The type of build system used by this package. t buildTools buildTools ::  BuildInfo ->  [Dependency] BuildInfo[] Dependencytools needed to build this bit wbuildOSbuildOS :: OSOSt buildInfo buildInfo ::  Executable ->  BuildInfomS Executable BuildInfot BuildInfo, BuildInfo :: Bool ->  [Dependency] -> [String] -> [String] -> [String] ->  [Dependency] -> [String] ->  [FilePath] ->  [FilePath] ->  [String] ->  [Extension] ->  [String] ->  [String] ->  [FilePath] ->  [FilePath] ->  [FilePath] -> [(CompilerFlavor, [String])] -> [String] -> [String] -> [(String, String)] ->  BuildInfolBool[] Dependency[]String[]String[]String[] Dependency[]String[]FilePath[]FilePath[]String[] Extension[]String[]String[]FilePath[]FilePath[]FilePath[](,)CompilerFlavor[]String[]String[]String[](,)StringString BuildInfot BuildInfodata  BuildInfol buildHook buildHook ::  UserHooks -> PackageDescription -> LocalBuildInfo ->  UserHooks ->  BuildFlags -> IO () UserHooksPackageDescriptionLocalBuildInfo UserHooks BuildFlagsIO()=Over-ride this hook to gbet different behavior during build. buildGbuildG :: Bounds -> [Edge] -> GraphBounds[]EdgeGraph$Build a graph from a list of edges. t buildDepends buildDepends :: PackageDescription ->  [Dependency]qHPackageDescription[] DependencyebuildCompilerFlavorbuildCompilerFlavor :: CompilerFlavorCompilerFlavorw buildArch buildArch :: ArchArcht buildable buildable ::  BuildInfo -> Boolm BuildInfoBoolcomponent is buildable here  BufferModedata  BufferMode,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. rBSD4BSD4 :: License?5License64-clause BSD license, older, with advertising clause. pBSD4BSD4 :: LicenseLicense64-clause BSD license, older, with advertising clause. rBSD3BSD3 :: License'LicenseG3-clause BSD license, newer, no advertising clause. Very free license. pBSD3BSD3 :: LicenseLicenseG3-clause BSD license, newer, no advertising clause. Very free license. breakSubstringbreakSubstring ::  ByteString ->  ByteString -> (ByteString, ByteString)x 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) 
breakEndbreakEnd :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)TWord8Bool ByteString(,) ByteString ByteStringsbreakEnd behaves like break but from the end of the ByteString breakEnd p == spanEnd (not.p)  breakByte breakByte :: Word8 ->  ByteString -> (ByteString, ByteString)zWord8 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"
Abreakbreak ::  (a -> Bool) -> [a] ->  ([a], [a])1aBool[]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). breakbreak :: (Word8 -> Bool) ->  ByteString -> (ByteString, ByteString)Word8Bool 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
%bracketOnErrorbracketOnError :: IO a -> a -> IO b -> a -> IO c -> IO c~QIOaaIObaIOcIOcqLike bracket, but only performs the final action if there was an exception raised by the in-between computation. %bracket_ bracket_ :: IO a -> IO b -> IO c -> IO cXIOaIObIOcIOc_A variant of bracket where the return value from the first computation is not required. %bracketbracket :: 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
Boundstype Bounds = (Vertex, Vertex)The bounds of a Table. o boolField  boolField :: String ->  (b -> Bool) -> (Bool -> b -> b) ->  FieldDescr b^)StringbBoolBoolbb FieldDescrb9Booldata BoolThe Bool type is an enumeration. It is defined with False first so that the corresponding Prelude.Enum instance will give Prelude.fromEnum False the value zero, and Prelude.fromEnum True the value 1. %BlockedOnDeadMVarBlockedOnDeadMVar ::  Exception 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. %BlockedIndefinitelyBlockedIndefinitely ::  Exception 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. BlockBufferingBlockBuffering ::  Maybe Int ->  BufferModeMaybeInt 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. %blockblock :: IO a -> IO a IOaIOaApplying 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. bitSizebitSize ::  Bits a => a -> IntJ4BitsaaIntBitsclass  Num a => Bits aThe 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 -> agQBitsaIntafbetweenVersionsInclusivebetweenVersionsInclusive :: Version -> Version ->  VersionRangeVersionVersion VersionRangebccbcc :: Graph -> Forest [Vertex]~\GraphForest[]Vertex}The biconnected components of a graph. An undirected graph is biconnected if the deletion of any vertex leaves it connected. i BangPatterns BangPatterns ::  ExtensionMA ExtensionlautoconfUserHooksautoconfUserHooks ::  UserHooks UserHookstauthorauthor :: PackageDescription -> StringPackageDescriptionStringnauthorauthor :: InstalledPackageInfo_ m -> StringwInstalledPackageInfo_mString4atomicModifyIORefatomicModifyIORef :: IORef a ->  (a -> (a, b)) -> IO b?IORefaa(,)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. %asyncExceptionsasyncExceptions ::  Exception -> Maybe AsyncException   ExceptionMaybeAsyncException%AsyncExceptiondata AsyncException Asynchronous exceptions %AsyncExceptionAsyncException :: AsyncException ->  Exception c AsyncException ExceptionsAsynchronous exceptions (see section on Asynchronous Exceptions: Control.Exception#AsynchronousExceptions). ?asumasum :: (Foldable t, Alternative f) => t (f a) -> f a V Foldablet Alternativeftfafa@The sum of a collection of actions, generalizing concat. assocsassocs :: Map k a -> [(k, a)]>  Mapka[](,)kaKO(n). Return all key/value pairs in the map in ascending key order. assocsassocs :: IntMap a ->  [(Key, a)]  IntMapa[](,)KeyaKO(n). Return all key/value pairs in the map in ascending key order. % assertions assertions ::  Exception ->  Maybe String ExceptionMaybeString%AssertionFailedAssertionFailed :: String ->  Exception5String 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. %assertassert :: 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. ) ArrowZeroclass  Arrow a =>  ArrowZero aiArrowsArrows ::  Extension Extension) ArrowPlusclass ArrowZero a =>  ArrowPlus aG) ArrowMonad ArrowMonad :: a () b -> ArrowMonad a ba()b ArrowMonadab) 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. ) 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. ) ArrowChoiceclass  Arrow a =>  ArrowChoice aChoice, 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. ) ArrowApplyclass  Arrow a =>  ArrowApply a^?Some arrows allow application of arrow inputs to other inputs. )Arrowclass Arrow aThe basic arrow class. Any instance must define either arr or pure (which are synonyms), as well as >>> and first. The other combinators have sensible default definitions, which may be overridden for efficiency. %ArrayExceptiondata ArrayException)Exceptions generated by array operations %ArrayExceptionArrayException :: ArrayException ->  ExceptionArrayException ExceptionlExceptions raised by array-related operations. (NOTE: GHC currently does not throw ArrayExceptions). )arrarr ::  Arrow a => (b -> c) -> a b cmArrowabcabcwArmArm :: ArchArch%arithExceptionsarithExceptions ::  Exception -> Maybe ArithExceptionX1 ExceptionMaybeArithException%ArithExceptiondata ArithException"The type of arithmetic exceptions %ArithExceptionArithException :: ArithException ->  Exception<ArithException ExceptionExceptions raised by arithmetic operations. (NOTE: GHC currently does not throw ArithExceptions except for DivideByZero).  arguments arguments :: Result -> [String].Result[]StringlArgstype Args = [String]gVarcharch :: StringString:The machine architecture on which the program is running. wArchdata Arch tArchArch :: Arch -> ConfVar_MArchConfVar arbitrary arbitrary :: Arbitrary a => Gen a ArbitraryaGena Arbitraryclass  Arbitrary aDapproxRationalapproxRational :: RealFrac a => a -> a -> RationaloRealFracaaaRational.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. ( Applicativeclass  Functor f =>  Applicative f "$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. +appEndoappEndo :: Endo a -> a -> a%%Endoaaa AppendMode AppendMode :: IOMode%%IOMode 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]])
 appendFile appendFile :: FilePath ->  ByteString -> IO ()(g(FilePath ByteStringIO()&Append a ByteString to a file. appendappend ::  ByteString ->  ByteString ->  ByteString>)) ByteString ByteString ByteString#O(n) Append two ByteStrings )appapp :: ArrowApply a => a (a b c, b) c)) ArrowApplyaa(,)abcbcapap ::  Monad m =>  m (a -> b) -> m a -> m ba*5*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
f AnyVersion AnyVersion ::  VersionRange++ VersionRangeAanyany ::  (a -> Bool) -> [a] -> Bool,+aBool[]aBoolmApplied to a predicate and a list, any determines if any element of the list satisfies the predicate. ?anyany :: Foldable t =>  (a -> Bool) -> t a -> Bool-,FoldabletaBooltaBoolIDetermines whether any element of the structure satisfies the predicate. anyany :: (Word8 -> Bool) ->  ByteString -> Bool--Word8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, any determines if any element of the ByteString satisfies the predicate. +AnyAny :: Bool -> Any..BoolAny+Anynewtype Any."Boolean monoid under disjunction. Aandand :: [Bool] -> BoolM/8/[]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. ?andand :: Foldable t => t Bool -> Bool0v0FoldablettBoolBooland 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. o AmbigousParse AmbigousParse :: String -> LineNo -> PError11StringLineNoPErrorn AmbigousParse AmbigousParse :: String -> LineNo -> PErrorv2[2StringLineNoPError( Alternativeclass Applicative f =>  Alternative f2"A monoid on applicative functors. alter alter ::  Ord k => (Maybe a -> Maybe a) -> k -> Map k a -> Map k a3e3OrdkMaybeaMaybeakMapkaMapkaO(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) wAlphaAlpha :: Arch54ArchrAllRightsReservedAllRightsReserved :: LicenseZ5P5LicenseDNo rights are granted to others. Undistributable. Most restrictive. pAllRightsReservedAllRightsReserved :: License55LicenseDNo rights are granted to others. Undistributable. Most restrictive. t allBuildInfo allBuildInfo :: PackageDescription ->  [BuildInfo]66PackageDescription[] BuildInfoThe BuildInfo for the library (if there is one and it's buildable) and all the buildable executables. Useful for gathering dependencies. Aallall ::  (a -> Bool) -> [a] -> Bool77aBool[]aBoollApplied to a predicate and a list, all determines if all elements of the list satisfy the predicate. ?allall :: Foldable t =>  (a -> Bool) -> t a -> Bool88FoldabletaBooltaBoolHDetermines whether all elements of the structure satisfy the predicate. allall :: (Word8 -> Bool) ->  ByteString -> Bool9l9Word8Bool ByteStringBoolO(n) Applied to a predicate and a ByteString, all determines if all elements of the ByteString satisfy the predicate. +AllAll :: Bool -> Alln:`:BoolAll+Allnewtype All:"Boolean monoid under conjunction. KalignPtralignPtr :: Ptr a -> Int -> Ptr a3;;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 -> Int<<StorableaaIntwAIXAIX :: OS<<OS adjustWithKey  adjustWithKey ::  Ord k =>  (k -> a -> a) -> k -> Map k a -> Map k a=a=OrdkkaakMapkaMapkazO(log n). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned.  adjustWithKey  adjustWithKey :: (Key -> a -> a) -> Key -> IntMap a -> IntMap a>>KeyaaKeyIntMapaIntMapa}O(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 adjust :: (a -> a) -> Int -> Seq a -> Seq a??aaIntSeqaSeqaHO(log(min(i,n-i))). Update the element at the specified position adjust adjust ::  Ord k => (a -> a) -> k -> Map k a -> Map k a@@OrdkaakMapkaMapkazO(log n). Adjust a value at a specific key. When the key is not a member of the map, the original map is returned. adjust adjust :: (a -> a) -> Key -> IntMap a -> IntMap aAAaaKeyIntMapaIntMapa}O(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. LaddForeignPtrFinalizerEnv addForeignPtrFinalizerEnv :: FinalizerEnvPtr env a -> Ptr env ->  ForeignPtr a -> IO ()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 LaddForeignPtrFinalizeraddForeignPtrFinalizer :: FinalizerPtr a ->  ForeignPtr a -> IO ()DD 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 ()EFF 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.  AcyclicSCC AcyclicSCC :: vertex ->  SCC vertexGwGvertexSCCvertex*A single vertex that is not in any cycle.  AbsoluteSeek AbsoluteSeek :: SeekMode HHSeekMode3the position of hdl is set to i. )^>> (^>>) ::  Arrow a => (b -> c) -> a c d -> a b dHHArrowabcacdabd%Precomposition with a pure function. )^<< (^<<) ::  Arrow a => (c -> d) -> a b c -> a b dI\IArrowacdabcabd>Postcomposition with a pure function (right-to-left variant). \\ (\\) ::  Ord a => Set a -> Set a -> Set aQJ&JOrdaSetaSetaSeta&O(n+m). See difference. \\ (\\) ::  Ord k => Map k a -> Map k b -> Map k aKJOrdkMapkaMapkbMapka&O(n+m). See difference. A\\ (\\) :: Eq a => [a] -> [a] -> [a]KKEqa[]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. \\ (\\) :: IntSet -> IntSet -> IntSetMMIntSetIntSetIntSet&O(n+m). See difference. \\ (\\) :: IntMap a -> IntMap b -> IntMap aLN"NIntMapaIntMapbIntMapa&O(n+m). See difference. )>>^ (>>^) ::  Arrow a => a b c -> (c -> d) -> a b dONArrowaabccdabd&Postcomposition with a pure function. )>>> (>>>) ::  Arrow a => a b c -> a c d -> a b dOOArrowaabcacdabd>>= (>>=) ::  Monad m => m a ->  (a -> m b) -> m bNP"PMonadmmaambmb>> (>>) ::  Monad m => m a -> m b -> m bPPMonadmmambmb>=> (>=>) ::  Monad m =>  (a -> m b) ->  (b -> m c) -> a -> m c|QHQMonadmambbmcamc-Left-to-right Kleisli composition of monads. C>= (>=) ::  Ord a => a -> a -> BoolRQOrdaaaBool>< (><) :: Seq a -> Seq a -> Seq aRnRSeqaSeqaSeqa6O(log(min(n1,n2))). Concatenate two sequences. C> (>) ::  Ord a => a -> a -> Bool2SSOrdaaaBool==> (==>) :: Testable a => Bool -> a -> PropertySSTestableaBoolaProperty=== (==) :: Eq a => a -> a -> Bool(TTEqaaaBool=<< (=<<) ::  Monad m =>  (a -> m b) -> m a -> m bTTMonadmambmamb(<|> (<|>) :: Alternative f => f a -> f a -> f aHUU Alternativeffafafa<| (<|) :: a -> Seq a -> Seq aUUaSeqaSeqa{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 cVVMonadmbmcambamcWRight-to-left Kleisli composition of monads. '(>=>)', with the arguments flipped C<= (<=) ::  Ord a => a -> a -> BoolWWOrdaaaBool)<<^ (<<^) ::  Arrow a => a c d -> (b -> c) -> a b d4XXArrowaacdbcabd=Precomposition with a pure function (right-to-left variant). )<<< (<<<) ::  Arrow a => a c d -> a b c -> a b dYXArrowaacdabcabdARight-to-left composition, for a better fit with arrow notation. )<+> (<+>) :: ArrowPlus a => a b c -> a b c -> a b cYY ArrowPlusaabcabcabc(<*> (<*>) :: Applicative f =>  f (a -> b) -> f a -> f b|ZJZ Applicativeffabfafb(<**> (<**>) :: Applicative f => f a ->  f (a -> b) -> f b[Z Applicativeffafabfb;A variant of <*> with the arguments reversed. (<* (<*) :: Applicative f => f a -> f b -> f a[[ Applicativeffafbfa?Sequence actions, discarding the value of the second argument. (<$> (<$>) ::  Functor f => (a -> b) -> f a -> f b\\FunctorfabfafbA synonym for fmap. (<$ (<$) ::  Functor f => a -> f b -> f aI]%]FunctorfafbfaReplace the value. C< (<) ::  Ord a => a -> a -> Bool]]OrdaaaBool:> (:>) :: Seq a -> a -> ViewR a9^^SeqaaViewRaDthe sequence minus the rightmost element, and the rightmost element :< (:<) :: a -> Seq a -> ViewL a^^aSeqaViewLa.leftmost element and the rest of the sequence :+:data :+: a bI_;:+ (:+) :: a -> a ->  Complex a__aaComplexaKforms a complex number from its real and imaginary rectangular components. :*: (:*:) :: a -> b -> :*: a be`O`ab:*:ab:*:data :*: a b`=/= (/=) :: Eq a => a -> a -> Boola`EqaaaBool.|. (.|.) ::  Bits a => a -> a -> amaVaBitsaaaa.&. (.&.) ::  Bits a => a -> a -> aaaBitsaaaa5. (.) :: (b -> c) -> (a -> b) -> a -> cVb=bbcabac)+++ (+++) :: ArrowChoice a => a b c -> a b' c' -> a (Either b b') (Either c c')-cb ArrowChoiceaabcab'c'aEitherbb'Eithercc'A++ (++) :: [a] -> [a] -> [a]c}c[]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. (*> (*>) :: Applicative f => f a -> f b -> f bed Applicativeffafbfb>Sequence actions, discarding the value of the first argument. )*** (***) ::  Arrow a => a b c -> a b' c' -> a (b, b') (c, c')eeArrowaabcab'c'a(,)bb'(,)cc')&&& (&&&) ::  Arrow a => a b c -> a b c' ->  a b (c, c')fbfArrowaabcabc'ab(,)cc'9&& (&&) :: Bool -> Bool -> BoolgfBoolBoolBoolBoolean "and" D% (%) :: Integral a => a -> a -> Ratio agpgIntegralaaaRatioa5$ ($) :: (a -> b) -> a -> bggababA!! (!!) :: [a] -> Int -> aVhBh[]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. ! (!) ::  Ord k => Map k a -> k -> ahiHiOrdkMapkaka`O(log n). Find the value at a key. Calls error when the element can not be found. ! (!) :: IntMap a -> Key -> a1jjIntMapaKeyacO(min(n,W)). Find the value at a key. Calls error when the element can not be found. || (||) :: Bool -> Bool -> BooljjBoolBoolBool Boolean "or" zipWith3 zipWith3 :: (a -> b -> c -> d) -> [a] -> [b] -> [c] -> [d]kkabcd[]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] mlabc[]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. zip3 zip3 :: [a] -> [b] -> [c] ->  [(a, b, c)]n\n[]a[]b[]c[](,,)abcVzip3 takes three lists and returns a list of triples, analogous to zip. zipzip :: [a] -> [b] -> [(a, b)]`o8o[]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.  writeFile writeFile :: FilePath -> String -> IO ()upVpFilePathStringIO()wThe computation writeFile file str function writes the string str, to the file file. wordswords :: String -> [String]Nq5qString[]String[words breaks a string up into a list of words, which were delimited by white space.  userError userError :: String -> IOError rqStringIOErrorConstruct 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)
unzip3unzip3 ::  [(a, b, c)] -> ([a], [b], [c])sds[](,,)abc(,,)[]a[]b[]cgThe unzip3 function takes a list of triples and returns three lists, analogous to unzip. unzipunzip :: [(a, b)] ->  ([a], [b])tUt[](,)ab(,)[]a[]biunzip transforms a list of pairs into a list of first components and a list of second components. unwordsunwords :: [String] -> StringSu:u[]StringString_unwords is an inverse operation to words. It joins words with separating spaces. until until ::  (a -> Bool) -> (a -> a) -> a -> a6vvaBoolaaaa[until p f yields the result of applying f until p holds. unsafePerformIOunsafePerformIO :: IO a -> avvIOaaThis 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! unlinesunlines :: [String] -> StringX?[]StringStringwunlines is an inverse operation to lines. It joins lines, after appending a terminating newline to each.  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. uncurryuncurry ::  (a -> b -> c) -> (a, b) -> cA#abc(,)abcCuncurry converts a curried function to a function on pairs. truncatetruncate :: (RealFrac a, Integral b) => a -> b RealFracaIntegralbabTrueTrue :: BoolB;Bool toRational toRational ::  Real a => a -> RationalRealaaRational toInteger toInteger :: Integral a => a -> Integer,IntegralaaIntegertoEnumtoEnum ::  Enum a => Int -> awEnumaIntatanhtanh :: Floating a => a -> aփFloatingaaatantan :: Floating a => a -> aM5Floatingaaa 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] == []
taketake :: Int -> [a] -> [a]dJInt[]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. tailtail :: [a] -> [a]mX[]a[]aHExtract the elements after the head of a list, which must be non-empty. sumsum ::  Num a => [a] -> aNuma[]aaFThe sum function computes the sum of a finite list of numbers. succsucc ::  Enum a => a -> aEnumaaasubtractsubtract ::  Num a => a -> a -> a  NumaaaaStringtype String = [Char][gA String is a list of characters. String constants in Haskell are values of type String. sqrtsqrt :: Floating a => a -> a# FloatingaaasplitAtsplitAt :: 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. spanspan ::  (a -> Bool) -> [a] ->  ([a], [a])vaBool[]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) sndsnd :: (a, b) -> b͐(,)abb(Extract the second component of a pair. sinhsinh :: Floating a => a -> aiQFloatingaaasinsin :: Floating a => a -> aȑFloatingaaasignumsignum ::  Num a => a -> a#Numaaa significand significand :: RealFloat a => a -> a{ RealFloataaa showString showString :: String -> ShowSStringShowSjutility function converting a String to a show function that simply prepends the string unchanged.  showsPrec showsPrec ::  Show a => Int -> a -> ShowSߓ“ShowaIntaShowS  showSigned  showSigned ::  Real a => a -> ShowS -> Int -> a -> ShowSaRealaaShowSIntaShowS<Converts a possibly-negative Real value to a string. showsshows ::  Show a => a -> ShowS'ShowaaShowS7equivalent to showsPrec with a precedence of 0. ShowStype ShowS = String -> StringThe 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 -> ShowSؖBoolShowSShowSxutility function that surrounds the inner show function with parentheses when the Bool parameter is True.  showOctshowOct :: Integral a => a -> ShowSIntegralaaShowS<Show non-negative Integral numbers in base 8. showListshowList ::  Show a => [a] -> ShowSlNShowa[]aShowS  showIntAtBase  showIntAtBase :: Integral a => a ->  (Int -> Char) -> a -> ShowSIntegralaaIntCharaShowSShows 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՚IntegralaaShowS=Show non-negative Integral numbers in base 16.   showGFloat showGFloat :: RealFloat a =>  Maybe Int -> a -> ShowS 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 -> ShowSȝ 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 -> ShowS1 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 -> ShowS# 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. showCharshowChar :: Char -> ShowSݢ͢CharShowSkutility function converting a Char to a show function that simply prepends the character unchanged. showshow ::  Show a => a -> StringShowaaStringShowclass Show aڣ.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)".
 sequence_ sequence_ ::  Monad m => [m a] -> m ()_Monadm[]mam()QEvaluate each action in the sequence from left to right, and ignore the results. sequencesequence ::  Monad m => [m a] -> m [a]W,Monadm[]mam[]aREvaluate each action in the sequence from left to right, and collect the results. scanr1scanr1 ::  (a -> a -> a) -> [a] -> [a]%aaa[]a[]aPscanr1 is a variant of scanr that has no starting value argument. scanr scanr ::  (a -> b -> b) -> b -> [a] -> [b]ܮabbb[]a[]buscanr is the right-to-left dual of scanl. Note that
head (scanr f z xs) == foldr f z xs.
scanl1scanl1 ::  (a -> a -> a) -> [a] -> [a]Яaaa[]a[]ascanl1 is a variant of scanl that has no starting value argument:
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.
 scaleFloat scaleFloat :: RealFloat a => Int -> a -> aa RealFloataIntaaroundround :: (RealFrac a, Integral b) => a -> bزRealFracaIntegralbabRightRight :: b ->  Either a b[EbEitherabreversereverse :: [a] -> [a][]a[]amreverse xs returns the elements of xs in reverse order. xs must be finite. returnreturn ::  Monad m => a -> m anMonadmama replicate replicate :: Int -> a -> [a]޴Inta[]arepeatrepeat :: a -> [a]B3a[]aZrepeat x is an infinite list, with x the value of every element. remrem :: Integral a => a -> a -> a Integralaaaareciprecip :: Fractional a => a -> arX Fractionalaaa realToFrac realToFrac :: (Real a, Fractional b) => a -> bӶReala Fractionalbab%general coercion to fractional types RealFracclass (Real a, Fractional a) => RealFrac anXExtracting components of fractions. Minimal complete definition: properFraction  RealFloatclass (RealFrac a, Floating a) =>  RealFloat aEfficient, machine-independent access to the components of a floating-point number. Minimal complete definition: all except exponent, significand, scaleFloat and atan2 Realclass (Num a, Ord a) => Real a! readsPrec readsPrec ::  Read a => Int -> ReadS axReadaIntReadSa  readSigned readSigned ::  Real a => ReadS a -> ReadS aRealaReadSaReadSaOReads a signed Real value, given a reader for an unsigned value. readsreads ::  Read a => ReadS aReadaReadSa7equivalent to readsPrec with a precedence of 0. ReadStype ReadS a = String -> [(a, String)]D 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).  readParen readParen :: Bool -> ReadS a -> ReadS ażBoolReadSaReadSareadParen 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 aNumaReadSa+Read an unsigned number in octal notation. readLnreadLn ::  Read a => IO aReadaIOaFThe readLn function combines getLine and readIO. readListreadList ::  Read a =>  ReadS [a]H*ReadaReadS[]areadIOreadIO ::  Read a => String -> IO aReadaStringIOaThe readIO function is similar to read except that it signals parse failure to the IO monad instead of terminating the program.  readIntreadInt ::  Num a => a -> Char -> Bool -> Char -> Int -> ReadS aNumaaCharBoolCharIntReadSaEReads an unsigned Integral value in an arbitrary base.  readHexreadHex ::  Num a => ReadS aNumaReadSa_Read an unsigned number in hexadecimal notation. Both upper or lower case letters are allowed.   readFloat readFloat :: RealFrac a => ReadS auYRealFracaReadSaZReads an unsigned RealFrac value, expressed in decimal scientific notation. readFilereadFile :: FilePath ->  IO String<!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.  readDecreadDec ::  Num a => ReadS a2NumaReadSa-Read an unsigned number in decimal notation. readread ::  Read a => String -> aReadaStringalThe read function reads input from a string, which must be completely consumed by the input process. Readclass Read a] 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
Rationaltype Rational = Ratio IntegerEArbitrary-precision rational numbers, represented as a ratio of two Integer values. A rational number may be constructed using the % operator. quotRemquotRem :: Integral a => a -> a -> (a, a)hCIntegralaaa(,)aaquotquot :: Integral a => a -> a -> aIntegralaaaaputStrLnputStrLn :: String -> IO ():%StringIO()9The same as putStr, but adds a newline character. putStrputStr :: String -> IO ()StringIO()UWrite a string to the standard output device (same as hPutStr stdout). putCharputChar :: Char -> IO ()mCharIO()YWrite a character to the standard output device (same as hPutChar stdout). properFractionproperFraction :: (RealFrac a, Integral b) => a -> (b, a)zIRealFracaIntegralba(,)baproductproduct ::  Num a => [a] -> aNuma[]aaNThe product function computes the product of a finite list of numbers. printprint ::  Show a => a -> IO ()xShowaaIO()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]])
predpred ::  Enum a => a -> a}Enumaaapipi :: Floating a => aFloatingaa otherwise otherwise :: BoolBoolotherwise is defined as the value True. It helps to make guards more readable. eg.
f x | x < 0     = ...
    | otherwise = ...
Orderingdata OrderingRepresents an ordering relationship between two values: less than, equal to, or greater than. An Ordering is returned by compare. 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. oddodd :: Integral a => a -> BoolX=IntegralaaBoolNumclass (Eq a, Show a) => Num a\Basic numeric class. Minimal complete definition: all except negate or (-) nullnull :: [a] -> BoolE3[]aBoolTest whether a list is empty. NothingNothing :: Maybe aMaybeanotElemnotElem :: Eq a => a -> [a] -> Bool#Eqaa[]aBool/notElem is the negation of elem. notnot :: Bool -> BoolBoolBoolBoolean "not" negatenegate ::  Num a => a -> a NumaaaMonadclass 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. modmod :: Integral a => a -> a -> a3Integralaaaaminimumminimum ::  Ord a => [a] -> aOrda[]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. minBoundminBound ::  Bounded a => aBoundedaaminmin ::  Ord a => a -> a -> a0Ordaaaamaybe maybe :: b -> (a -> b) -> Maybe a -> bbabMaybeab 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-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. maximummaximum ::  Ord a => [a] -> a~eOrda[]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. maxBoundmaxBound ::  Bounded a => aBoundedaamaxmax ::  Ord a => a -> a -> aOrdaaaamapM_mapM_ ::  Monad m =>  (a -> m b) -> [a] -> m ()yMonadmamb[]am()SmapM_ f is equivalent to sequence_ . map f. mapMmapM ::  Monad m =>  (a -> m b) -> [a] -> m [b]\Monadmamb[]am[]bQmapM f is equivalent to sequence . map f. mapmap :: (a -> b) -> [a] -> [b]N1ab[]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, ...]
LTLT :: Ordering_TOrderinglookuplookup :: Eq a => a -> [(a, b)] -> Maybe bEqaa[](,)abMaybebIlookup key assocs looks up a key in an association list. logBaselogBase :: Floating a => a -> a -> aFloatingaaaaloglog :: Floating a => a -> a Floatingaaalineslines :: String -> [String]oVString[]String}lines breaks a string up into a list of strings at newline characters. The resulting strings do not contain newlines.   lexDigits lexDigits ::  ReadS StringA/ReadSString,Reads a non-empty string of decimal digits. lexlex ::  ReadS StringReadSStringThe 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
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. LeftLeft :: a ->  Either a baEitherablcmlcm :: Integral a => a -> a -> aP5Integralaaaaelcm x y is the smallest positive integer that both x and y divide. lastlast :: [a] -> a[]aaHExtract the last element of a list, which must be finite and non-empty. JustJust :: a -> Maybe aaMaybeaiterateiterate :: (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), ...]
isNegativeZeroisNegativeZero :: RealFloat a => a -> Bool&  RealFloataaBoolisNaNisNaN :: RealFloat a => a -> Boolu RealFloataaBool isInfinite isInfinite :: RealFloat a => a -> Bool RealFloataaBoolisIEEEisIEEE :: RealFloat a => a -> BoolsW RealFloataaBoolisDenormalizedisDenormalized :: RealFloat a => a -> Bool RealFloataaBoolioErrorioError :: IOError -> IO aO: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. IOdata 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. interactinteract :: (String -> String) -> IO ()StringStringIO()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. Integralclass (Real a, Enum a) => Integral acqIntegral numbers, supporting integer division. Minimal complete definition: quotRem and toInteger Integerdata IntegerArbitrary-precision integers. Intdata IntNA fixed-precision integer type with at least the range [-2^29 .. 2^29-1]. The exact range for a given implementation can be determined by using Prelude.minBound and Prelude.maxBound from the Prelude.Bounded class. initinit :: [a] -> [a]l[]a[]a^Return all the elements of a list except the last one. The list must be finite and non-empty. idid :: a -> aaaIdentity function. headhead :: [a] -> a~o[]aa>Extract the first element of a list, which must be non-empty. GTGT :: OrderingOrderinggetLinegetLine ::  IO StringC4IOStringSRead a line from the standard input device (same as hGetLine stdin).  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). getChargetChar :: IO CharIOCharXRead a character from the standard input device (same as hGetChar stdin). gcdgcd :: Integral a => a -> a -> ayIntegralaaaagcd 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. Functorclass 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. fstfst :: (a, b) -> a| i (,)aba'Extract the first component of a pair.  fromRational fromRational :: Fractional a => Rational -> a&   FractionalaRationala fromRatfromRat :: RealFloat a => Rational -> a }  RealFloataRationala fromIntegral fromIntegral :: (Integral a, Num b) => a -> b!  IntegralaNumbab%general coercion from integral types  fromInteger fromInteger ::  Num a => Integer -> a  NumaIntegerafromEnumfromEnum ::  Enum a => a -> Int  EnumaaInt Fractionalclass  Num a =>  Fractional a` Fractional numbers, supporting real division. Minimal complete definition: fromRational and (recip or (/)) foldr1foldr1 ::  (a -> a -> a) -> [a] -> a^Daaa[]aa}foldr1 is a variant of foldr that has no starting value argument, and thus must be applied to non-empty lists. 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)...)
foldl1foldl1 ::  (a -> a -> a) -> [a] -> aaaa[]aa}foldl1 is a variant of foldl that has no starting value argument, and thus must be applied to non-empty lists. foldl foldl ::  (a -> b -> a) -> a -> [b] -> aabaa[]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. fmapfmap ::  Functor f => (a -> b) -> f a -> f b^Functorfabfafbfloorfloor :: (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
 floatRange floatRange :: RealFloat a => a ->  (Int, Int) RealFloataa(,)IntInt floatRadix floatRadix :: RealFloat a => a -> Integer! RealFloataaIntegerFloatingclass Fractional a => Floating ahTrigonometric and hyperbolic functions and related functions. Minimal complete definition: pi, exp, log, sin, cos, sinh, cosh, asin, acos, atan, asinh, acosh and atanh  floatDigits floatDigits :: RealFloat a => a -> Int RealFloataaIntFloatdata FloatSingle-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE single-precision type. flip flip ::  (a -> b -> c) -> b -> a -> cabcbac[flip f takes its (first) two arguments in the reverse order of f. 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]
FilePathtype 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. FalseFalse :: BoolBoolfailfail ::  Monad m => String -> m aV7MonadmStringmaexponentexponent :: RealFloat a => a -> Int RealFloataaIntexpexp :: Floating a => a -> a$ Floatingaaaerrorerror :: String -> atfStringa<error stops execution and displays an error message. Eqclass Eq a?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 /=. EQEQ :: OrderingV K Ordering enumFromTo enumFromTo ::  Enum a => a -> a -> [a]  Enumaaa[]aenumFromThenTo enumFromThenTo ::  Enum a => a -> a -> a -> [a]h!H!Enumaaaa[]a enumFromThen enumFromThen ::  Enum a => a -> a -> [a]!!Enumaaa[]aenumFromenumFrom ::  Enum a => a -> [a]R"8"Enumaa[]aEnumclass Enum a"Class 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
 encodeFloat encodeFloat :: RealFloat a => Integer -> Int -> a'' RealFloataIntegerIntaelemelem :: Eq a => a -> [a] -> BoolA(#(Eqaa[]aBoolielem is the list membership predicate, usually written in infix form, e.g., x `elem` xs. either 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. Eitherdata Either a b9*The 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").  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]
dropdrop :: 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. Doubledata Double/Double-precision floating point numbers. It is desirable that this type be at least equal in range and precision to the IEEE double-precision type. divModdivMod :: Integral a => a -> a -> (a, a)00Integralaaa(,)aadivdiv :: Integral a => a -> a -> a)11Integralaaaa decodeFloat decodeFloat :: RealFloat a => a -> (Integer, Int)11 RealFloataa(,)IntegerIntcyclecycle :: [a] -> [a]21[]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 -> c*3 3(,)abcabcCcurry converts an uncurried function to a curried function. coshcosh :: Floating a => a -> a33Floatingaaacoscos :: Floating a => a -> a-44Floatingaaaconstconst :: a -> b -> a4w4abaConstant function.  concatMap concatMap ::  (a -> [b]) -> [a] -> [b]54a[]b[]a[]b8Map a function over a list and concatenate the results. concatconcat :: [[a]] -> [a]55[][]a[]aConcatenate a list of lists. comparecompare ::  Ord a => a -> a -> OrderingH6+6OrdaaaOrderingChardata Chart6dThe character type Char is an enumeration whose values represent Unicode (or equivalently ISO/IEC 10646) characters (see http://www.unicode.org/ for details). This set extends the ISO 8859-1 (Latin-1) character set (the first 256 charachers), which is itself an extension of the ASCII character set (the first 128 characters). A character literal in Haskell has type Char. To convert a Char to or from the corresponding Int value defined by Unicode, use Prelude.toEnum and Prelude.fromEnum from the Prelude.Enum class respectively (or equivalently ord and chr). ceilingceiling :: (RealFrac a, Integral b) => a -> b\959RealFracaIntegralbabcatchcatch :: IO a -> (IOError -> IO a) -> IO a99IOaIOErrorIOaIOaThe 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. breakbreak ::  (a -> Bool) -> [a] ->  ([a], [a])0>>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). Boundedclass Bounded aM@The 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. Booldata BoolpBThe Bool type is an enumeration. It is defined with False first so that the corresponding Prelude.Enum instance will give Prelude.fromEnum False the value zero, and Prelude.fromEnum True the value 1. atanhatanh :: Floating a => a -> aCCFloatingaaaatan2atan2 :: RealFloat a => a -> a -> a,DD RealFloataaaaatanatan :: Floating a => a -> aDuDFloatingaaaasTypeOfasTypeOf :: a -> a -> aDDaaaasTypeOf 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. asinhasinh :: Floating a => a -> aFFFloatingaaaasinasin :: Floating a => a -> aFhFFloatingaaa appendFile appendFile :: FilePath -> String -> IO ()GFFilePathStringIO()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]])
anyany ::  (a -> Bool) -> [a] -> BoolIHaBool[]aBoolmApplied to a predicate and a list, any determines if any element of the list satisfies the predicate. andand :: [Bool] -> BoolII[]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. allall ::  (a -> Bool) -> [a] -> Bool$KKaBool[]aBoollApplied to a predicate and a list, all determines if all elements of the list satisfy the predicate. acoshacosh :: Floating a => a -> aKKFloatingaaaacosacos :: Floating a => a -> aTL a -> aLLNumaaa^^ (^^) :: (Fractional a, Integral b) => a -> b -> a=MM FractionalaIntegralbaba^ (^) :: (Num a, Integral b) => a -> b -> aMMNumaIntegralbaba>>= (>>=) ::  Monad m => m a ->  (a -> m b) -> m bQN%NMonadmmaambmb>> (>>) ::  Monad m => m a -> m b -> m bNNMonadmmambmb>= (>=) ::  Ord a => a -> a -> BoolBO)OOrdaaaBool> (>) ::  Ord a => a -> a -> BoolOOOrdaaaBool== (==) :: Eq a => a -> a -> BoolPPEqaaaBool=<< (=<<) ::  Monad m =>  (a -> m b) -> m a -> m bPPMonadmambmamb<= (<=) ::  Ord a => a -> a -> BoolQQOrdaaaBool< (<) ::  Ord a => a -> a -> BoolQoQOrdaaaBool/= (/=) :: Eq a => a -> a -> BoolQQEqaaaBool/ (/) :: Fractional a => a -> a -> ajRMR Fractionalaaaa. (.) :: (b -> c) -> (a -> b) -> a -> cRRbcabac- (-) ::  Num a => a -> a -> aMS7SNumaaaa++ (++) :: [a] -> [a] -> [a]SS[]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. + (+) ::  Num a => a -> a -> aTTNumaaaa** (**) :: Floating a => a -> a -> amURUFloatingaaaa* (*) ::  Num a => a -> a -> aUUNumaaaa&& (&&) :: Bool -> Bool -> Bool b) -> a -> bVVababDStrict (call-by-value) application, defined in terms of seq. $ ($) :: (a -> b) -> a -> bPW?Wabab!! (!!) :: [a] -> Int -> aWW[]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. ~keyword ~nXLazy pattern bindings. Matching the pattern ~pat against a value always suceeds, and matching will only diverge when one of the variables bound in the pattern is used.
(f *** g) ~(x,y) = (f x, g y)
|keyword |cY&The "pipe" is used in several places Data type definitions, "or"
data Maybe a = Just a | Nothing
List comprehensions, "where"
squares = [a*a | a <- [1..]]
Guards, do this "if this is true"
safeTail x | null x    = []
           | otherwise = tail x
ZMachinepackage ZMachineZ3A Z-machine interpreter ZMachine is a Z-machine (Infocom's interactive fiction VM) interpreter which currently needs attention to its UI rather badly. It uses Gtk2Hs, but it just goes down hill from there. Help welcome! The Darcs repository can be found at zlibpackage zlib\Compression and decompression in the gzip and zlib formats This package provides a pure interface for compressing and decompressing streams of data represented as lazy 'ByteString's. 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. zipeditpackage zipedit^Create simple list editor interfaces Create simple interfaces which allow the user to edit lists using various simple commands (move back, move forward, modify current element, etc). ZFSpackage ZFS^Oleg's Zipper FS A implementation of a zipper filesystem using delimited continuations. Zipper-based File/Operating system with threading and exceptions all realized via delimited continuations. There are no unsafe operations, no GHC (let alone) Unix threads, no concurrency problems. Our threads can't even do IO and can't mutate any global state - and the type system sees to it. Yogurtpackage Yogurt`wA MUD client library A MUD client library for Haskell. Features prioritized, regex-based hooks, variables and timers. yi-vtypackage yi-vtyAaVty backend for Yi Core functions for the Vty backend of Yi. Note that you will need the yi package to use this. Note that this package is intended for Yi versions 0.2 and below, *not* 0.3, 0.4 or up. This and yi-gtk are functionally obsolete. yi-gtkpackage yi-gtkbbGTK backend for Yi Core functions for the GTK backend of Yi. Note that you will need the yi package to use this. Note that this is *not* for versions of Yi 0.3 or higher! yipackage yi2cThe Haskell-Scriptable Editor Yi is a text editor written in Haskell and extensible in Haskell. The goal of the Yi project is to provide a flexible, powerful, and correct editor for haskell hacking. yhccorepackage yhccore'dyYhc's Internal Core language. A minimal Core language to which Haskell can be reduced, implemented in the Yhc compiler.  YampaSynthpackage  YampaSynthdSoftware synthesizer YampaSynth is a software synthesizer implemented in Yampa, domain specific language embedded in Haskell. It contains a little framework of sound generating and sound shaping modules (e.g. oscillator, amplifier, mixer, envelope generator, filter, etc.) and example applications: * "yampasynth-wav" is an application which synthesizes a MIDI music and writes result into a WAVE audio file. * "yampasynth-openal" is an application which synthesizes a MIDI music and sends audio data in real-time to a sound card. We use Haskell binding of OpenAL library as an interface to audio hardware. * "yampasynth-gtk" is an application with the simple graphical user interface which allows you to play a music with various instruments in real-time using the keyboard of your computer. We use Haskell binding of GTK library for GUI programming and Haskell binding of OpenAL library as an interface to audio hardware. Software synthesizer uses the MIDI standard as a music description and the SoundFont standard as an instrument description. Implementation is based on the paper "Switched-on Yampa: Declarative Programming of Modular Synthesizers", by George Giorgidze and Henrik Nilsson (), In Proceedings of 10th International Symposium on Practical Aspects of Declarative Languages, San Francisco, CA, USA, January 7-8, 2008. This is mainly a proof of concept, but already useful to some extent. Yampapackage YampajLibrary for programming hybrid systems. Domain-specific language embedded in Haskell for programming hybrid (mixed discrete-time and continuous-time) systems. Yampa is based on the concepts of Functional Reactive Programming (FRP) and is structured using arrow combinators.  YamlReferencepackage  YamlReferencelYAML reference implementation This package contains \"the\" reference YAML syntax parser ("Text.Yaml.Reference"), generated directly from the YAML specifications, as well as sample program (@yaml2yeast@) that allows accessing it from the command line, converting YAML files to YEAST tokens. This is intended to be more of an \"executable specification\" for YAML rather than an actual basis for YAML tool chains. That said, it is possible to build interesting tools on top of it, such as the @yeast2html@ YAML syntax visualizer (contained in this package), pretty printers, etc. This is a streaming parser that will \"immediately\" begin to generate output. Updated to be compatible with the May 11, 2008 working draft. yahoo-web-searchpackage yahoo-web-searchoYahoo Web Search Services Documentation of the Yahoo Web Search APIs is available from the following URL: http:\/\/developer.yahoo.com\/search\/web\/. Example code is provided in the base of the project directory. xtcpackage xtcpeXtended & Typed Controls for wxHaskell. The XTC library provides a typed interface to several wxHaskell controls. * radio view (typed radio box) * single-selection list view (typed single-selection list box) * muliple-selection list view (typed multiple-selection list box) * choice view (typed choice box) * value entry (typed text entry) XTC controls keep track of typed values and items, rather than being string based. Selections in XTC controls consist of actual values instead of indices. xsltpackage xslt0rBinding to libxslt xsactpackage xsactmrCluster EST sequences Xsact is an EST clustering program with a variety of output options. This package exposes the internal libraries, and provides 4 binaries: * xsact; implements a complete multiple-matching clustering algorithm. * xcerpt; Extract sequences matching a list of labels. * xplit; This implements a simple splitter for xsact's UniGene-formatted files. Useful if you want to run an assembler on individual clusters. * xtract; the eXperimental TRanscript Assembly/Consensus Tool. The idea is to construct the splice graph from each EST cluster in the input, by first constructing and then traversing the de Bruijn graph of $k-1$-words.  xmonad-utilspackage  xmonad-utils0ugA small collection of X utilities A small collection of X utilities useful when running XMonad. It includes: * hxsel, which returns the text currently in the X selection; * hslock, a simple X screen lock; * hmanage: an utility to toggle the override-redirect property of any window; * and hhp, a simple utility to hide the pointer, similar to unclutter. xmonad-contribpackage xmonad-contribvThird party extensions for xmonad Third party tiling algorithms, configurations and scripts to xmonad, a tiling window manager for X. For an introduction to building, configuring and using xmonad extensions, see "XMonad.Doc". In particular: "XMonad.Doc.Configuring", a guide to configuring xmonad "XMonad.Doc.Extending", using the contributed extensions library "XMonad.Doc.Developing", introduction to xmonad internals and writing your own extensions. xmonadpackage xmonadx8A tiling window manager xmonad is a tiling window manager for X. Windows are arranged automatically to tile the screen without gaps or overlap, maximising screen use. All features of the window manager are accessible from the keyboard: a mouse is strictly optional. xmonad is written and extensible in Haskell. Custom layout algorithms, and other extensions, may be written by the user in config files. Layouts are applied dynamically, and different layouts may be used on each workspace. Xinerama is fully supported, allowing windows to be tiled on several screens. xmobarpackage xmobar+{A Minimalistic Text Based Status Bar Xmobar is a minimalistic text based status bar. Inspired by the Ion3 status bar, it supports similar features, like dynamic color management, output templates, and extensibility through plugins. xml2xpackage xml2x>|Convert BLAST output in XML format to CSV or HTML xml2x - convert blast output in XML format, either to a (csv) table suitable for e.g. importing into Excel or OOCalc, or to HTML. Optionally annotating the output with GO terms.  xml-parsecpackage  xml-parsecW}Parsing XML with Parsec Helper functions to use a Parsec-based parser for XML documents. This was originally developed as part of the Barracuda ad-hoc P2P chat client. The Darcs repository can be found at xmlpackage xmlp~-A simple XML library. A simple XML library. XInputpackage XInput~*Bindings for the DirectX XInput library. xhtmlpackage xhtmlAn XHTML combinator library This package provides combinators for producing XHTML 1.0, including the Strict, Transitional and Frameset variants. XHtmlmodule Text.XHtmlAn 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.  xcb-typespackage  xcb-typesParses XML files used by the XCB project This package provides types which mirror the structures used in the XCB code generation XML files. X11-xftpackage X11-xftBindings to the Xft, X Free Type interface library, and some Xrender parts Bindings to the Xft, X Free Type interface library, and some Xrender parts  X11-extraspackage  X11-extrasvMissing bindings to the X11 graphics library Missing bindings to the X11 graphics library. The binding is a direct translation of the C binding; for documentation of these calls, refer to "The Xlib Programming Manual", available online at . X11package X11 A binding to the X11 graphics library A Haskell binding to the X11 graphics library. The binding is a direct translation of the C binding; for documentation of these calls, refer to "The Xlib Programming Manual", available online at .  WxGenericpackage  WxGenericyLibrary which constructing generic (SYB3-based) widgets for WxHaskell Constructs widgets for WxHaskell using SybWidget. wxFruitpackage wxFruitAn implementation of Fruit using wxHaskell. This is an original version of wxFruit. wxFruit isn't maintained by original authors, and Haskell.org. So, there is a few forked version of wxFruit now. One extension is shelarcy's YaPan ( http://sourceforge.net/project/showfiles.php?group_id=168626&package_id=199138 ). It added Menu and OpenGL support. And another one is Remi Turk's Juicy Fruit ( http://www.cs.uu.nl/wiki/pub/Afp0607/DomainSpecificLanguages/fruit.pdf ). So, I uploaded this original version first. wxcorepackage wxcore8wxHaskell core wxHaskell is a portable and native GUI library for Haskell. It is built on top of wxWidgets - a comprehensive C++ library that is portable across all major GUI platforms; including GTK, Windows, X11, and MacOS X. At present, it works with wxWidgets 2.6 (and sadly, not with with wxWidgets 2.8) wxpackage wx3wxHaskell wxHaskell is a portable and native GUI library for Haskell. It is built on top of wxWidgets - a comprehensive C++ library that is portable across all major GUI platforms; including GTK, Windows, X11, and MacOS X. At present, it works with wxWidgets 2.6 (and sadly, not with with wxWidgets 2.8) WURFLpackage WURFLvTConvert the WURFL file into a Parsec parser The WURLF file format (http://wurfl.sourceforge.net/) is not well adapted to the parsing of the user agent strings. It is useful to manage a database of mobile features. The Convert module in this package (see test.hs) will convert the WURLF tree into another tree that can be used to generate a Parsec parser. The Parsec parser can then be used with WURFLParser to quickly parse an user agent string. The infos extracted from WURLF are defined in WURFLType (MD data type). Nothing is preventing the lib from taking into account much more information from the WURLF file. The conversion of wurlf.xml and compilation of the lib are very slow since the generated tree in WurflVar.h is a huge Haskell tree. But, once it is compiled, its use in another project should be easy. This module is very experimental. 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. WordNetpackage WordNet%Haskell interface to the WordNet database A pure-Haskell interface to the WordNet lexical database of English. Depends on the WordNet database, but not on the WordNet source code.  Wordmodule Data.Word Unsigned integer types.  wl-pprintpackage  wl-pprintRThe Wadler/Leijen Pretty Printer This is a pretty printing library based on Wadler's paper "A Prettier Printer". See the haddocks for full info. witnesspackage witnessyvalues that witness types A witness is a value that /witnesses/ some sort of constraint on some list of type variables. winerrorpackage winerror6Error handling for foreign calls to the Windows API. Windowsmodule System.FilePath.Windows0A library for FilePath manipulations, using Windows style paths on all platforms. Importing System.FilePath is usually better.  Win32-notifypackage  Win32-notify{A binding to part of the Win32 library for file notification A binding to part of the Win32 library for file notification Win32package Win32(A binding to part of the Win32 library whimpackage whim_A Haskell window manager A simple X Windows window manager in Haskell; written before XMonad. wherekeyword wherehUsed to introduce a module, instance or class:
module Main where

class Num a where
    ...

instance Num Int  where
    ...
And to bind local variables:
f x = y
    where y = x * 2

g z | z > 2 = y
    where y = x * 2



WeekDatemodule Data.Time.Calendar.WeekDateISO 8601 Week Date format WebBitspackage WebBitsJavaScript analysis tools YWeakmodule System.Mem.WeakBKIn 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. WAVEpackage WAVEaWAVE audio file IO library Module for reading and writing audio files in the WAVE audio format.  wavconvertpackage  wavconvertHCommand-line tool for converting audio files and filling in ID3 tags This program is useful for turning a directory tree of .wav files (presumably created by a CD ripping program) into a tree of .ogg files with proper metadata. It is meant to be run on a directory tree in which the directory structure is organized according to the artist and album names. It runs an .ogg encoder (which is assumed to be installed) and sets the metadata in the resulting .ogg files based on the directory organization. (See the README for examples.) It would be easy to adapt the code to generate .mp3 files instead of .ogg, or to use a different encoder (currently the "oggenc" program is assumed.) vtypackage vtyA simple terminal access library vty is a *very* simplistic library in the niche of ncurses. It is intended to be easy to use, have no confusing corner cases, and good support for common terminal types. If you want to use it, currently the best reference is the test module (Test.hs). Notable infelicities: requires an ANSI-type terminal, poor efficiency, requires Linux\/xterm style UTF8 support. You can 'darcs get' it from © 2006-2007 Stefan O'Rear; BSD3 license. fVersionmodule Distribution.VersionS=Versions for packages, based on the Version datatype. IVersionmodule Data.VersionŤA 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. x Verbositymodule Distribution. VerbosityVerbosity for Cabal functions  vector-spacepackage  vector-spaceVector & affine spaces, linear maps, and derivatives '''vector-space''' provides classes and generic operations for vector spaces and affine spaces. It also defines a type of infinite towers of generalized derivatives. A generalized derivative is a linear transformation rather than one of the common concrete representations (scalars, vectors, matrices, ...). '''Warning''': this package depends on type families working fairly well, and requires ghc version at least 6.9. Project wiki page: The module documentation pages have links to colorized source code and to wiki pages where you can read and contribute user comments. Enjoy! © 2008 by Conal Elliott; BSD3 license. vectorpackage vectorEfficient Arrays An efficient implementation of Int-indexed arrays with a powerful loop fusion framework. This code is highly experimental and for the most part untested. Use at your own risk! Vecpackage Vec֫Fixed-length lists and low-dimensional linear algebra. Vectors are represented by lists with type-encoded lengths. The constructor is @:.@, which acts like a cons both at the value and type levels, with @()@ taking the place of nil. So @x:.y:.z:.()@ is a 3d vector. The library provides a set of common list-like functions (map, fold, etc) for working with vectors. Built up from these functions are a small but useful set of linear algebra operations: matrix multiplication, determinants, solving linear systems, inverting matrices.  value-supplypackage  value-supply$A library for generating values without having to thread state. This library can be used to generate values (for example, new names) without the need to thread state. This means that functions that need to generate new values only need a supply object as an argument, and they do not need to return a new supply object as a result. This decreases the number of data-dependencies in a program, which makes it easier to exploit parallelism. validatepackage validate +Validate Validate data provided by users. uvectorpackage uvectord-Fast unboxed arrays with a flexible interface Fast unboxed arrays with a flexible interface. The library is built of fusible combinators, as described in the paper /Stream Fusion: From Lists to Streams to Nothing at All/. For best results, compile with your user programs with -O2 -fvia-C -optc-O2. uulibpackage uulibWHaskell Utrecht Tools Library Fast Parser Combinators and Pretty Printing Combinators uuidpackage uuid8uuagcpackage uuagcarAttribute Grammar System of Universiteit Utrecht Generates Haskell files from an attribute grammar specification Utilsmodule Test.QuickCheck.UtilsBThese are some general purpose utilities for use with QuickCheck. PUtilsmodule Foreign.Marshal.Utils#Utilities for primitive marshaling vUtilsmodule Distribution.Simple.Utils|Explanation: Misc. Utilities, especially file-related utilities. Stuff used by multiple modules that doesn't fit elsewhere. Utilsmodule Debug.QuickCheck.UtilsBThese are some general purpose utilities for use with QuickCheck.  utf8-stringpackage  utf8-string Support for reading and writing UTF8 Strings A UTF8 layer for IO and Strings. The utf8-string package provides operations for encoding UTF8 strings to Word8 lists and back, and for reading and writing UTF8 without truncation.  utf8-lightpackage  utf8-light6utf8-light Lightweight UTF8 handling. Haddock docs are at . ~ UserHooksmodule Distribution.Simple. UserHooksExplanation: Simple build system; basically the interface for Distribution.Simple.* modules. When given the parsed command-line args and package information, is able to perform basic commands like configure, build, install, register, etc. This module isn't called "Simple" because it's simple. Far from it. It's called "Simple" because it does complicated things to simple software. urlcheckpackage urlcheckParallel link checker A (SMP) parallel link checker. Checks the validity of embedded urls in the input files. Usage: urlcheck foo.html ~urlpackage urlYCA library for working with URLs. A library for working with URLs. 3Unsafemodule System.IO.UnsafeԹ"Unsafe" IO operations. Unsafemodule 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. Unlitmodule Distribution.Simple.PreProcess.UnlitRemove the "literal" markups from a Haskell source file, including ">", "\begin{code}", "\end{code}", and "#" }unlambdapackage unlambdamUnlambda interpreter This is an interpreter of the Unlambda language, written in the pure, lazy, functional language Haskell. | Unixutilspackage  UnixutilsA crude interface between Haskell and Unix-like operating systems A collection of useful and mildly useful functions that you might expect to find in System.* which a heavy bias towards Unix-type operating systems. {unix-pty-lightpackage unix-pty-light0POSIX pseudo-terminal support Support for POSIX 1003.1 pseudo-terminal functionality. Unlike the @unix@ package's pseudo-terminal support, this binding works with GHC 6.6. z unix-compatpackage  unix-compatPortable POSIX-compatibility layer. This package provides portable implementations of parts of the unix package. This package re-exports the unix package when available. When it isn't available, portable implementations are used. yunixpackage unix POSIX functionality This package gives you access to the set of operating system services standardised by POSIX 1003.1b (or the IEEE Portable Operating System Interface for Computing Environments - IEEE Std. 1003.1). The package is not supported under Windows (except under Cygwin). 'Uniquemodule Data.Uniquep4An abstract interface to a unique symbol generator. xuniplatepackage uniplateUniform type generic traversals. Uniplate is a boilerplate removal library, with similar goals to the original Scrap Your Boilerplate work. It requires few extensions to Haskell. wunicode-normalizationpackage unicode-normalizationYUnicode normalization using the ICU library Unicode normalization using the ICU library dUnboxedmodule Data.Array.UnboxeddUnboxed immutable arrays. vuhexdumppackage uhexdump5hex dumper for UTF-8 text hex dumper for UTF-8 text uudcodepackage udcode `Uniquely-decodeable codes A Haskell-based write-up of Mark Jason Dominus' perl UDCode package. tuconvpackage uconv{String encoding conversion with ICU Provides an interface to ICU's uconv library function for string encoding conversion. Typesmodule System.Posix.TypesJ{POSIX data types: Haskell equivalents of the types defined by the <sys/types.h> C header on a POSIX system. Typesmodule Foreign.C.Types3Mapping of C types to corresponding Haskell types. stypeofpackage typeofYSmall script for inferring types A script to infer and insert type declarations in Haskell source, callable from your editor. Bindings exist to emacs and vim. rTypeIlluminatorpackage TypeIlluminator6TypeIlluminator is a prototype tool exploring debugging of type errors/ TypeIlluminator is a prototype tool implementing the ideas presented in the paper Compositional Explanation of Types and Algorithmic Debugging of Type Errors. It constructs the type explanation graph for programs written in a simple Haskell-like language and enables free navigation through the graph in various ways and algorithmic debugging. q TypeComposepackage  TypeCompose Type composition classes & instances TypeCompose provides some classes & instances for forms of type composition, as well as some modules who haven't yet found a home. Please see the project wiki page: The module documentation pages have links to colorized source code and to wiki pages where you can read and contribute /user comments/. Enjoy! © 2007 by Conal Elliott; BSD3 license.  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. p type-levelpackage  type-level7 Type-level programming library otype-intpackage type-intType Level 2s- and 16s- Complement Integers Type level 2s- and 16s- complement Integers (positive and negative), Booleans, Ord and Eq typekeyword type4The type declaration is how one introduces an alias for an algebraic data type into Haskell. As an example, when writing a compiler one often creates an alias for identifiers:
type Identifier = String
This allows you to use Identifer wherever you had used String and if something is of type Identifier it may be used wherever a String is expected. See the page on types for more information, links and examples. Some common type declarations in the Prelude include:
type FilePath = String
type String = [Char]
type Rational = Ratio Integer
type ReadS a = String -> [(a,String)]
type ShowS = String -> String
ntypalyzepackage typalyzeAnalyzes Haskell source files for easy reference A tool to assist developers of IDEs and other code analyzing programs. Processes Haskell source files and outputs information about types in an efficient machine-readable format. mtwitterpackage twitter+CA Haskell-based CLI Twitter client A really basic twitter client. Twinsmodule Data.Generics.Twins"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.TVarTVar: Transactional variables lTVpackage TVaTangible Values -- composable interfaces TV is a library for composing /tangible values/ (\"TVs\"), i.e., values that carry along external interfaces. Values and interfaces are /combined and separable/, which makes TVs ready to use and to reuse. Try out the examples in @src\/Examples.hs@. For more information, including examples, please see the project wiki page This page and the module documentation pages have links to colorized source code and to wiki pages where you can read and contribute /user comments/. Enjoy! © 2007 by Conal Elliott; BSD3 license. Tuplemodule Data.Tuple0The tuple data types, and associated functions. k truelevelpackage  truelevel Audio file compressor-limiter An audio file compressor / limiter. This program will adjust the dynamic range of a WAVE file. jtrhsxpackage trhsxtDeprecated This tool is now part of the hsx package, and should be considered deprecated as a stand-alone package. Treemodule Data.TreeV5Multi-way trees (aka rose trees) and forests. H Traversablemodule Data. TraversableMClass 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. TransitionalZ!Produces XHTML 1.0 Transitional. Transmodule Control.Monad.TransThe MonadTrans class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. itrackerpackage trackerClient library for Tracker metadata database, indexer and search tool Client library for Tracker metadata database, indexer and search tool htracedpackage tracedtSimple evaluation trace The module defines a type constructor Traced, which allows evaluation of values to be traced. Instances for all numeric types make tracing numeric evaluation especially easy. JTracemodule Debug.TraceoThe trace function. gtorrentpackage torrentBitTorrent file parser. ftopkatapackage topkata9OpenGL Arcade Game Guide a jumping ball through a maze. Tokenmodule Text.ParserCombinators.Parsec.TokenParsec compatibility module Tokenmodule Text.Parsec.TokensA helper module to parse lexical elements (tokens). See makeTokenParser for a description of how to use it. TMVarmodule Control.Concurrent.STM.TMVar@TMVar: Transactional MVars, for use in the STM monad (GHC only) e TimePiecepackage  TimePiece_A simple tile-based digital clock screen saver A simple tile-based digital clock screen saver &Timeoutmodule System.Timeout<Attach a timeout event to arbitrary IO computations. timepackage timetime library time library Timemodule Data.Time>d tic-tac-toepackage  tic-tac-toessUseful if reading "Why FP matters" by John Hughes An attempt to implement the minimax algorithm using tic-tac-toe cthristpackage thrist4Type-threaded list Thrist is a list-like data structure (GADT) whose elements are values of a two-parameter datatype. The typing constraint ensures that the second type parameter of a former value unifies with the first type parameter of the latter. This threading of types is the foundation for thrists' nice properties. E.g., paired with a suitable semantics, function composition (.) can be embedded. For further ideas, please consult the companion (draft) paper \"Thrists: Dominoes of Data\" at bthihpackage thihlTyping Haskell In Haskell Haskell benefits from a sophisticated type system, but implementors, programmers, and researchers suffer because it has no formal description. To remedy this shortcoming, we present a Haskell program that implements a Haskell typechecker, thus providing a mathematically rigorous specification in a notation that is familiar to Haskell users. We expect this program to fill a serious gap in current descriptions of Haskell, both as a starting point for discussions about existing features of the type system, and as a platform from which to explore new proposals. This package is derived from the Haskell '98 + Multiparameter Type Classes package of THIH. thenkeyword then?A conditional expression has the form:
if e1 then e2 else e3
and returns the value of e2 if the value of e1 is True, e3 if e1 is False, and _|_ otherwise.
max a b = if a > b then a else b
ath-liftpackage th-liftEiDerive Template Haskell's Lift class for datatypes. Derive Template Haskell's Lift class for datatypes. THmodule Language.Haskell.THTextmodule Test.HUnit.TextgTextmodule Distribution.TextQTextmodule Data.Generics.Text"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. `terminfopackage terminfoqHaskell bindings to the terminfo library. This library provides an interface to the terminfo database (via bindings to the curses library). Terminfo allows programs to interact with a variety of terminals using a standard set of capabilities. Terminalmodule Test.HUnit.Terminaltemplate-haskellpackage template-haskellHFacilities for manipulating Haskell source code using Template Haskell. _templatepackage templateYSimple string substitution Simple string substitution library that supports \"$\"-based substitution. Meant to be used when Text.Printf or string concatenation would lead to code that is hard to read but when a full blown templating system might be overkill. TChanmodule Control.Concurrent.STM.TChan)TChan: Transactional channels (GHC only) TArraymodule Control.Concurrent.STM.TArray8TArrays: transactional arrays, for use in the STM monad ^tarpackage tarl\TAR (tape archive format) library. This is a library for reading and writing TAR archives. ]Takusenpackage TakusenUDatabase library with left-fold interface, for PostgreSQL, Oracle, SQLite, ODBC. Takusen is a DBMS access library. Like HSQL and HDBC, we support arbitrary SQL statements (currently strings, extensible to anything that can be converted to a string). Takusen's unique selling point is safety and efficiency. We statically ensure all acquired database resources - such as cursors, connections, and statement handles - are released, exactly once, at predictable times. Takusen can avoid loading the whole result set in memory, and so can handle queries returning millions of rows in constant space. Takusen also supports automatic marshalling and unmarshalling of results and query parameters. These benefits come from the design of query result processing around a left-fold enumerator. Currently we fully support ODBC, Oracle, Sqlite, and PostgreSQL. TAImodule Data.Time.Clock.TAIVTAI and leap-second tables for converting to UTC: most people won't need this module. \tagsouppackage tagsoupParsing and extracting information from (possibly malformed) HTML documents TagSoup is a library for extracting information out of unstructured HTML code, sometimes known as tag-soup. The HTML does not have to be well formed, or render properly within any particular framework. This library is for situations where the author of the HTML is not cooperating with the person trying to extract the information, but is also not trying to hide the information. Tablemodule Text.XHtml.TableTable combinators for XHTML. [system-inotifypackage system-inotify]KBinding to Linux's inotify interface Binding to Linux's inotify interface wSystemmodule Distribution.SystemSyntaxmodule Language.Haskell.TH.Syntax%2Abstract syntax definitions for Template Haskell. Syntaxmodule Language.Haskell.SyntaxiA 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. Z SybWidgetpackage  SybWidget0TLibrary which aids constructing generic (SYB3-based) widgets Basic building block for creating libraries which can generically construct widgets. That is, the library cannot by it self construct any widgets, but makes it easier to build libraries which can. This also means that the library is not dependent on any particular GUI library. Ysyb-with-classpackage syb-with-classScrap Your Boilerplate With Class Classes, and Template Haskell code to generate instances, for the Scrap Your Boilerplate With Class system. Xswfpackage swfsLA library for creating Shockwave Flash (SWF) files Provides Haskell datatypes which closely reflect the internal specification of SWF, and routines to convert the data values into a valid .swf file. Currently the assembly language portion is best supported, with many other features missing, such as images, sounds, and much more. W suffixtreepackage  suffixtree[Efficient, lazy suffix tree implementation An efficient, lazy suffix tree implementation. Vstringtable-atompackage stringtable-atomMemoize Strings as Atoms for fast comparison and sorting, with maps and sets Memoize Strings as Atoms for fast comparison and sorting, with maps and sets U stringsearchpackage  stringsearch^Stringmodule Text.Parsec.StringGMake Strings an instance of Stream with Char token type. Stringmodule Foreign.C.StringUtilities 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.String>#Things related to the String type. T strictifypackage  strictifyaFind a local optimum of strictness annotations. Find a local optimum of strictness annotations. Sstrict-concurrencypackage strict-concurrency6Strict concurrency abstractions This package provides head normal form strict versions of some standard Haskell concurrency abstractions (MVars,Chans), which provide control over where evaluation takes place not offered by the default lazy types. This may be useful for deciding when and where evaluation occurs, leading to improved time or space use, depending on the circumstances. Rstrictpackage strictStrict data types and String IO. This package provides strict versions of some standard Haskell data types (pairs, Maybe and Either). It also contains strict IO operations. Strictmodule Text.XHtml.StrictProduces XHTML 1.0 Strict. GStrictmodule Data.STRef.StrictMMutable references in the (strict) ST monad (re-export of Data.STRef) Strictmodule Control.Monad.Writer.StrictStrict 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.StrictStrict state monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. See below for examples. 8Strictmodule Control.Monad.ST.Strict ;The strict ST monad (re-export of Control.Monad.ST) Strictmodule Control.Monad.RWS.Strict Strict RWS Monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. ESTRefmodule Data.STRef -Mutable references in the (strict) ST monad. Q streamprocpackage  streamproc /Stream Processer Arrow Stream Processer Arrow P stream-fusionpackage  stream-fusionj Faster Haskell lists using stream fusion This package provides the standard Haskell list library reimplemented to allow stream fusion. This should in general provide faster list operations, and faster code for list-heavy programs. See the paper "Stream Fusion: From Lists to Streams to Nothing at All", Coutts, Leshchinskiy and Stewart, 2007. To use, simply import Data.List.Stream in place of Data.List, and hide list functions from the Prelude. OStreampackage StreamV A library for manipulating infinite lists. This package implements functions, analogous to those from Data.List, to create and manipulate infinite lists: @data Stream a = Cons a (Stream a)@. It provides alternative definitions for those Prelude functions that make sense on such streams. Note that this package has (almost) nothing to do with the work on /Stream Fusion/ by Duncan Coutts, Roman Leshchinskiy, and Don Stewart. N StrategyLibpackage  StrategyLib6 Strategiesmodule Control.Parallel. Strategies}Parallel 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. Mstorablevectorpackage storablevectorFast, packed, strict storable arrays with a list interface like ByteString Fast, packed, strict storable arrays with a list interface. This is much like bytestring but can be used for every Storable type. Lstorable-complexpackage storable-complex.Storable instance for Complex Provides a Storable instance for Complex which is binary compatible with C99, C++ and Fortran complex data types. The only purpose of this package is to provide a standard location for this instance so that other packages needing this instance can play nicely together. Storablemodule Foreign.StorableThe 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. cStorablemodule Data.Array.Storable(sA 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. K STMonadTranspackage  STMonadTransYA monad transformer version of the ST monad A monad transformer version of the ST monad stmpackage stmPMSoftware Transactional Memory A modular composable concurrency abstraction. STMmodule Control.Monad.STMSoftware 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.STM hSoftware Transactional Memory: a modular composable concurrency abstraction. See Jstemmerpackage stemmergHaskell bindings to the Snowball stemming library. Haskell bindings to the Snowball stemming library. Istatepackage state/Data.State Data.State Statemodule Control.Monad.StateState monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. 2 StablePtrmodule Foreign. StablePtrxThis module is part of the Foreign Function Interface (FFI) and will usually be imported via the module Foreign. X StableNamemodule System.Mem. StableNameV9Stable 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. bSTmodule Data.Array.ST9Mutable boxed and unboxed arrays in the ST monad. 6STmodule 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. Hsrcinstpackage srcinst !MBuild and install Debian packages completely from source srcinst is used to build and install Debian packages completely from source. All dependencies and build-dependencies are also built recursively from source. No binary .debs are required to install packages with this tool; however, it does generate binary .debs for your use. SrcDistmodule Distribution.Simple.SrcDist"Implements the "./setup sdist" command, which creates a source distribution for this package. That is, packs up the source code into a tarball. Gsqlitepackage sqlitea#NHaskell binding to sqlite3 Haskell binding to sqlite3 . F sphinx-clipackage  sphinx-cli#Sphinx CLI and demo of Haskell Sphinx library Sphinx CLI and demo of Haskell Sphinx library. This program is almost the same as the 'search' command of Sphinx and intended to be used for testing and debugging only. Esphinxpackage sphinx$Haskell bindings to the Sphinx full-text searching deamon. Haskell bindings to the Sphinx full-text searching deamon. This module is heavily inspired by the php and python client. Dspecial-functorspackage special-functors%Control.Applicative, Data.Foldable, Data.Traversable (compatibility package) This package contains Control.Applicative, Data.Foldable, Data.Traversable from 6.8's base for use in earlier GHC versions C sparsecheckpackage  sparsecheck&A Logic Programming Library for Test-Data Generation SparseCheck is a library for logic programming in Haskell that allows convenient description of test-data generators. B SpaceInvaderspackage  SpaceInvaders'-Video game Video game implemented in Yampa. Asonic-visualiserpackage sonic-visualiser)(Sonic Visualiser Library for reading and parsing Sonic Visualiser project files. Sonic Visualiser is available at . @soegtkpackage soegtk(? smallcheckpackage  smallcheck)+Another lightweight testing library in Haskell. SmallCheck is similar to QuickCheck (Claessen and Hughes 2000-) but instead of testing for a sample of randomly generated values, SmallCheck tests properties for all the finitely many values up to some depth, progressively increasing the depth used. >simseqpackage simseqo*Simulate sequencing with different models for priming and errors This is a simulator that can generate simulated sequences -- primarily EST type sequences, but quite possibly other types as well. Mail me for further information on usage etc. = simpleargspackage  simpleargs+Provides a more flexible getArgs function with better error reporting. The provided getArgs returns an arbitrary tuple of values instead of a list of Strings. This means that the number and type (i.e. parseability) of parameters are checked, and reported to the user. The module is not a substitute for proper error handling (use System.Console.GetOpt for that), but is useful for making quick and dirty command line tools a bit less dirty, without sacrificing the quick part. lSimplemodule Distribution.Simple-Explanation: Simple build system; basically the interface for Distribution.Simple.* modules. When given the parsed command-line args and package information, is able to perform basic commands like configure, build, install, register, etc. This module isn't called "Simple" because it's simple. Far from it. It's called "Simple" because it does complicated things to simple software. < Shu-thingpackage  Shu-thinga/A vector shooter game A 2-D vector graphics upwards-scrolling keyboard-controlled shooter. You shoot the enemies while dodging their bullets until you reach and defeat the enemy boss. Darcs repo available at . ;showpackage show0'Show' instances for Lambdabot This package provides ShowQ, ShowFun, and SimpleReflect. ShowFun gives us Typeable instances for neutring IO expressions. ShowQ adds SmallCheck & QuickCheck support. And SimpleReflect allows us to literally see how functions 'expand', through appropriate Show magic. See . QShowmodule Text.Show22WConverting values to readable strings: the Show class and associated functions. :Shellac-readlinepackage Shellac-readline2Readline backend module for Shellac This package provides a Shellac backend based on the GNU readline library. This backend features all the line editing capabilities provided by readline, as well as command completion and command history features. 9Shellac-editlinepackage Shellac-editline4Editline backend module for Shellac This package provides a Shellac backend based on the editline library. editline provides a subset of the functionality provided by the GNU readline library. However, it is licenced with a BSD-style license and is therefore suitable for some situations where GNU readline is not. This backend features all the line editing capabilities provided by editline. 8Shellac-compatlinepackage Shellac-compatline5"compatline" backend module for Shellac This package provides a Shellac backend which acts a thin interface for the Shellac-readline or Shellac-editline packages, depending on avaliability. Note that this package may be compiled against readline, which is licended under the GPL. 7Shellacpackage Shellac7fA framework for creating shell envinronments Shellac is a framework for building read-eval-print style shells. Shells are created by declaratively defining a set of shell commands and an evaluation function. Shellac supports multiple shell backends, including a 'basic' backend which uses only Haskell IO primitives and a full featured 'readline' backend based on the the Haskell readline bindings found in the standard libraries. This library attempts to allow users to write shells at a high level and still enjoy the advanced features that may be available from a powerful line editing package like readline. 6 shell-pipepackage  shell-pipe9Pipe streams through external shell commands Beginning with GHC-6.4 System.Process is available, which is the better choice. Original name was shell-haskell.  SetupWrappermodule Distribution.Simple. SetupWrapper:4The user interface to building and installing Cabal packages. If the Built-Type field is specified as something other than Custom, and the current version of Cabal is acceptable, this performs setup actions directly. Otherwise it builds the setup script and runs it with the given arguments. mSetupmodule Distribution.Simple.Setup<yExplanation: Data types and parser for the standard command-line setup. Will also return commands it doesn't know about. kSetupmodule Distribution.Setup<5 setlocalepackage  setlocale<JA Haskell interface to setlocale() A Haskell interface to @setlocale()@. Setmodule Data.Setm=An 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. 4sessionspackage sessions{ASession Types for Haskell Session Types for Haskell. Allows the specification of communication protocols and then validation that an implementation does not violate said protocol. Sequencemodule Data.SequencegBGeneral 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. 3seleniumpackage seleniumAFTest web applications through a browser. Haskell bindings to communicate with a Selenium Remote Control server. This package makes it possible to use Haskell to write test scripts that exercise web applications through a web browser. 2SDL-ttfpackage SDL-ttfYGBinding to libSDL_ttf 1SDL-mpegpackage SDL-mpegG0 SDL-mixerpackage  SDL-mixerGBinding to libSDL_mixer / SDL-imagepackage  SDL-imageHBinding to libSDL_image .SDL-gfxpackage SDL-gfx`HBinding to libSDL_gfx -SDLpackage SDLHBinding to libSDL Schemesmodule Data.Generics.SchemesH"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module provides frequently used generic traversal schemes. ,scgipackage scgiIA Haskell library for writing SCGI programs. This library lets you write SCGI programs. This package reuses the cgi package API, making it very easy to port CGI programs to SCGI. + scenegraphpackage  scenegraphJ!Scene Graph Scene Graph Library *sccpackage sccJStreaming component combinators SCC is a layered library of Streaming Component Combinators. The lowest layer defines a Pipe monad transformer that enables building of producer-consumer coroutine pairs. The next layer adds streaming component types, a number of primitive streaming components and a set of component combinators. Finally, there is an executable that exposes all functionality in a command-line shell. The library design is based on paper Mario Blažević, Streaming component combinators, Extreme Markup Languages, 2006. ) scaleimagepackage  scaleimageMScale an image to a new geometry Scale image is a small command line tool to scale an image file to a specified geometry. File types supported: png, jpg, gif. Input and output formats can differ. Example: > scaleimage 128 128 photo.gif photo.png ( sat-micro-hspackage  sat-micro-hsN#A minimal SAT solver A complete (in the logical sense) SAT solver with non-chronological backtracking. This is a Haskell implementation of (most of) the minimal OCaml solver described in the paper "SAT-MICRO: petit mais costaud!" by Sylvain Conchon, Johannes Kanig, and Stephane Lescuyer. 'satpackage sat%PLCNF SATisfier CNF(Clausal Normal Form) SATisfiability Solver and Generator 1 SampleVarmodule Control.Concurrent. SampleVarPSample variables &safecopypackage safecopyPgBinary serialization with version control. An extension to Data.Binary with built-in version control. %safepackage safeQPLibrary for safe (pattern match free) functions Partial functions from the base library, such as @head@ and @!!@, modified to return more descriptive error messages, programmer defined error messages, @Maybe@ wrapped results and default values. These functions can be used to reduce the number of unsafe pattern matches in your code. RWSmodule Control.Monad.RWS SDeclaration of the MonadRWS class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. $rss2ircpackage rss2irc TSubscribe to an RSS feed and write it to an IRC channel Subscribe to an RSS feed and write it to an IRC channel Example, announce Hackage updates in channel: > rss2irc irc.freenode.org 6667 #zid39kd3 rss2irc http://hackage.haskell.org/packages/archive/recent.rss "New package: " #rsspackage rss`U\A library for generating RSS 2.0 feeds. This library allows you to generate RSS 2.0 feeds. "rsaglpackage rsaglU#The RogueStar Animation and Graphics Library RSAGL, the RogueStar Animation and Graphics Library, includes a domain-specific monad for 3D modelling of arbitrary parametric surfaces, as well as an animation monad and arrow, which is more or less like YAMPA as a stack of arrow transformers. RSAGL was specifically designed for roguestar, but every effort has been made (including the license) to make it accessable to other projects that might benefit from it. The git repository is available at . ! rosezipperpackage  rosezipper;XYGeneric zipper implementation for Data.Tree Generic zipper implementation for Data.Tree  roguestar-glpackage  roguestar-glX+Sci-fi roguelike (turn-based, chessboard-tiled, role playing) game Roguestar is a science fiction themed roguelike (turn-based, chessboard-tiled, role playing) game written in Haskell. Roguestar uses OpenGL for graphics. This is still a very early release and several important things don't work. This initial release allows you to play one of six alien races. You begin the game stranded on an alien planet, fighting off an endless hoard of hostile robots. The git repository is available at . roguestar-enginepackage roguestar-engine5[!Sci-fi roguelike (turn-based, chessboard-tiled, role playing) game Roguestar is a science fiction themed roguelike (turn-based, chessboard-tiled, role playing) game written in Haskell. This package provides the core game engine; you'll probably want to also install the OpenGL client. This initial release allows you to play one of six alien races. You begin the game stranded on an alien planet, fighting off an endless hoard of hostile robots. The git repository is available at . rmonadpackage rmonad]ZRestricted monad library A library for restricted monads based on associated datatypes. This allows datatypes such as Set to be made into monads. Users can either use the NoImplicitPrelude extension and use Control.RMonad directly, or use Control.RMonad.AsMonad with the embed and unEmbed combinators to use the normal Prelude monad operations. RJsonpackage RJson_aA reflective JSON serializer/parser. See included README for some examples. This package uses the Scrap Your Boilerplate With Class approach to generics to implement a reflective JSON serializer and deserializer. Nested record types are automatically converted to corresponding JSON objects and vice versa. In both cases, various aspects of serializing and deserializing can be customized by implementing instances of type classes. Note that only Haskell 98 types can be serialized and deserialized, and that the use of strict constructors will lead to runtime errors with the current implemetation. Apart from the reflective stuff, the package also provides a straightforward Haskell representation of JSON data, together with a unicode-safe parser and a suitable implementation of 'show'. The code hasn't yet been tested for performance; it might be quite slow.  ReviewBoardpackage  ReviewBoardblHaskell bindings to ReviewBoard Haskell bindings to ReviewBoard (). reifypackage reify/cOSerialize data This is a library for reifying Haskell data structures in GHC. Registermodule Distribution.Simple.RegistercExplanation: Perform the "./setup register" action. Uses a drop-file for HC-PKG. See also Distribution.InstalledPackageInfo. regexqqpackage regexqq~dIA quasiquoter for PCRE regexes. A quasiquoter for Text.Regex.PCRE regexes. This makes use of a new GHC extension known as QuasiQuotes. QuasiQuotes do not appear in ghc until 6.9, BUT there is a patch for ghc-6.8.3 which adds quasiquote functionality. A patched version of ghc-6.8.3, made possible by audreyt's patch, is at . An example of the use of @regexqq@ is located at . Haddock docs are at . regexprpackage regexprfPregular expression like Perl/Ruby in Haskell Regular expression library like Perl/Ruby's regular expressions. This package has a module RegexPR. And RegexPR export functions matchRegexPR and gsubRegexPR. matchRegexPR :: String -> Maybe ((String, (String, String)), [(Int, String)]) gmatchRegexPR :: String -> [((String, (String, String)), [(Int, String)])] subRegexPR :: String -> String -> String gsubRegexPR :: String -> String -> String splitRegexPR :: String -> String -> [String] Examples: matchRegexPR "ab(cde)f\\1" "kkkabcdefcdefgh" => Just (("abcdefcde", ("kkk", "fgh")),[(1,"cde")]) matchRegexPR "(?<=hij)abc" "kkkabchijabcde" => Just (("abc",("kkkabchij","de")),[]) gsubRegexPR "\\G(\\d\\d\\d)" "\\1," "123456 789" => "123,456, 789" subRegexPR "(?<=(.)(.)(.))e" " \\3\\2\\1 " "abcdefg" => "abcd dcb fg" gsubRegexPR "(?ixm) aBc . # comment \n\n" "abc!" "abc\nABCDAbcAbc" => "abc!abc!abc!bc" gmatchRegexPR "(?=(? [(("abc", ("", "defdefabc")), []), (("abc", ("defdef", "")), [])] splitRegexPR "\\s*,\\s*" "a,b ,c\t ,d , e" => ["a","b","c","d","e"]  regex-trepackage  regex-treukFReplaces/Enhances Text.Regex The TRE backend to accompany regex-base  regex-tdfapackage  regex-tdfak^Replaces/Enhances Text.Regex A new all Haskell "tagged" DFA regex engine, inspired by libtre  regex-posixpackage  regex-posixlEReplaces/Enhances Text.Regex The posix regex backend for regex-base regex-pcre-builtinpackage regex-pcre-builtin mYReplaces/Enhances Text.Regex The PCRE backend to accompany regex-base, see www.pcre.org  regex-pcrepackage  regex-pcremYReplaces/Enhances Text.Regex The PCRE backend to accompany regex-base, see www.pcre.org  regex-parsecpackage  regex-parsec%nhReplaces/Enhances Text.Regex A better performance, lazy, powerful replacement of Text.Regex and JRegex  regex-dfapackage  regex-dfanUReplaces/Enhances Text.Regex The lazy DFA engine, based on CTKLight, for regex-base  regex-compatpackage  regex-compatJoVReplaces/Enhances Text.Regex One module layer over regex-posix to replace Text.Regex  regex-basepackage  regex-baseoQReplaces/Enhances Text.Regex Interface API for regex-posix,pcre,parsec,tdfa,dfa #ReadPrecmodule Text.ParserCombinators.ReadPrecmp@This library defines parser combinators for precedence parsing.  ReadPmodule Text.ParserCombinators.ReadPpPThis 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". hReadPmodule Distribution.Compat.ReadPr7This 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". See also Koen's paper Parallel Parsing Processes (http://www.cs.chalmers.se/~koen/publications.html). This version of ReadP has been locally hacked to make it H98, by Martin Sjgren mailto:msjogren@gmail.com readlinepackage readlinetAn interface to the GNU readline library More information on readline can be found at http:\/\/www.gnu.org\/directory\/readline.html. Readermodule Control.Monad.Readeru
  • 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://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. |ReadEmodule Distribution.ReadEySimple parsing with failure !Readmodule Text.ReadAzeConverting 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. reactivepackage reactive{Simple foundation for functional reactive programming /Reactive/ is a simple foundation for programming reactive systems functionally. Like Fran\/FRP, it has a notions of (reactive) behaviors and events. Like DataDriven, Reactive has a data-driven implementation. The main difference between Reactive and DataDriven is that Reactive builds on functional \"futures\" (using threading), while DataDriven builds on continuation-based computations. Please see the project wiki page: The module documentation pages have links to colorized source code and to wiki pages where you can read and contribute user comments. Enjoy! © 2007 by Conal Elliott; BSD3 license. rdtscpackage rdtsc~Binding for the rdtsc machine instruction This module provides the function 'rdtsc' for accessing the 'rdtsc' machine register on modern IA-32 processors. This is a 64-bit counter which counts the number of processor cycles since the machine has been powered up. Using this instruction, you can make very precise time measurements which are independent of the actual CPU frequency. But note that you can get strange results sometimes on a superscalar processor. Also note that the Haskell foreign function interface imposes some additional overheads. On my machine, it takes about 950 cycles to call this function twice and to compute the difference, whereas in C the overhead is only about 88 cycles. rbrpackage rbrMask nucleotide (EST) sequences in Fasta format RBR is a tool for masking EST sequences. It uses a statistical model to identify suspicious sequence parts, and masks them. The README has more details. The Darcs repository is at . DRatiomodule Data.Ratio'Standard functions on rational numbers  Ranged-setspackage  Ranged-setsBRanged sets for Haskell A ranged set is an ordered list of ranges. This allows sets such as all reals x such that (0.25 < x <= 0.75 or 1.4 <= x < 2.3 or 4.5 < x).  RandomDotOrgpackage  RandomDotOrgInterface to random.org Using this package you can generate random numbers, strings and randomize a sequence of numbers through the random.org website, which provides randomness through atmospheric noise rather than a PRNG. random-access-listpackage random-access-listBMRandom-access lists in Haskell A purely functional random-access list implementation using skew binary number representation. These lists offer indexed random-access in logarithmic time while still providing typical list functionality (head, tail, cons) in constant time. See \"Purely Functional Data Structures\" by Chris Okasaki. randompackage randomFrandom number library This package provides a random number library. Randommodule System.Random5lThis 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. quickcheck-scriptpackage quickcheck-scriptAutomated test tool for QuickCheck. A program to invoke quickCheck for all properties in a module (this version invokes ghci, but is easily modified to other interpreters instead).  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.  quantum-arrowpackage  quantum-arrowPAn embedding of quantum computation as a Haskell arrow This module is a loose port of the Quantum::Entanglement Perl module, which endows its host language with quantum-computationesque effects. In this Haskell version this is done using an arrow to take advantage of the arrow syntax for imperative-looking code. The module has all the fun bells and whistles of quantum computation, including entanglement and interference, even through conditionals (which the Perl analog does not support). The arrow is defined over any instance of MonadRandom, so if you want to get especially crazy, you can experiment with what quantum computation is like when observables include invoking continuations. qualifiedkeyword  qualified;Used to import a module, but not introduce a name into scope. For example, Data.Map exports lookup, which would clash with the Prelude version of lookup, to fix this:
import qualified Data.Map

f x = lookup x -- use the Prelude version
g x = Data.Map.lookup x -- use the Data.Map version 
Of course, Data.Map is a bit of a mouthful, so qualified also allows the use of as.
import qualified Data.Map as M

f x = lookup x -- use Prelude version
g x = M.lookup x -- use Data.Map version 
0QSemNmodule Control.Concurrent.QSemN~MQuantity semaphores in which each thread may wait for an arbitrary "amount". /QSemmodule Control.Concurrent.QSemSimple quantity semaphores.  pxsl-toolspackage  pxsl-toolsW.Parsimonious XML Shorthand Language--to-XML compiler The package contains the pxslcc compiler, which converts Parsimonious XML Shorthand Language (PXSL) into XML. PXSL ("pixel") is a convenient shorthand for writing markup-heavy XML documents. It provides XML authors and programmers with a simple, concise syntax that they can use to create XML documents. For more advanced users, PXSL offers customizable shortcuts and sophisticated refactoring tools like functional macros that can markedly reduce the size and complexity of markup-dense XML documents. pureMD5package pureMD5MD5 implementations that should become part of a ByteString Crypto package. An unrolled implementation of MD5 purely in Haskell.  pugs-HsSyckpackage  pugs-HsSyckiSFast, lightweight YAML loader and dumper This is a simple YAML ('Yet Another Markup Language') processor, used by the Pugs project for handling data serialization; this can be useful for optimization and caching purposes. This is an interface to the @syck@ C library for parsing and dumping YAML data. It lets you transform textual YAML data into an object of type 'YamlNode', and vice versa, fast. Note: This is an old HsSyck, as it was used by Pugs ('pugs-HsSyck'). You probably want the more updated HsSyck, available at .  pugs-hsregexpackage  pugs-hsregexHaskell PCRE binding A binding to Perl's advanced regular expression library, PCRE, for Haskell programs; this library is used by the Pugs interpreter/compiler.  pugs-DrIFTpackage  pugs-DrIFTȜDrIFT with pugs-specific rules. DrIFT is a type sensitive preprocessor for Haskell. It extracts type declarations and directives from modules. The directives cause rules to be fired on the parsed type declarations, generating new code which is then appended to the bottom of the input file. The rules are expressed as Haskell code, and it is intended that the user can add new rules as required. DrIFT automates instance derivation for classes that aren't supported by the standard compilers. In addition, instances can be produced in seperate modules to that containing the type declaration. This allows instances to be derived for a type after the original module has been compiled. As a bonus, simple utility functions can also be produced from a type.  pugs-compatpackage  pugs-compatPugspackage PugsKPtrmodule Foreign.PtrIThis 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. PSQueuepackage PSQueuePriority Search Queue A /priority search queue/ efficiently supports the opperations of both a search tree and a priority queue. A 'Binding' is a product of a key and a priority. Bindings can be inserted, deleted, modified and queried in logarithmic time, and the binding with the least priority can be retrieved in constant time. A queue can be built from a list of bindings, sorted by keys, in linear time. protocol-bufferspackage protocol-buffersParse Google Protocol Buffer specifications Parse http://code.google.com/apis/protocolbuffers/docs/proto.html and perhaps general haskell code to use them proplangpackage proplangA library for functional GUI development PropLang provides a combinator library for event-driven functional GUI programming. GUI elements can be tied together in a declarative style to make the resulting code clearer. sProgrammodule Distribution.Simple.ProgramoExplanation: A program is basically a name, a location, and some arguments. One nice thing about using it is that any program that is registered with Cabal will get some "configure" and ".cabal" helpers like --with-foo-args --foo-path= and extra-foo-args. There's also good default behavior for trying to find "foo" in PATH, being able to override its location, etc. There's also a hook for adding programs in a Setup.lhs script. See hookedPrograms in Distribution.Simple.UserHooks. This gives a hook user the ability to get the above flags and such so that they don't have to write all the PATH logic inside Setup.lhs. prof2dotpackage prof2dot~Convert GHC profiles into GraphViz's dot format prof2dot takes profiling information (a file generated by running a ghc-compiled application with the +RTS -px -RTS flags) and converts it to GraphViz's dot format. processpackage processVProcess libraries This package contains libraries for dealing with system processes. Processmodule System.ProcessOperations for creating and interacting with sub-processes. For a simpler, but less powerful, interface, see the System.Cmd module. ProbabilityMonadspackage ProbabilityMonads۩Probability distribution monads. Tools for random sampling, explicit enumeration of possible outcomes, and applying Bayes' rule. Highly experimental, and subject to change. In particular, the Data.Probability API is rather poor and could stand an overhaul.  probabilitypackage  probability>Probabilistic Functional Programming The Library allows exact computation with discrete random variables in terms of their distributions by using a monad. The monad is similar to the List monad for non-deterministic computations, but extends the List monad by a measure of probability. Small interface to R plotting.  Printf-THpackage  Printf-TH printf-maukepackage  printf-maukeA Perl printf like formatter. ZPrintfmodule Text.Printf A C printf like formatter. Primmodule Text.ParserCombinators.Parsec.PrimoParsec compatibility module Primmodule Text.Parsec.Prim"The primitive parser combinators.  PrettyPrintmodule Text. PrettyPrint Re-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 prettyJPretty-printing library This package contains a pretty-printing library. Prettymodule Language.Haskell.PrettyPretty printer for Haskell.  PreProcessmodule Distribution.Simple. PreProcessPreProcessors are programs or functions which input a filename and output a Haskell file. The general form of a preprocessor is input Foo.pp and output Foo.hs (where pp is a unique extension that tells us which preprocessor to use eg. gc, ly, cpphs, x, y, etc.). Once a PreProcessor has been added to Cabal, either here or with Distribution.Simple.UserHooks, if Cabal finds a Foo.pp, it'll run the given preprocessor which should output a Foo.hs. Preludemodule 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/. pqcpackage pqcKParallel batch driver for QuickCheck Parallel batch driver for QuickCheck PprLibmodule Language.Haskell.TH.PprLib?Pprmodule Language.Haskell.TH.Ppr{ powermatepackage  powermateWPowerMate bindings PowerMate bindings for Haskell, MPD bindings (barely) for Haskell.  postmasterpackage  postmaster6Postmaster ESMTP Server Postmaster implements an ESMTP server. Given a configuration, it starts up and listens for incoming SMTP connections, handles them, and pipes the accepted e-mail messages into an arbitrary local mailer of your choice. A good local mailer is Procmail. Beyond that, you can configure and modify every little step of the SMTP transaction. All the real work is done through call-back functions.  PostgreSQLpackage  PostgreSQL Thin wrapper over the C postgresql library A thin wrapper over the C postgresql library. Not yet complete, but certainly usable. Designed for PostgreSQL 8.1, but may be usable with other versions. posix-realtimepackage posix-realtime &POSIX Realtime functionality This package gives you access to the set of operating system services standardised by POSIX 1003.1b (or the IEEE Portable Operating System Interface for Computing Environments - IEEE Std. 1003.1). The package is not supported under Windows (except under Cygwin). Posixmodule System.FilePath.PosixlA library for FilePath manipulations, using Posix style paths on all platforms. Importing System.FilePath is usually better. POSIXmodule Data.Time.Clock.POSIX,bPOSIX time, if you need to deal with timestamps and the like. Most people won't need this module. Posmodule Text.ParserCombinators.Parsec.PosԹParsec compatibility module Posmodule Text.Parsec.Pos$Textual source positions. portspackage portsgThe Haskell Ports Library The Haskell Ports Library (HPL) supports /concurrent/ and /distributed Haskell/ programming in the IO monad _without_ relying on mutable variables. Instead, it supplies monotone single-assignment variable and ports abstractions. popenhspackage popenhspopenhs is a popen-like library for Haskell. It provides a convenient way of sending string input to a subprocess and reading output from it lazily. It requires the Posix module and has been tested under ghc5 so far. OPoolmodule 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.  polyparsepackage  polyparsegA variety of alternative parser combinator libraries. A variety of alternative parser combinator libraries, including the original HuttonMeijer set. The Poly sets have features like good error reporting, arbitrary token type, running state, lazy parsing, and so on. Finally, Text.Parse is a proposed replacement for the standard Read class, for better deserialisation of Haskell values from Strings. Polymodule Test.QuickCheck.Poly4This 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.Polyp pointfreepackage  pointfreeePointfree refactoring tool Stand-alone command-line version of the point-less plugin for lambdabot. pngloadpackage pngload3Pure Haskell loader for PNG images This package provides a simple PNG loader for PNG images. It currently supports 24bit RGB(A) images with no interlacing. pluginspackage pluginsDynamic linking for Haskell and C objects Dynamic linking and runtime evaluation of Haskell, and C, including dependency chasing and package resolution. Described in the paper: /Plugging Haskell In/, pkcs1package pkcs1&RSA encryption with PKCS1 padding This is an implementation of RSA encryption with PKCS1 padding, developed as part of the Barracuda ad-hoc P2P chat client. The Darcs repository can be found at Pipepackage Pipe6cProcess piping library A library with operations for piping data through a pipeline of processes.  photonamepackage  photonameRename JPEG photo files based on shoot date Command-line utility for renaming/moving photo image files based on EXIF tags. Written in Haskell. phooeypackage phooeyyFunctional user interfaces Phooey is a library for functional UIs, providing three different functional interfaces: Monad, Applicative, and Arrow. See the correspondingly named modules in the list below. The other modules are exposed for extensibility. Try out the examples in @src\/Examples\/@. Because this library uses reactive, compile apps with @-threaded@. See also * The project wiki page * Use of Phooey for composable interfaces in the TV library: * The implementation of data-driven computation (used in Phooey) from the TypeCompose library: This page and the module documentation pages have links to colorized source code and to wiki pages where you can read and contribute /user comments/. Enjoy! © 2006 by Conal Elliott; BSD3 license. pescapackage pesca'Proof Editor for Sequent Calculus Pesca is a program that helps in the construction of proofs in sequent calculus. It works both as a proof editor and as an automatic theorem prover. Proofs constructed in Pesca can both be seen on the terminal and printed into LaTeX files. The user of Pesca can choose among different versions of classical and intuitionistic proposition and predicate calculi, and extend them by systems of nonlogical axioms. The implementation of Pesca is written in the functional programming language Haskell.  permutationpackage  permutationqVPermutations and combinations A library for representing and applying permutations. Permmodule Text.ParserCombinators.Parsec.PermParsec compatibility module Permmodule Text.Parsec.Perma6This 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.  penn-treebankpackage  penn-treebankTools for manipulating the Penn TreeBank Tools for working with the Penn TreeBank Right now, this only includes a parser for the Penn TreeBank format. But additional tools would be more than welcome! See pdf2linepackage pdf2linekSimple command-line utility to convert PDF into text Simple command-line utility to convert PDF into text  pcre-lightpackage  pcre-lightA small, efficient and portable regex library for Perl 5 compatible regular expressions A small, efficient and portable regex library for Perl 5 compatible regular expressions The PCRE library is a set of functions that implement regular expression pattern matching using the same syntax and semantics as Perl 5. Test coverage data for this library is available at: pcappackage pcapo{A system-independent interface for user-level packet capture A system-independent interface for user-level packet capture  ParseUtilsmodule Language.Haskell. ParseUtils1"Utilities for the Haskell parser. o ParseUtilsmodule Distribution. ParseUtilsCUtilities for parsing PackageDescription and InstalledPackageInfo. Parsermodule Language.Haskell.ParserHaskell parser.  ParseMonadmodule Language.Haskell. ParseMonado)Monads for the Haskell parser and lexer. parselypackage parsely parsedatepackage  parsedate%Data and time parsing for CalendarTime This library provides a function for parsing dates and times given a date format string. This package creates CalendarTime values and is meant for use with the old-time package. New code should use the time package, which now includes parsing, instead. parsecpackage parsecFjMonadic 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.ParsecParsec compatibility module Parsecmodule Text.ParsecD parseargspackage  parseargsuYCommand-line argument parsing library for Haskell programs Parse command-line arguments  parse-dimacspackage  parse-dimacsQDIMACS CNF parser library A DIMACS CNF parser library, implemented with Parsec. PArrowspackage PArrows&Arrow parser combinators similar to Parsec PArrows is an arrows based parsing combinator library written in Haskell. The library is similar to Parsec, but arrows allow for more future optimizations. Currently PArrows is only tested with GHC, although making it work with Hugs should be easy. parportpackage parportSimply interfacing the parallel port on linux This is a simple library that lets you read and write pins on the parallel port. It is mainly intended for controlling and regulating hardware. parameterized-datapackage parameterized-dataParameterized data library implementing lightweight dependent types This library provides an implementation of parameterized types using type-level computations to implement the type parameters and emulate dependent types. parallelpackage parallelXparallel programming library This package provides a library for parallel programming. Parallelmodule Control.ParallelyParallel Constructs pandocpackage pandocConversion between markup formats Pandoc is a Haskell library for converting from one markup format to another, and a command-line tool that uses this library. It can read markdown and (subsets of) reStructuredText, HTML, and LaTeX, and it can write markdown, reStructuredText, HTML, LaTeX, ConTeXt, Docbook, RTF, groff man pages, and S5 HTML slide shows. Pandoc extends standard markdown syntax with footnotes, embedded LaTeX, definition lists, tables, and other features. A compatibility mode is provided for those who need a drop-in replacement for Markdown.pl. In contrast to existing tools for converting markdown to HTML, which use regex substitutions, pandoc has a modular design: it consists of a set of readers, which parse text in a given format and produce a native representation of the document, and a set of writers, which convert this native representation into a target format. Thus, adding an input or output format requires only adding a reader or writer. PageIOpackage PageIOPage-oriented extraction and composition library Provides an interface to the PageIn export format (.dux) from the StreamServe Persuasion(tm) platform, using it both as a data extraction as well as a page layout DSL. (Extremely experimental, no documentations at the moment!)  packedstringpackage  packedstring;(Deprecated) Packed Strings. (Deprecated) Packed Strings. z PackageIndexmodule Distribution.Simple. PackageIndexAn index of packages. tPackageDescriptionmodule Distribution.PackageDescription!Package description and parsing. qPackagemodule Distribution.PackageP6Packages are fundamentally just a name and a version.  OrdinalDatemodule Data.Time.Calendar. OrdinalDateISO 8601 Ordinal Date format COrdmodule Data.Ord Orderings opmlpackage opmlL#Representing and handling OPML subscription information. Representing and handling OPML subscription information. OPML (Outline Processor Markup Language) is an XML format for outlines, most commonly used to exchange lists of web feeds between web feed aggregators. OpenGLpackage OpenGLA binding for the OpenGL graphics system A Haskell binding for the OpenGL graphics system (GL, version 2.1) and its accompanying utility library (GLU, version 1.3). OpenGL is the industry's most widely used and supported 2D and 3D graphics application programming interface (API), incorporating a broad set of rendering, texture mapping, special effects, and other powerful visualization functions. For more information about OpenGL, please see: . OpenALpackage OpenALA binding to the OpenAL cross-platform 3D audio API A Haskell binding for the OpenAL cross-platform 3D audio API, appropriate for use with gaming applications and many other types of audio applications. For more information about OpenAL, please see: .  OpenAFP-Utilspackage  OpenAFP-UtilscAssorted utilities to work with AFP data streams Assorted utilities to work with AFP data streams OpenAFPpackage OpenAFP~[IBM AFP document format parser and generator IBM AFP document format parser and generator  open-witnesspackage  open-witnessopen witnesses Open witnesses are witnesses that can witness to any type. However, they cannot be constructed, they can only be generated in the IO monad. onlypackage only)A grep-like tool for filtering on words or lines. The 'only' command-line tool lets you search based on word patterns or line patterns like never before! Not only can you search with 'only -l patt' but you can select the n-th match with '-l n\/patt\/' and the next 3 lines with '-l \/patt\/0:3'.  omnicodecpackage  omnicodec-cdata encoding and decoding command line utilities Two simply command line tools built on dataenc. old-timepackage old-timenTime library. This package provides the old time library. For new code, the new time library is recommended.  old-localepackage  old-locale`slocale library This package provides the old locale library. For new code, the new locale library is recommended. ofkeyword ofA case expression has the general form
case e of { p1 match1; ...; pn matchn }
where each match is of the general form
| g1  -> e1
  ...
| gm -> em
   where decls
Each alternative consists of a pattern pi and its matches, matchi. Each match in turn consists of a sequence of pairs of guards gj and bodies ej (expressions), followed by optional bindings (decls) that scope over all of the guards and expressions of the alternative. An alternative of the form
pat -> exp where decls
is treated as shorthand for:
pat | True -> exp
  where decls
A case expression must have at least one alternative and each alternative must have at least one body. Each body must have the same type, and the type of the whole expression is that type. A case expression is evaluated by pattern matching the expression e against the individual alternatives. The alternatives are tried sequentially, from top to bottom. If e matches the pattern in the alternative, the guards for that alternative are tried sequentially from top to bottom, in the environment of the case expression extended first by the bindings created during the matching of the pattern, and then by the declsi in the where clause associated with that alternative. If one of the guards evaluates to True, the corresponding right-hand side is evaluated in the same environment as the guard. If all the guards evaluate to False, matching continues with the next alternative. If no match succeeds, the result is _|_. oeispackage oeis~Interface to the Online Encyclopedia of Integer Sequences Haskell interface to the Online Encyclopedia of Integer Sequences. ObjectIOpackage ObjectIOobddpackage obddOrdered Reduced Binary Decision Diagrams Construct, combine and query OBDDs; an efficient representation for formulas in propositional logic nymphaeapackage nymphaeaAn interactive GUI for manipulating L-systems An L-system is a small grammar specifying fractal functions, famous for their uncanny resemblance to plants and other lifeforms. nymphaea displays these L-systems in an attractive visual manner, and allows you to manipulate them.  numeric-questpackage  numeric-questMath and quantum mechanics List based linear algebra, similtaneous linear equations, eigenvalues and eigenvectors, roots of polynomials, transcendent functions with arbitrary precision implemented by continued fractions, quantum operations, tensors numeric-preludepackage numeric-prelude&An experimental alternative hierarchy of numeric type classes Revisiting the Numeric Classes The Prelude for Haskell 98 offers a well-considered set of numeric classes which cover the standard numeric types ('Integer', 'Int', 'Rational', 'Float', 'Double', 'Complex') quite well. But they offer limited extensibility and have a few other flaws. In this proposal we will revisit these classes, addressing the following concerns: [1] The current Prelude defines no semantics for the fundamental operations. For instance, presumably addition should be associative (or come as close as feasible), but this is not mentioned anywhere. [2] There are some superfluous superclasses. For instance, 'Eq' and 'Show' are superclasses of 'Num'. Consider the data type @ data IntegerFunction a = IF (a -> Integer) @ One can reasonably define all the methods of 'Algebra.Ring.C' for @IntegerFunction a@ (satisfying good semantics), but it is impossible to define non-bottom instances of 'Eq' and 'Show'. In general, superclass relationship should indicate some semantic connection between the two classes. [3] In a few cases, there is a mix of semantic operations and representation-specific operations. 'toInteger', 'toRational', and the various operations in 'RealFloating' ('decodeFloat', ...) are the main examples. [4] In some cases, the hierarchy is not finely-grained enough: Operations that are often defined independently are lumped together. For instance, in a financial application one might want a type \"Dollar\", or in a graphics application one might want a type \"Vector\". It is reasonable to add two Vectors or Dollars, but not, in general, reasonable to multiply them. But the programmer is currently forced to define a method for '(*)' when she defines a method for '(+)'. In specifying the semantics of type classes, I will state laws as follows: > (a + b) + c === a + (b + c) The intended meaning is extensional equality: The rest of the program should behave in the same way if one side is replaced with the other. Unfortunately, the laws are frequently violated by standard instances; the law above, for instance, fails for 'Float': > (1e20 + (-1e20)) + 1.0 = 1.0 > 1e20 + ((-1e20) + 1.0) = 0.0 For inexact number types like floating point types, thus these laws should be interpreted as guidelines rather than absolute rules. In particular, the compiler is not allowed to use them. Unless stated otherwise, default definitions should also be taken as laws. Thanks to Brian Boutel, Joe English, William Lee Irwin II, Marcin Kowalczyk, Ketil Malde, Tom Schrijvers, Ken Shan, and Henning Thielemann for helpful comments. Scope & Limitations\/TODO: * It might be desireable to split Ord up into Poset and Ord (a total ordering). This is not addressed here. * In some cases, this hierarchy may not be fine-grained enough. For instance, time spans (\"5 minutes\") can be added to times (\"12:34\"), but two times are not addable. (\"12:34 + 8:23\") As it stands, users have to use a different operator for adding time spans to times than for adding two time spans. Similar issues arise for vector space et al. This is a consciously-made tradeoff, but might be changed. This becomes most serious when dealing with quantities with units like @length\/distance^2@, for which @(*)@ as defined here is useless. (One way to see the issue: should @ f x y = iterate (x *) y @ have principal type @ (Ring.C a) => a -> a -> [a] @ or something like @ (Ring.C a, Module a b) => a -> b -> [b] @ ?) * I stuck with the Haskell 98 names. In some cases I find them lacking. Neglecting backwards compatibility, we have renamed classes as follows: Num --> Ring Fractional --> Field Floating --> Algebraic, Transcendental RealFloat --> RealTranscental * It's slightly unfortunate that 'abs' can no longer be used for complex numbers, since it is standard mathematically. 'magnitude' or more generally 'Algebra.NormedSpace.Euclidean.norm' can be used. But it had the wrong type before, and I couldn't see how to fit it in without complicating the hierarchy. Additional standard libraries might include Enum, IEEEFloat (including the bulk of the functions in Haskell 98's RealFloat class), VectorSpace, Ratio.T, and Lattice.  Numericmodule Numeric ^Odds and ends, mostly functions for reading and showing RealFloat-like kind of values. numberspackage numbers Various number types Instances of the numerical classes for a variety of different numbers: (computable) real numbers, arbitrary precision fixed numbers, arbitrary precision floating point numbers, differentiable numbers, symbolic numbers, natural numbers, interval arithmetic.  non-negativepackage  non-negative Non-negative numbers Provides a class for non-negative numbers, a wrapper which can turn any ordered numeric type into a member of that class, and a lazy number type for non-negative numbers (a generalization of Peano numbers). This library is used by the 'event-list' package. NHCmodule Distribution.Simple.NHC+ NGramspackage NGramsV Simple application for calculating n-grams using Google. An n-gram is a natural language processing technique for determining, given a list of words and a phrase, the probability that each of the words given will follow in the phrase. The executable provided asks for a phrase and a list of alternate ending words. It also asks for the type of n-gram to create (e.g., bi-gram, tri-gram). The probability for each possible phrase is then calculated using Google search results. newtypekeyword newtypeaThe newtype declaration is how one introduces a renaming for an algebraic data type into Haskell. This is different from type below, as a newtype requires a new constructor as well. As an example, when writing a compiler one sometimes further qualifies Identifiers to assist in type safety checks:
newtype SimpleIdentifier = SimpleIdentifier Identifier
newtype FunctionIdentifier = FunctionIdentifier Identifier

Most often, one supplies smart constructors and destructors for these to ease working with them. See the page on types for more information, links and examples. For the differences between newtype and data, see Newtype. newportspackage newportsPcList ports newer than N days on a FreeBSD system List ports newer than N days on a FreeBSD system  NewBinarypackage  NewBinaryA binary I/O library An older binary serialization library used by a number of projects. For new projects consider an alternative such as 'binary'.  network-rpcapackage  network-rpca;A cross-platform RPC library A cross-platform RPC library network-multicastpackage network-multicast,zSimple multicast library The "Network.Multicast" module is for sending UDP datagrams over multicast (class D) addresses. network-minihttppackage network-minihttphA ByteString based library for writing HTTP(S) servers and clients. A ByteString based HTTP(S) library  network-dnspackage  network-dns_A pure Haskell, asyncronous DNS client library A pure Haskell, asyncronous DNS client library network-connectionpackage network-connection$ A wrapper around a generic stream-like connection Many uses of Sockets needs a number of common functions, like a write queue, pushback etc. This provides such and allows code to be written generically for any type of connection, be a raw socket or an SSL connection. network-bytestringpackage network-bytestringtFast and memory efficient low-level networking Faster and more memory efficient low-level socket functions using 'Data.ByteString's instead of 'String's. networkpackage network<Networking-related facilities natpackage natvLazy binary natural numbers Implementation of natural numbers and integers by a binary representation. All functions are supposed to be as non-strict as possible. Furthermore the implementation is supposed to be reasonable efficient (in comparison to peano numbers). This implementation is inspired by a similar approach in the functional logic programming language Curry.  nanocursespackage  nanocurses)YSimple Curses binding This is a simple binding to the Curses library, a common Unix library which allows you to use a terminal as a canvas on which your paint are characters (instead of line by line output); Curses is probably most useful for rogue-like interfaces. Nanocurses differs from Hscurses and Mage in that it is intended to be portable to Curses libraries other than Ncurses, such as Ocurses, Irix's curses, and so on. So it may not have all their features. (It does not differ significantly from Hmp3's Curses binding, as the Curses.hsc in Nanocurses is essentially extracted from Hmp3.) nano-md5package nano-md5WEfficient, ByteString bindings to OpenSSL. Efficient, ByteString bindings to OpenSSL.  nano-hmacpackage  nano-hmac95Bindings to OpenSSL HMAC. Bindings to OpenSSL HMAC. -MVarmodule Control.Concurrent.MVarSynchronising variables multisetpackage multisetThe Data.MultiSet container type A variation of Data.Set. Multisets, sometimes also called bags, can contain multiple copies of the same key. muevalpackage mueval)Safely evaluate Haskell expressions Mueval is a Haskell interpreter. It uses the GHC API to evaluate arbitrary Haskell expressions. Importantly, mueval takes many precautions to defang and avoid \"evil\" code. It uses resource limits, whitelisted modules, special Show instances for IO, threads, changes of directory, and so on to sandbox the Haskell code. It is, in short, intended to be a standalone version of Lambdabot's famous evaluation functionality. For examples and explanations, please see the README file. Mueval is currently POSIX-only. mtlparsepackage mtlparse!parse library use mtl package parse library on mtl package Parse and ParseT is like State and StateT the package ease implementation of look-ahead look-behind include-file and so on. it is dirty code now mtl-tfpackage mtl-tf!SMonad transformer library using type families A port of the mtl to type families. mtlpackage mtlw"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. mpdmatepackage mpdmate#iMPD/PowerMate executable This library exploits the PowerMate bindings to provide PowerMate+MPD utility. MonthDaymodule Data.Time.Calendar.MonthDayh$+Monoidmodule Data.Monoid$The 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.  MonadRandompackage  MonadRandom%WRandom-number generation monad. Support for computations which consume random values.  MonadPromptpackage  MonadPrompto&MonadPrompt, implementation & examples "prompting" monad that allows splitting the description of a computation from the implementation of the effects used in that computation. http://www.haskell.org/pipermail/haskell-cafe/2008-January/038301.html monadLibpackage monadLib'IA collection of monad transformers. A collection of monad transformers. Monadiuspackage Monadius(2-D arcade scroller A fast-paced 2-D scrolling vector graphics clone of the arcade game Gradius; it is dedicated to the 20th anniversary of Gradius series. The Darcs repo is available at . monadenvpackage monadenv ) monad-parampackage  monad-paramU)nParameterized monads Implements parameterized monads by overloading the monad sugar with more liberal types. Monadmodule Control.Monad)fThe Functor, Monad and MonadPlus classes, with some useful operations on monads. mohwspackage mohws*Modular Haskell Web Server A web server with a module system and support for CGI. Based on Simon Marlow's original Haskell Web Server. modulekeyword module9+taken from: http://www.haskell.org/tutorial/modules.html Technically speaking, a module is really just one big declaration which begins with the keyword module; here's an example for a module whose name is Tree:
module Tree ( Tree(Leaf,Branch), fringe ) where

data Tree a                = Leaf a | Branch (Tree a) (Tree a) 

fringe :: Tree a -> [a]
fringe (Leaf x)            = [x]
fringe (Branch left right) = fringe left ++ fringe right
mmappackage mmap)-:Memory mapped files for POSIX and Windows This library provides a wrapper to mmap(2) or MapViewOfFile, allowing files or devices to be lazily loaded into memory as strict or lazy ByteStrings, ForeignPtrs or plain Ptrs, using the virtual memory subsystem to do on-demand loading. Modifications are also supported. mkcabalpackage mkcabal.WGenerate cabal files for a Haskell project Generate cabal files for a Haskell project mkbndlpackage mkbndl/Makes an OS X .app bundle from a binary. Allows you to easily construct a .app bundle from a binary complete with icon files and finder version info.  MissingPypackage  MissingPy/xHaskell interface to Python MissingPy is two things: A Haskell binding for many C and Python libraries for tasks such as data compression, databases, etc. This can be found in the MissingPy module tree. Also, it's a low-level Haskell binding to the Python interpreter to enable development of hybrid applications that use both environments. This can be found in the Python module tree. The Haskell bindings above use this environment. MissingPy permits you to call Python code from Haskell. It does NOT permit you to call Haskell code from Python. MissingPy is the companion to my MissingH library, and integrates with it. MissingHpackage MissingH2Large utility library MissingH is a library of all sorts of utility functions for Haskell programmers. It is written in pure Haskell and thus should be extremely portable and easy to use. miniplexpackage miniplexn3simple 1-to-N interprocess communication This module provides interprocess communication channels. This is meant to be used by logger-like programs that want to send status reports to N listeners (where N >= 0). minespackage minesl4Minesweeper simulation using neural networks A simulation of AI controlled minesweepers using neural networks and genetic algorithms. The minesweepers learn to sweep mines themselves and their movements are recorded in an SVG file.  mime-stringpackage  mime-string5{MIME implementation for String's. Implementation of the MIME RFCs 2045-2049. Rather rough around the edges at the moment. mimepackage mime,63Working with MIME types. Working with MIME types. midipackage midi6,Handling of MIDI messages and files MIDI is the Musical Instrument Digital Interface. The package contains definition of MIDI messages, reading and writing MIDI files. It contains no sending and receiving of MIDI messages. Cf. alsa-midi package. For music composition with MIDI output, see Haskore.  microbenchpackage  microbench7Microbenchmark Haskell code Microbenchmarking can be used to compare the speed of different approaches to the same operation. Since most code is very fast, to get accurate timing information you must run the operation many times and then divide to get the time per operation. This library manages the microbenchmarking process: it finds how many iterations of a function are needed to get a good timing estimate per iteration and prints out a human-readable \"Your code takes /n/ nanoseconds to run, and can run /n/ times per second\". metaplugpackage metaplug/:a tiny ghc api wrapper a ghc-api wrapper, designed to make the api more transparent across releases and offer eval and plugin esque facilities in the form of a simple, easy to modify library.  MetaObjectpackage  MetaObject#;cA meta-object system for Haskell based on Perl 6 A meta-object system for Haskell based on Perl 6 mersenne-random-pure64package mersenne-random-pure64;(Generate high quality pseudorandom numbers purely using a Mersenne Twister The Mersenne twister is a pseudorandom number generator developed by Makoto Matsumoto and Takuji Nishimura that is based on a matrix linear recurrence over a finite binary field. It provides for fast generation of very high quality pseudorandom numbers. The source for the C code can be found here: This library provides a purely functional binding to the 64 bit classic mersenne twister, along with instances of RandomGen, so the generator can be used with System.Random. The generator should typically be a few times faster than the default StdGen (but a tad slower than the impure 'mersenne-random' library based on SIMD instructions and destructive state updates. mersenne-randompackage mersenne-random6?Generate high quality pseudorandom numbers using a SIMD Fast Mersenne Twister The Mersenne twister is a pseudorandom number generator developed by Makoto Matsumoto and Takuji Nishimura that is based on a matrix linear recurrence over a finite binary field. It provides for fast generation of very high quality pseudorandom numbers This library uses SFMT, the SIMD-oriented Fast Mersenne Twister, a variant of Mersenne Twister that is much faster than the original. It is designed to be fast when it runs on 128-bit SIMD. It can be compiled with either SSE2 and PowerPC AltiVec support, to take advantage of these instructions. By default the period of the function is 2^19937-1, however, you can compile in other defaults. Note that this algorithm on its own is not cryptographically secure. For more information about the algorithm and implementation, see the SFMT homepage, and, Mutsuo Saito and Makoto Matsumoto, /SIMD-oriented Fast Mersenne Twister: a 128-bit Pseudorandom Number Generator/, in the Proceedings of MCQMC2006, here: MemoTriepackage MemoTrieCTrie-based memo functions MemoTrie provides a basis for memoized functions over some domains, using tries. It's based on some code I got from Spencer Janssen. Project wiki page: The module documentation pages have links to colorized source code and to wiki pages where you can read and contribute user comments. Enjoy! © 2008 by Conal Elliott; BSD3 license. WMemmodule System.MemEMemory-related system things. mdopackage mdoF"Command-line tool to run a command on each of the items. Usage: mdo COMMAND [BEFORE... --] ITEMS... [--- AFTER...] Run COMMAND on each of the ITEMS. Arguments in BEFORE are used as initial arguments to each invocation. Arguments in AFTER are used as trailing arguments to each invocation. mdokeyword mdoKG<the recursive do keyword enabled by -fglasgow-exts MaybeTpackage MaybeTGBMaybeT monad transformer Support for computations with failures. maybenchpackage maybench#HAutomated benchmarking tool Maybench is a tool for comparing the performance between two versions of the same program, on a series of benchmarks that you design. Maybench aims to be easy to use, almost as easy as running "time your-program arg1..arg2". Ideally, it should be a simple matter for outsiders to write timing tests for your programming project and contribute them as part of your performance testing suite. The Darcs repository is available at .  Maybemodule Data.MaybeCJ+The Maybe type, and associated operations.  matrix-marketpackage  matrix-marketJRead and write NIST Matrix Market files The Matrix Market (MM) exchange formats provide a simple mechanism to facilitate the exchange of matrix data. In particular, the objective has been to define a minimal base ASCII file format which can be very easily explained and parsed, but can easily adapted to applications with a more rigid structure, or extended to related data objects. The MM exchange format for matrices is really a collection of affiliated formats which share design elements. In the initial specification, two matrix formats are defined. Coordinate Format - A file format suitable for representing general sparse matrices. Only nonzero entries are provided, and the coordinates of each nonzero entry is given explicitly. Array Format - A file format suitable for representing general dense matrices. All entries are provided in a pre-defined (column-oriented) order. For more information, see the NIST Matrix Market webpage: Marshalmodule Foreign.MarshalNMarshalling support aMArraymodule Data.Array.MArray OAn 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.  markov-chainpackage  markov-chainOMarkov Chains for generating random sequences with a user definable behaviour. This library can be used to generate random sequences of anything with a behaviour that is adapted to some training data. Input a marketing text or a speech and recompose it to another arbitrary text of this sort. Input a dictionary of person names and create new names. Input a sequence of notes and get out a new melody. Input a set of Haskell modules and generate ... nice idea but the result will certainly have neither correct syntax nor types. I think, it's a good thing about Haskell, that you cannot fool it so easily. The idea is very simple: The algorithm analyses your input\/training data with respect to how likely an @a@ or @e@ follows the letters @r@ and @e@. Then on recomposition it chooses subsequent letters randomly according to the frequencies found in the training data. This library is well suited for /bull-shit generators/. Mapmodule Data.MapSAn 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. rMakemodule Distribution.MakeWUses the parsed command-line from Distribution.Setup in order to build Haskell tools using a backend build system based on make. Obviously we assume that there is a configure script, and that after the ConfigCmd has been run, there is a Makefile. Further assumptions:
  • ConfigCmd We assume the configure script accepts --with-hc, --with-hc-pkg, --prefix, --bindir, --libdir, --libexecdir, --datadir.
  • BuildCmd We assume that the default Makefile target will build everything.
  • InstallCmd We assume there is an install target. Note that we assume that this does *not* register the package!
  • CopyCmd We assume there is a copy target, and a variable $(destdir). The copy target should probably just invoke make install recursively (e.g. $(MAKE) install prefix=$(destdir)/$(prefix) bindir=$(destdir)/$(bindir). The reason we can't invoke make install directly here is that we don't know the value of $(prefix).
  • SDistCmd We assume there is a dist target.
  • RegisterCmd We assume there is a register target and a variable $(user).
  • UnregisterCmd We assume there is an unregister target.
  • HaddockCmd We assume there is a docs or doc target.
magicpackage magic\]Interface to C file/magic library This package provides a Haskell interface to the C libmagic library. With it, you can determine the type of a file by examining its contents rather than its name. The Haskell interface provides a full-featured binding. magepackage mage^xRogue-like A simple rogue-like; currently has a Curses interface and simple movement and dungeon creation capbilities. Lucupackage Lucu!_HTTP Daemonic Library Lucu is an HTTP daemonic library. It can be embedded in any Haskell program and runs in an independent thread. Lucu is not a replacement for Apache. It is intended to be used to create an efficient web-based application without messing around FastCGI. It is also intended to be run behind a reverse-proxy so it doesn't have some facilities like logging, client filtering and so on. LRUpackage LRU`"Implements an LRU data structure logictpackage logict(a(A backtracking logic-programming monad. A continuation-based, backtracking, logic programming monad. An adaptation of the two-continuation implementation found in the paper "Backtracking, Interleaving, and Terminating Monad Transformers" available here: logfloatpackage logfloatbLog-domain floating point numbers This module presents a class for storing numbers in the log-domain. The main reason for doing this is to prevent underflow when multiplying many probabilities as is done in Hidden Markov Models. It is also helpful for preventing overflow. lochpackage lochcfSupport for precise error locations in source files Location-emitting tracing and errors for Haskell  LocalTimemodule Data.Time. LocalTime\dLocalBuildInfomodule Distribution.Simple.LocalBuildInfod Definition of the LocalBuildInfo data type. This is basically the information that is gathered by the end of the configuration step which could include package information from ghc-pkg, flags the user passed to configure, and the location of tools in the PATH. llvmpackage llvmeMBindings to the LLVM compiler toolkit Bindings to the LLVM compiler toolkit ListLikepackage ListLike]fGeneric support for list-like structures Generic support for list-like structures in Haskell. The ListLike module provides a common interface to the various Haskell types that are list-like. Predefined interfaces include standard Haskell lists, Arrays, ByteStrings, and lazy ByteStrings. Custom types can easily be made ListLike instances as well. ListLike also provides for String-like types, such as String and ByteString, for types that support input and output, and for types that can handle infinite lists.  list-extraspackage  list-extrashCommon not-so-common functions for lists Common not-so-common functions for lists. Since "Data.List.Extras" is prime realestate for extensions to "Data.List", if you have something you'd like to contribute feel free to contact the maintainer (I'm friendly). I'm amenable to adopting code if you think your functions aren't enough for a package on their own. Or if you would rather maintain a separate package I can share the @Data.List.Extras.Foo@ namespace. AListmodule Data.ListjOperations on lists. Listmodule Control.Monad.ListjThe List monad.  lispparserpackage  lispparser#kSimple parser for LISP S-expressions A simple parser for LISP S-expressions, using Parsec. This comes from Jonathan Tang's tutorial, /Write Yourself a Scheme in 48 Hours/. linkchkpackage linkchklTlinkchk is a network interface link ping monitor. It supports both IPv4 and IPv6. It works by monitoring the routing table and pinging the gateway (next hop) of a network interface. When the link is up and functioning the ping time is displayed in a small gtk window, otherwise the link status is displayed. linkchk can also run in a tty. line2pdfpackage line2pdfmkSimple command-line utility to convert text into PDF Simple command-line utility to convert text into PDF lighttpd-conf-qqpackage lighttpd-conf-qq-nA QuasiQuoter for lighttpd configuration files. A QuasiQuoter for lighttpd configuration files. See Language.Haskell.TH.Quote for details on QuasiQuoters. Haddock docs are at .  lighttpd-confpackage  lighttpd-confdoLighttpd configuration file tools. Lighttpd configuration file tools. Haddock docs are at . pLicensemodule Distribution.LicenseGp{The License datatype. For more information about these and other open-source licenses, you may visit http://www.opensource.org/. I am not a lawyer, but as a general guideline, most Haskell software seems to be released under a BSD3 license, which is very open and free. If you don't want to restrict the use of your software or its source code, use BSD3 or PublicDomain. libxmlpackage libxmlq`Binding to libxml2 Minimal binding to libxml2. Additional functions will be added when needed. libmpdpackage libmpdxrgAn MPD client library. A client library for MPD, the Music Player Daemon (). libGenIpackage libGenI sA natural language generator (specifically, an FB-LTAG surface realiser) A natural language generator (specifically, an FB-LTAG surface realiser) Libmodule Language.Haskell.TH.Libslhs2texpackage lhs2textqPreprocessor for typesetting Haskell sources with LaTeX Preprocessor for typesetting Haskell sources with LaTeX Lexermodule Language.Haskell.LexertLexer for Haskell. "Lexmodule Text.Read.Lext.The cut-down Haskell lexer, used by Text.Read letkeyword letNuLet expressions have the general form:
let { d1; ...; dn } in e
They introduce a nested, lexically-scoped, mutually-recursive list of declarations (let is often called letrec in other languages). The scope of the declarations is the expression e and the right hand side of the declarations. Within do-blocks or list comprehensions let { d1 ; ... ; dn } without in serves to indroduce local bindings. leksahpackage leksah6wfHaskell IDE written in Haskell An Integrated Development Environment for Haskell written in Haskell. LDAPpackage LDAPw Haskell binding for C LDAP API lcspackage lcsxFind longest common sublist of two lists Provides a function lcs that takes two lists and returns a longest common sublist. For example, lcs "abcd" "acbd" is either "abd" or "acd". The package provides a simple, stupid and (most of all) slow implementation that needs, for inputs of length m and n, O(m+n) space and O((m+n)!) time in the worst case. It also provides an implementation of the Hunt-Szymanski LCS algorithm, based on that in "String searching algorithms" by Graham A Stephen, ISBN 981021829X. Given inputs xs and ys of length m and n respectively, where there are r pairs (x, y) where x is in xs, y is in ys and x == y, Hunt-Szymanski needs O(r+m+n) space and O((r+m+n)*log(m+n)) time. Thus this is O((m+n)^2) space and O((m+n)^2*log(m+n)) time in the worst case. lazysmallcheckpackage lazysmallcheckQ{A library for demand-driven testing of Haskell programs Lazy SmallCheck is a library for exhaustive, demand-driven testing of Haskell programs. It is based on the idea that if a property holds for a partially-defined input then it must also hold for all fully-defined refinements of the that input. Compared to ``eager'' input generation as in SmallCheck, Lazy SmallCheck may require significantly fewer test-cases to verify a property for all inputs up to a given depth.  lazyarraypackage  lazyarray]}uEfficient implementation of lazy monolithic arrays (lazy in indexes). This package built on standard array package adds support for lazy monolithic arrays. Such arrays are lazy not only in their values, but in their indexes as well. Read the paper \"Efficient Graph Algorithms Using Lazy Monolithic Arrays\" () for further details. Lazymodule Text.Parsec.ByteString.LazyPMake lazy ByteStrings an instance of Stream with Char token type. FLazymodule Data.STRef.Lazy)Mutable references in the lazy ST monad. Lazymodule Data.ByteString.LazyA 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.Lazy Lazy state monads. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. See below for examples. 7Lazymodule Control.Monad.ST.LazyCThis 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.Lazy0Lazy RWS monad. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. laxpackage lax)Lax arrows Lax arrows are variants of other arrows which are “less strict” than the original arrows. They can be used, for example, to produce I\/O fixpoints in situations where @fixIO@ would fail. ~ language-cpackage  language-c2Analysis and generation of C code Language C is a haskell library for the analysis and generation of C code. It features a complete, well tested parser and pretty printer for all of C99 and a large set of GNU extensions. Languagemodule Text.ParserCombinators.Parsec.Language`Parsec 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.Langu} LambdaShellpackage  LambdaShell"Simple shell for evaluating lambda expressions The lambda shell is a feature-rich shell environment and command-line tool for evaluating terms of the pure, untyped lambda calculus. The Lambda Shell builds on the shell creation framework Shellac, and showcases most of Shellac's features. | LambdaHackpackage  LambdaHack/a small roguelike game a small roguelike game { lambdaFeedpackage  lambdaFeedaXRSS 2.0 feed generator LambdaFeed generates RSS 2.0 XML feeds and matching HTML files. zlambdabot-utilspackage lambdabot-utilsUtility libraries for the advanced IRC bot, Lambdabot Lambdabot is an IRC bot written over several years by those on the #haskell IRC channel. Our own custom libraries for various plugin functions. AltTime.hs: alternate version of the time library MiniHTTP.hs: a mini http server Process.hs: a wrapper over System.Process Regex.hsc: a fast packed string regex library Serial.hs:: a serialisation API Util.hs: miscellaneous string, and other, functions y lambdabotpackage  lambdabotA multi-talented IRC bot Lambdabot is a Haskell development tool, written in Haskell. It operates as a command line tool, embedded in an editor, embedded in GHCi, via internet relay chat and on the web. xkibropackage kibro7Web development framework. Web development framework. keywordpackage keywordL#Haskell keywords, always available wkbq-gupackage kbq-guhRpoku spoken word programming language Rpoku spoken word programming language compilers or translators Julianmodule Data.Time.Calendar.JulianCvjsonpackage jsonjSupport for serialising Haskell to and from JSON JSON (JavaScript Object Notation) is a lightweight data-interchange format. It is easy for humans to read and write. It is easy for machines to parse and generate. It is based on a subset of the JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999. This library provides a parser and pretty printer for converting between Haskell values and JSON. JHCmodule Distribution.Simple.JHCO6Build and install functionality for the JHC compiler. ujackpackage jackbBindings for the JACK Audio Connection Kit Very basic bindings for the JACK Audio Connection Kit BIxmodule Data.Ix9The 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). tivorpackage ivorTheorem proving library based on dependent type theory Ivor is a type theory based theorem prover, with a Haskell API, designed for easy extending and embedding of theorem proving technology in Haskell applications. It provides an implementation of the type theory and tactics for building terms, more or less along the lines of systems such as Coq or Agda, and taking much of its inspiration from Conor McBride's presentation of OLEG. The API provides a collection of primitive tactics and combinators for building new tactics. It is therefore possible to build new tactics to suit specific applications. Ivor features a dependent type theory similar to Luo's ECC with definitions (and similar to that implemented in Epigram), with dependent pattern matching, and experimental multi-stage programming support. Optionally, it can be extended with heterogeneous equality, primitive types and operations, new parser rules, user defined tactics and (if you want your proofs to be untrustworthy) a fixpoint combinator. s ircbouncerpackage  ircbouncer'(IRC bouncer A very simple IRC bouncer. rircpackage irctdA small library for parsing IRC messages. A set of combinators and types for parsing IRC messages. qipprintpackage ipprintTiny helper for pretty-printing values in ghci console Tiny helper for pretty-printing values in ghci console Usage example: >Prelude> let e = replicate 5 [1..14] -- value we want to print >Prelude> :m + IPPrint >Prelude IPPrint> pprint e > [[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], > [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], > [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], > [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], > [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]] pipcpackage ipc*eHigh level inter-process communication library Provides inter-process communication at a high level oIOSpecpackage IOSpecLA pure specification of the IO monad. This package consists of several modules, that give a pure specification of functions in the IO monad: * "Test.IOSpec.Fork": a pure specification of 'forkIO'. * "Test.IOSpec.IORef": a pure specification of most functions that create and manipulate on 'IORefs'. * "Test.IOSpec.MVar": a pure specification of most functions that create and manipulate and 'MVars'. * "Test.IOSpec.STM": a pure specification of 'atomically' and the 'STM' monad. * "Test.IOSpec.Teletype": a pure specification of 'getChar', 'putChar', and several related Prelude functions. Besides these modules containing the specifications, there are a few other important modules: * "Test.IOSpec.Types": defines the 'IOSpec' type and several amenities. * "Test.IOSpec.VirtualMachine": defines a virtual machine on which to execute pure specifications. * "Test.IOSpec.Surrogate": a drop-in replacement for the other modules. Import this and recompile your code once you've finished testing and debugging. There are several well-documented examples included with the source distribution. 4IORefmodule Data.IORef7$Mutable references in the IO monad. nIORpackage IORRegion based resource management for the IO monad. IOR monad is a wrapper around IO that allows region based resource management. IOmodule System.IO0The standard IO library. `IOmodule Data.Array.IOz2Mutable boxed and unboxed arrays in the IO monad. IntSetmodule Data.IntSetߥAn 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). IntMapmodule Data.IntMapAn 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.
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 System.Process. Internals<Operations for creating and interacting with sub-processes.  Internalsmodule System.Posix. Internals"POSIX support layer for the standard libraries. This library is built on *every* platform, including Win32. Non-posix compliant in order to support the following features: * S_ISSOCK (no sockets in POSIX) Internalmodule Data.ByteString.Lazy.Internal78A 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 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. m interludepackage  interlude{Replaces some Prelude functions for enhanced error reporting Interlude is a CPP include file, and a module which you can use instead of the (often implicit) Prelude import. It replaces some partial functions (i.e. functions that may fail on correctly typed input like 'head []') with pattern matches, so that a sensible error message that includes location can be printed out. linterleavableIOpackage interleavableIOҵUse other Monads in functions that asks for an IO Monad. This module provides utilities to use functions that are not in the IO Monad as a callback in functions that expects an IO Monad. kinterleavableGenpackage interleavableGenͶGenerates a version of a module using InterleavableIO This program generates a version of a module that uses IO a functions, with MonadIO m => m a when the function returns IO, or InterleavableIO m => m a when an IO a function is passed as a callback.  Intmodule Data.IntSigned integer types  Instancesmodule Data.Generics. InstancesN"Scrap your boilerplate" --- Generic programming in Haskell See http://www.cs.vu.nl/boilerplate/. The present module instantiates the class Data for Prelude-like datatypes. (This module does not export anything. It really just defines instances.) * Instancesmodule Control.Monad. InstancesFunctor and Monad instances for (->) r and Functor instances for (,) a and Either a. instancekeyword instanceLAn instance declaration declares that a type is an instance of a class and includes the definitions of the overloaded operations - called class methods - instantiated on the named type.
instance Num Int  where
  x + y       =  addInt x y
  negate x    =  negateInt x
nInstalledPackageInfomodule Distribution.InstalledPackageInfoThis is the information about an installed package that is communicated to the hc-pkg program in order to register a package. ghc-pkg now consumes this package format (as of verison 6.4). This is specific to GHC at the moment.  InstallDirsmodule Distribution.Simple. InstallDirsDefinition of the LocalBuildInfo data type. This is basically the information that is gathered by the end of the configuration step which could include package information from ghc-pkg, flags the user passed to configure, and the location of tools in the PATH. Installmodule Distribution.Simple.InstallMExplanation: Perform the "./setup install" and "./setup copy" actions. Move files into place based on the prefix argument. VInfomodule System.Info [Information about the characteristics of the host system lucky enough to run your program. infixrkeyword infixr?A fixity declaration gives the fixity and binding precedence of one or more operators. The integer in a fixity declaration must be in the range 0 to 9. A fixity declaration may appear anywhere that a type signature appears and, like a type signature, declares a property of a particular operator. There are three kinds of fixity, non-, left- and right-associativity (infix, infixl, and infixr, respectively), and ten precedence levels, 0 to 9 inclusive (level 0 binds least tightly, and level 9 binds most tightly).
module Bar where
  infixr 7 `op`
  op = ...
infixlkeyword infixl?A fixity declaration gives the fixity and binding precedence of one or more operators. The integer in a fixity declaration must be in the range 0 to 9. A fixity declaration may appear anywhere that a type signature appears and, like a type signature, declares a property of a particular operator. There are three kinds of fixity, non-, left- and right-associativity (infix, infixl, and infixr, respectively), and ten precedence levels, 0 to 9 inclusive (level 0 binds least tightly, and level 9 binds most tightly).
module Bar where
  infixr 7 `op`
  op = ...
jinfixpackage infixcInfix expression re-parsing (for HsParser library) The Haskell parser does not consider the fixity of operators when parsing infix applications. All infix applications are thus parsed as if the operators were all left associative with the same precedence. infixkeyword infix?A fixity declaration gives the fixity and binding precedence of one or more operators. The integer in a fixity declaration must be in the range 0 to 9. A fixity declaration may appear anywhere that a type signature appears and, like a type signature, declares a property of a particular operator. There are three kinds of fixity, non-, left- and right-associativity (infix, infixl, and infixr, respectively), and ten precedence levels, 0 to 9 inclusive (level 0 binds least tightly, and level 9 binds most tightly).
module Bar where
  infixr 7 `op`
  op = ...
iinfinitypackage infinityh IndentParserpackage  IndentParser2Combinators for parsing indentation based syntatic structures This package exposes two modules, 'Text.ParserCombinators.Parsec.IndentParser' and 'Text.ParserCombinators.Parsec.IndentToken', for constructing parser combinators for indentation based syntactic structures. The former exports the basic indentation parser combinators and the later together with 'Text.ParserCombinators.Parsec.Language' and 'Text.ParserCombinators.Parsec.Token' can be used to define tokenisers for programming languages. gINblobspackage INblobsUEditor and interpreter for Interaction Nets INblobs is a visual tool developed at Minho for integrated development with Interaction Nets (). INblobs includes a visual editor that allows users to edit both interaction nets and interaction rules; nets may then be reduced within the tool, or else exported in a text format to be given as input to other tools. inkeyword inLet expressions have the general form:
let { d1; ...; dn } in e
They introduce a nested, lexically-scoped, mutually-recursive list of declarations (let is often called letrec in other languages). The scope of the declarations is the expression e and the right hand side of the declarations. Within do-blocks or list comprehensions let { d1 ; ... ; dn } without in serves to indroduce local bindings. importkeyword importtModules may reference other modules via explicit import declarations, each giving the name of a module to be imported and specifying its entities to be imported. For example:
 module Main where
   import A
   import B
   main = A.f >> B.f

 module A where
   f = ...

 module B where
   f = ...
See also as, hiding and qualified fImlibpackage ImlibeIFSpackage IFSyIterated Function System generation for Haskell Library to describe IFS and generate PPM pictures from the descriptions diffpackage iffVhConstructing and dissecting IFF files The Interchange File Format of Electronic Arts is a container format used for many kinds of data. Common file formats are e.g. IFF-8SVX for 8-bit sampled sounds and IFF-ILBM for images in an interleaved way that is close to image representation in Amiga computers. Cf. This library does only handle the IFF container format and does not handle any specific IFF data type. The intention is the same as of Amiga's @iffparse.library@. See . ifkeyword ifA conditional expression has the form:
if e1 then e2 else e3
and returns the value of e2 if the value of e1 is True, e3 if e1 is False, and _|_ otherwise.
max a b = if a > b then a else b
c iExceptionpackage  iExceptiondVersion of Control.Exception using InterleavableIO. This module was generated by interleavableGen. b ieee-utilspackage  ieee-utilsieee-utils IEEE 754 (Standard for Binary Floating-Point Arithmetic) Utilities. Haddock docs are at . aieeepackage ieeeSApproximate comparisons for IEEE floating point numbers Approximate comparison of floating point numbers based on the algorithm in Section 4.2.2 of Knuth's _Seminumerical Algorithms_, NaN-aware minimum and maximum, and a type class for approximate comparisons. 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://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. `iconvpackage iconvEwString encoding conversion Provides an interface to the POSIX iconv library functions for string encoding conversion. _IArraymodule Data.Array.IArrayImmutable 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. _i18npackage i18nCInternationalization for Haskell Internationalization for Haskell ^hybridpackage hybridjA implementation of a type-checker for Lambda-H We have made an implementation of the language Lambda-H, described in the paper "Hybrid Type Checking" by Cormac Flanagan, which uses a hybrid type checking system. We have tried to keep our implementation as close as possible to the language defined in Flanagan's paper. The result should be seen as a proof-of-concept, and an exercise in implementing a hybrid type checker for a language with advanced type specifications. ]hxwebpackage hxwebmwMinimal webframework using fastcgi, libxml2 and libxslt. Fast template based web-framework using libxslt and fastcgi. \ hxt-filterpackage  hxt-filter8A collection of tools for processing XML with Haskell (Filter variant). The Haskell XML Toolbox bases on the ideas of HaXml and HXML. This package is a compatibitlity package for old software working with the filter approach like in HaXml. For new projects it's recomended to use the arrow based library (hxt). [hxtpackage hxttsA collection of tools for processing XML with Haskell. The Haskell XML Toolbox bases on the ideas of HaXml and HXML, but introduces a more general approach for processing XML with Haskell. The Haskell XML Toolbox uses a generic data model for representing XML documents, including the DTD subset and the document subset, in Haskell. It contains a validating XML parser, a HTML parser, namespace support, an XPath expression evaluator, an XSLT library, a RelaxNG schema validator and funtions for serialization and deserialization of user defined data. The libraray make extensive use of the arrow approach for processing XML. ZHXQpackage HXQ JA Compiler from XQuery to Haskell HXQ is a fast and space-efficient compiler from XQuery (the standard query language for XML) to embedded Haskell code. The translation is based on Haskell templates. It also provides an interpreter for evaluating XQueries from input and an optional database connectivity using HDBC and SQLite3. 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. Hugsmodule Distribution.Simple.Hugs*Build and install functionality for Hugs. HughesPJmodule 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 Y HTTP-Simplepackage  HTTP-SimpleaOEnable simple wrappers to Network.HTTP Enable simple wrappers to Network.HTTP XHTTPpackage HTTPWhtmlpackage htmleHTML combinator library This package contains a combinator library for constructing HTML documents. VHTFpackage HTFmThe Haskell Test Framework The HTF lets you write HUnit tests (http://hunit.sourceforge.net) and QuickCheck (http://www.cs.chalmers.se/~rjmh/QuickCheck/) properties in an easy and convenient way. Additionally, the HTF provides a facility for testing programs by running them and comparing the actual output with the expected output (so called "file-based tests"). Uhtarpackage htarPCommand-line TAR utility. Command-line TAR utility which uses the tar package. Thsyslogpackage hsyslog]FFI interface to syslog(3) from POSIX.1-2001. FFI interface to syslog(3) from POSIX.1-2001. S hsXenCtrlpackage  hsXenCtrl'FFI bindings to the Xen Control library. FFI bindings to xenctrl.h and perhaps more. The System.Xen.CBindings should provide direct access to the C API while System.Xen will eventually provide a higher level abstraction. This library binding allows pure haskell programs to use XenCtrl functions; these can be Haskell versions of xend, xm, and virt-manager but more interesting projects are possible. Think about a happs app controlling domains and complex policy controls on resource (CPU, memory, PCI) uses. R hsx-xhtmlpackage  hsx-xhtmlXVXHTML utilities to use together with HSX. XHTML utilities to use together with HSX. Qhsxpackage hsxHSX (Haskell Source with XML) allows literal XML syntax to be used in Haskell source code. HSX (Haskell Source with XML) allows literal XML syntax to be used in Haskell source code. The trhsx preprocessor translates .hsx source files into ordinary .hs files. Literal XML syntax is translated into function calls for creating XML values of the appropriate forms. trhsx transforms literal XML syntax into a series of function calls. Any project can make use of the syntax by providing definitions for those functions, and the XML values produced will be of the types specified. This works for any types, since trhsx doesn't make any assumptions, or inserts any information depending on types. XMLGenerator defines a few typeclasses that together cover the functions injected by the preprocessor. A project that uses these classes to provide the semantics for the injected syntax will be able to use any functions written in terms of these, allowing better code reusability than if each project defines its own semantics for the XML syntax. Also, the classes makes it possible to use the literal syntax at different types within the same module. Achieving that is not as simple as it may seem, but the XMLGenerator module provides all the necessary machinery. PHStringTemplatepackage HStringTemplateXStringTemplate implementation in Haskell. A port of the Java library by Terrence Parr. Ohstidypackage hstidyUTakes haskell source on stdin, parses it, then prettyprints it to stdout. @hstidy@ reads haskell source from stdin, then parses and prettyprints it to stdout. @hstidy@ accepts not only modules as a parseable unit, but expressions and patterns as well. Haddock docs are located at Nhstatspackage hstatsSStatistical Computing in Haskell A library of commonly used statistical functions MHsSyckpackage HsSyckFast, lightweight YAML loader and dumper This is a simple YAML ('Yet Another Markup Language') processor, used by the Pugs project for handling data serialization; this can be useful for optimization and caching purposes. This is an interface to the @syck@ C library for parsing and dumping YAML data. It lets you transform textual YAML data into an object of type 'YamlNode', and vice versa, fast. LHsSVNpackage HsSVN9(Part of) Subversion binding for Haskell HsSVN is a (part of) Subversion binding for Haskell. Currently it can do most things related to the Subversion FS but others are left uncovered. K hsSqlite3package  hsSqlite3%'Sqlite3 bindings Bindings for Sqlite3 J hsql-sqlite3package  hsql-sqlite3Ihsql-postgresqlpackage hsql-postgresqlH hsql-odbcpackage  hsql-odbcG hsql-mysqlpackage  hsql-mysql$Fhsqlpackage hsqlKEhspreadpackage hspreadx+A client library for the spread toolkit hspread is a client library for the Spread toolkit. It is fully implemented in haskell and supports the most recent version of the protocol. It's intended to be used with a serialization library like binary, and a separate installation of the spread deamon. Dhspr-shpackage hspr-shaSession handler for HSP A simple session handler for the HSP package, needed by the HSPR tools. CHsPerl5package HsPerl5^{Haskell interface to embedded Perl 5 interpreter This module provides a Haskell interface to embedded Perl 5 interpreter. BHsParrotpackage HsParrotaHaskell integration with Parrot virtual machine Haskell integration with Parrot virtual machine A hsparklinespackage  hsparklinesKSparklines for Haskell Sparklines implementation of smooth and bar graphs @hsp-cgipackage hsp-cgiFacilitates running Haskell Server Pages web pages as CGI programs. Haskell Server Pages (HSP) is an extension of vanilla Haskell, targetted at the task of writing dynamic server-side web pages. This module provides facilities to allow such pages to be run as CGI programs. ?hsppackage hspNHaskell Server Pages is a library for writing dynamic server-side web pages. Haskell Server Pages (HSP) is an extension of vanilla Haskell, targetted at the task of writing dynamic server-side web pages. Features include: * Embedded XML syntax * A (low-to-mid-level) programming model for writing dynamic web pages * A cgi-handler utility (as a separate package, hsp-cgi) For details on usage, please see the website, and the author's thesis. > HSoundFilepackage  HSoundFileA*Audio file reading/writing encode and decode soundfiles using lazy ByteStrings. Audio files may be read or written, with classes and data structures to facilitate conversion between different formats. Currently only wave format is supported. Error handling is supported via Control.Monad.ErrorT. = HsOpenSSLpackage  HsOpenSSL(Part of) OpenSSL binding for Haskell HsOpenSSL is a (part of) OpenSSL binding for Haskell. It can generate RSA and DSA keys, read and write PEM files, generate message digests, sign and verify messages, encrypt and decrypt messages. <hsntppackage hsntpSLibraries to use SNTP protocol and small client/server implementations. HSNTP - Haskell Simple Network Time Protocol Simple Network Time Protocol is a simple subset of NTP. This package includes Haskell libraries to use SNTP Protocol and small client and server implementations. The package contains everything needed for a compilation. ;hsnspackage hsns*Ha miniature network sniffer a tiny network sniffer, written in haskell :hsndfilepackage hsndfile1Haskell bindings for libsndfile Haskell bindings for libsndfile. Libsndfile is a comprehensive C library for reading and writing a large number of soundfile formats: . Changelog and source tarballs can be found at 9hsmagickpackage hsmagickYFFI bindings for the GraphicsMagick library FFI bindings for the GraphicsMagick library 8hsluapackage hsluaA Lua language interpreter embedding in Haskell The Scripting.Lua module is a wrapper of Lua language interpreter as described in www.lua.org. The package is standalone: full Lua interpreter is distributed in this package as well. 7 hslogger4jpackage  hslogger4jhslogger handlers for log4j's XMLLayout Hslogger4j provides handlers for hslogger (John Goerzen's Haskell logging library) that are compatible with log4j's XMLLayout. In particular log messages created by the handlers can be published directly to the GUI-based log viewer Chainsaw v2. 6hsloggerpackage hslogger fVersatile logging framework hslogger is a logging framework for Haskell, roughly similar to Python's logging module. hslogger lets each log message have a priority and source be associated with it. The programmer can then define global handlers that route or filter messages based on the priority and source. hslogger also has a syslog handler built in. 5 hslackbuilderpackage  hslackbuilder HSlackBuilder automatically generates slackBuild scripts from a cabal package HSlackBuilder automatically generates slackBuild scripts from a cabal package 4HsJudypackage HsJudyS Judy bindings, and some nice APIs Judy bindings (a C library that implements fast sparse dynamic arrays) for Haskell presenting APIs conforming as much as possible to the existent Haskell library interfaces, like Data.Map and Data.Array.MArray. This binding for the Judy library includes all its four types: mapping from words to bits (Judy1), from words to values (JudyL), from strings to values (JudyHS) and from array-of-bytes to values (JudyHS). 3HsHyperEstraierpackage HsHyperEstraierSHyperEstraier binding for Haskell HsHyperEstraier is a HyperEstraier binding for Haskell. HyperEstraier is an embeddable full text search engine which is supposed to be independent to any particular natural languages. 2 HsHaruPDFpackage  HsHaruPDF_{Haskell binding to libharu (http://libharu.sourceforge.net/) Haskell binding to libharu (http://libharu.sourceforge.net/) 1HSHpackage HSHDLibrary to mix shell scripting with Haskell programs HSH is designed to let you mix and match shell expressions with Haskell programs. With HSH, it is possible to easily run shell commands, capture their output or provide their input, and pipe them to and from other shell commands and arbitrary Haskell functions at will. 0hsgnutlspackage hsgnutlsrLibrary wrapping the GnuTLS API. hsgnutls is a wrapper to the GNU TLS Library. Currently it is in quite early stages but offers client functionality and parts of the server-side interface. Anonymous and X509 authentication is supported, but SRP and OpenPGP will appear in a future version. hsgnutls uses the attribute implementation borrowed from Gtk2Hs. Note this is not the official hsgnutls, but rather a fork updated for the needs of the Barracuda ad-hoc chat client, which repo can be found at . /hsemailpackage hsemailMInternet Message Parsers Parsers for the syntax defined in RFC2821 and 2822 .hsdnspackage hsdns0YAsynchronous DNS Resolver Asynchronous DNS Resolver; requires GNU ADNS to be installed. -hsdippackage hsdip%hsdip - a Diplomacy parser/renderer ,hscursespackage hscursesNCurses bindings for Haskell Binding to NCurses, a library of functions that manage an application's display on character-cell terminals. Additionally, it contains some basic widgets such as a text input widget and a table widget. +hscolourpackage hscolourColourise Haskell code. hscolour is a small Haskell script to colourise Haskell code. It currently has five output formats: ANSI terminal codes, HTML 3.2 with tags, HTML 4.01 with CSS, LaTeX, and mIRC chat codes. *hsclockpackage hsclock'kAn elegant analog clock using Haskell, GTK and Cairo An elegant analog clock using Haskell, GTK and Cairo )hsc3package hsc3Haskell SuperCollider hsc3 provides Sound.SC3, a haskell module that facilitates using haskell as a client to the SuperCollider synthesis server. (hsc2hspackage hsc2hswYA preprocessor that helps with writing Haskell bindings to C code The hsc2hs program can be used to automate some parts of the process of writing Haskell bindings to C code. It reads an almost-Haskell source file with embedded special constructs, and outputs a real Haskell file with these constructs processed, based on information taken from some C headers. The extra constructs provide Haskell counterparts of C types, values of C constants, including sizes of C types, and access to fields of C structs. For more details, see http://www.haskell.org/ghc/docs/latest/html/users_guide/hsc2hs.html 'hS3package hS3 Interface to Amazon's Simple Storage Service (S3) This is the Haskell S3 library. It provides an interface to Amazon's Simple Storage Service (S3), allowing Haskell developers to reliably store and retrieve arbitrary amounts of data from anywhere on the Internet. &hs-pgmspackage hs-pgms,Programmer's Mine Sweeper in Haskell This package allows people to code Minesweeper strategies in Haskell and run them in a graphical UI. %hs-fltkpackage hs-fltkBinding to GUI library FLTK hs-fltk is a Haskell interface to the FLTK. FLTK is a small and portable GUI toolkit and the interface tries to be quite highlevel. The library is very much a work in progress. $HRaypackage HRay3Haskell raytracer HRay is a ray tracing application written in Haskell as part of my thesis at Ghent University. It's quite simple for now, but I'll probably keep on working on it in the near future. For more information, see the homepage or the Haskell wiki entry: . #hpodderpackage hpodder:Podcast Aggregator (downloader) Podcasting is a method of publishing radio-like programs on the Internet. Through podcasting, almost anyone can produce their own audio program, and publish episodes of it as often or as rarely as they like. To listen to podcasts, you need a program to download the podcast's episodes from the Internet. Such a program is called a podcatcher (or sometimes a podcast aggregator). hpodder is this program. hpodder's features include: Convenient, easy to learn, and fast command-line interface. It's simple to do simple things, and advanced things are possible. Automatic discovery of feed metadata Full history database for accurate prevention of duplicate downloads and tracking of new episodes Conversion tools to convert your existing feed list and history from other applications to hpodder. Supported applications and formats include: castpodder and ipodder. Most operations can work fully automatically across your entire podcast database, or they can work manually. Automatic updating of ID3 (v1 and v2) tags based on metadata in the podcast feed. This important feature is available through iTunes but is often missed by other podcatchers. hpodder operations can be easily scripted or scheduled using regular operating system tools. Fully customizable naming scheme for downloaded episodes, including a name collision detection and workaround algorithm. Automatic support for appending .mp3 extensions to MP3 files that lack them. Numerous database and history inquiry tools Small, minimalist footprint Power users and developers can interact directly with the embedded Sqlite3 database used by hpodder. The database has a simple schema that is developer-friendly. Support for resuming interrupted downloads of podcasts hpodder is SAFE and is designed with data integrity in mind from the beginning. It should be exceedingly difficult to lose a podcast episode, even in the event of a power failure. "HPDFpackage HPDF 'Generation of PDF documents A PDF library with support for several pages, page transitions, outlines, annotations, compression, colors, shapes, patterns, jpegs, fonts, typesetting ... !hpcpackage hpc'#Code Coverage Library for Haskell hpastepackage hpaste8(GAn online pastebin, written in Haskell. Haskell pastebin, using HAppS hoscpackage hosc(Haskell Open Sound Control hosc provides Sound.OpenSoundControl, a haskell module implementing a subset of the Open Sound Control byte protocol. hopensslpackage hopensslg)_FFI bindings to OpenSSL's EVP digest interface FFI bindings to OpenSSL's EVP digest interface hooglepackage hoogle)Haskell API Search Hoogle is a Haskell API search engine, which allows you to search many standard Haskell libraries by either function name, or by approximate type signature.  homeomorphicpackage  homeomorphic*RHomeomorphic Embedding Test A library to carry out homeomorphic embedding tests. hoggpackage hoggR+/Library and tools to manipulate the Ogg container format The HOgg package provides a commandline tool for manipulating Ogg files. It supports chained and multiplexed Ogg bitstreams and Ogg Skeleton. HOgg also includes a library that may be used by other packages for handling the Ogg container format. hnoppackage hnop,Hmpfpackage Hmpf,An MPD client designed for a Home Theatre PC An MPD client designed to be used on a Home Theatre PC equipt with an infrared remote and VDU display. Hmpf is designed to allow the user to navigate through a large digital music collection with a standard infrared remote and VDU. The client does not need or accept input from the keyboard Hmpf also implements the LastFM protocol and is able to intelligently generate dynamic playlists hmp3package hmp3.$An ncurses mp3 player written in Haskell An mp3 player with a curses frontend. Playlists are populated by passing directory names on the commandline, and saved to the ~/.hmp3db database. Type 'h' to display the help page. Colours may be configured at runtime by editing the "~/.hmp3" file. hmmpackage hmm/Hidden Markov Model algorithms A simple library for working with Hidden Markov Models. Should be usable even by people who are not familiar with HMMs. Includes implementations of Viterbi's algorithm and the forward algorithm. hmatrixpackage hmatrix1Linear algebra and numerical computations A purely functional interface to basic linear algebra computations and other numerical routines, internally implemented using GSL, BLAS and LAPACK. More information: hmarkuppackage hmarkup'2Simple wikitext-like markup format implementation. This package implements a simple extensible wikitext-like markup format. Currently the only implemented output format is XHTML. HListpackage HList3Heterogeneous lists HList is a record system providing strongly typed heterogenous lists, records, type-indexed products (TIP) and co-products; licensed under the MIT X License. HJScriptpackage HJScript3HJScript is a Haskell EDSL for writing JavaScript programs. HJScript is a DSL built on top of HJavaScript, for writing client-side dynamic web pages. The programming model is fairly low-level, resembling the actual JavaScript code quite a lot, but should be easy to extend with higher-level functionality. Notable is that HJScript supports the use of literal XML syntax, as defined by the hsx package, for creating DOM ElementNodes. Also notable is that HJScript supports Ajax functionality. hjspackage hjs5kJavaScript Parser A Javascript parser and interpreter. Works as per ECMA-262 plus some parts of JS >=1.5.  HJavaScriptpackage  HJavaScript6HJavaScript is an abstract syntax for a typed subset of JavaScript. HJavaScript defines an abstract syntax and pretty printer for a subset of JavaScript. as Language.HJavaScript. However, a significant difference from JavaScript is that HJavaScript is typed, even on the abstract syntax level using GADTs. The subset of JavaScript that is supported is those parts that lend themself to typing (i.e. no prototyping of classes). HipmunkPlaygroundpackage HipmunkPlayground8A playground for testing Hipmunk. This is a simple OpenGL program that allows you to see some of Hipmunk's functions in action. Licensed under the MIT license (like Hipmunk itself). Hipmunkpackage Hipmunkj9A Haskell binding for Chipmunk. Chipmunk is a fast, simple, portable, 2D physics engine (). This package contains the Chipmunk rev4 source (from ) and Haskell bindings to all of its functions. It is completely self-contained. Licensed under the MIT license (like Chipmunk itself).  hinvaderspackage  hinvaders;PSpace Invaders A simple clone of Space Invaders for playing on one's terminal. hintpackage hint;>Runtime Haskell interpreter (GHC API wrapper) This library defines an @Interpreter@ monad. It allows to load Haskell modules, browse them, type-check and evaluate strings with Haskell expressions and even coerce them into values. The library is thread-safe and type-safe (even the coercion of expressions to values).  hinstallerpackage  hinstaller=!Installer wrapper for Haskell applications This module allows you to incorporate arbitrary files into a haskell module during compilation. The files are then available to you through functions which allows you to write installer-type applications which write out the files when run. Thus this can be considered in the same model as Java .jar files or executable zip or other file archives. The current implementation is now reasonably efficient. However, it does require that you have a C compiler installed which can be invoked through @cc@. hinotifypackage hinotifyS?Haskell binding to INotify This library provides a wrapper to the Linux Kernel's inotify feature, allowing applications to subscribe to notifications when a file is accessed or modified. himergepackage himerge>@Haskell Graphical User Interface for Emerge Himerge is a graphical user interface for emerge (Gentoo's Portage system) written in Haskell using gtk2hs.  highWaterMarkpackage  highWaterMarkAMemory usage statistics A library for determining the amount of memory allocated a t any point by a GHC program. Note - it only counts memory under the GHC storage manager, it does not count malloc, mmap'd stuff etc. Obsolete. highlighting-katepackage highlighting-kate6B[Syntax highlighting highlighting-kate is a syntax highlighting library with support for over 50 languages. The syntax parsers are automatically generated from Kate syntax descriptions (), so any syntax supported by Kate can be added. An (optional) command-line program is provided, along with a utility for generating new parsers from Kate XML syntax descriptions. Currently the following languages are supported: Ada, Asp, Awk, Bash, Bibtex, C, Cmake, Coldfusion, Commonlisp, Cpp, Css, D, Djangotemplate, Doxygen, Dtd, Eiffel, Erlang, Fortran, Haskell, Html, Java, Javadoc, Javascript, Json, Latex, Lex, LiterateHaskell, Lua, Makefile, Matlab, Mediawiki, Modula3, Nasm, Objectivec, Ocaml, Pascal, Perl, Php, Postscript, Prolog, Python, Rhtml, Ruby, Scala, Scheme, Sgml, Sql, SqlMysql, SqlPostgresql, Tcl, Texinfo, Xml, Xslt, Yacc. hidingkeyword hidingEhWhen importing modules, without introducing a name into scope, entities can be excluded by using the form
hiding (import1 , ... , importn )
which specifies that all entities exported by the named module should be imported except for those named in the list. For example:
import Prelude hiding (lookup,filter,foldr,foldl,null,map)
hiccuppackage hiccupOGhRelatively efficient Tcl interpreter with support for basic operations Interpreter for a subset of tcl HGLpackage HGLGA simple graphics library based on X11 or Win32 A simple graphics library, designed to give the programmer access to most interesting parts of the Win32 Graphics Device Interface and X11 library without exposing the programmer to the pain and anguish usually associated with using these interfaces. The library also includes a module Graphics.SOE providing the interface used in "The Haskell School of Expression", by Paul Hudak, cf .  hgeometricpackage  hgeometricItA geometric library with bindings to GPC. hgeometric is a geometric library with bindings to the General Polygon Clipper Library (GPC), a flexible and highly robust polygon set operations library. GPC is free for non-comercial use and can be obtained at . hgeometric also include some functions to deal with geometric types. hgdbmipackage hgdbmiKGDBMI interface (program-driven control of GDB) GDB\/MI lets programs drive GDB. It can be used, for example, by GDB frontends. This module wraps attaching GDB to a process and parsing the (surprisingly complicated) GDB\/MI output. hgalpackage hgalLOlibrary for computation automorphism group and canonical labelling of a graph hg-buildpackagepackage hg-buildpackageM5Tools to help manage Debian packages with Mercurial HFusepackage HFuse|M0HFuse is a binding for the Linux FUSE library. hfovpackage hfovMField-of-view calculation for low-resolution 2D raster grids. A Haskell binding to a Field of View calculation library written by Greg McIntyre (blue_puyo) in C. hfannpackage hfannNHaskell binding to the FANN library hfann is a Haskell binding to the Fast Artificial Neural Network (FANN) library . It provides functions to easily create, train, test and use Artificial Neural Networks. hexpatpackage hexpatOwrapper for expat, the fast XML parser Expat () is a stream-oriented XML parser written in C. It is known for being simple and fast. There are already nice XML libraries in the Text.XML hierarchy. The reason to use Expat is when speed is of concern. From a benchmark that compares getting the length of the root node of a HaXml tree (presumably forcing parsing the entire file) against running an Expat parser with a registered start node handler, Expat is about 12 times faster. This is not a fair benchmark; HaXml does a lot more than this Expat library. But if Expat suffices, it is good for what it does. hetrispackage hetrisfRoText Tetris This is a simple reimplementation of Tetris which uses the Curses interface to run in a terminal. helisppackage helispSAn incomplete Elisp compiler This is an incomplete compiler for Emacs Lisp; the source might be of interest to others. The Darcs repository can be found at . Hedipackage HediSBLine oriented editor Haskell line editor. Cloned from ed manual. heappackage heap]T9Heaps in Haskell A flexible Haskell heap implementation HDBC-sqlite3package  HDBC-sqlite3TqSqlite v3 driver for HDBC This is the Sqlite v3 driver for HDBC, the generic database access system for Haskell HDBC-postgresqlpackage HDBC-postgresql{UOPostgreSQL driver for HDBC This package provides a PostgreSQL driver for HDBC HDBC-odbcpackage  HDBC-odbcUODBC driver for HDBC This package provides an ODBC database backend for HDBC. It is cross-platform and supports unixODBC on Unix/Linux/POSIX platforms and Microsoft ODBC on Windows. It is also the preferred way to access MySQL databases from Haskell. HDBCpackage HDBCW#Haskell Database Connectivity HDBC provides an abstraction layer between Haskell programs and SQL relational databases. This lets you write database code once, in Haskell, and have it work with any number of backend SQL databases (MySQL, Oracle, PostgreSQL, ODBC-compliant databases, etc.) hCsoundpackage hCsoundoX:interface to CSound API Haskell interface to Csound API. HCodecspackage HCodecsXAThe library to read, write and manipulate MIDI, WAVE, and SoundFont2 files. The library provides functions to read, write and manipulate MIDI, WAVE and SoundFont2 multimedia files. It is written entirely in Haskell (without any FFI). It uses efficient parsing and building combinators for binary data stored in ByteStrings (based on the one in 'binary' package). Correctness of significant parts of library has been validated with QuickCheck and Haskell Program Coverage (HPC) tool-kit. HPC results can be seen at . HCLpackage HCL<[High-level library for building command line interfaces. This module provides a set of functions for building simple command-line interfaces. It allows interfaces which collect values (such as Integers, Dates, or other structured values), build lists of values, and use simple menus. It is not intended to build complex interfaces with full cursor control. It is oriented towards line-based interfaces. hburgpackage hburg\Haskell Bottom Up Rewrite Generator HBURG is a program that generates tree parsers for cost-augmented tree grammars. It is useful for writing code generators for compilers. Given a mapping of a tree structured intermediate representation onto target machine instructions, HBURG generates a code generator that can be plugged into the instruction selection phase of a compiler. For more information see "http://www.bytelabs.org/pub/papers/hburg07.pdf". hbeatpackage hbeat^A simple step sequencer GUI. A toy step sequencer program written using OpenGL and the SDL libraries. Configuration (including the audio samples used) is controlled via an external file. hbackpackage hback_N-back memory game N-back memory game using gtk2hs. Instructions on installation and gameplay available at: haxr-thpackage haxr-th`Automatic deriving of XML-RPC structs for Haskell records. HaXR is a library for writing XML-RPC client and server applications in Haskell. This package adds automatic deriving of XML-RPC structs for Haskell records, using Template Haskell. haxrpackage haxrauXML-RPC client and server library. HaXR is a library for writing XML-RPC client and server applications in Haskell. HaXmlpackage HaXml=bUtilities for manipulating XML documents Haskell utilities for parsing, filtering, transforming and generating XML documents. haskelldb-hsql-sqlite3package haskelldb-hsql-sqlite3c/HaskellDB support for the HSQL SQLite driver. haskelldb-hsql-sqlitepackage haskelldb-hsql-sqlitec/HaskellDB support for the HSQL SQLite driver. haskelldb-hsql-postgresqlpackage haskelldb-hsql-postgresqlc3HaskellDB support for the HSQL PostgreSQL driver. haskelldb-hsql-odbcpackage haskelldb-hsql-odbcwd-HaskellDB support for the HSQL ODBC driver. haskelldb-hsql-mysqlpackage haskelldb-hsql-mysqld.HaskellDB support for the HSQL MySQL driver. haskelldb-hsqlpackage haskelldb-hsqlTeXHaskellDB support for HSQL. You will also need one or more back-end specific packages. haskelldb-hdbc-sqlite3package haskelldb-hdbc-sqlite3e/HaskellDB support for the HDBC SQLite driver. haskelldb-hdbc-postgresqlpackage haskelldb-hdbc-postgresqlwf3HaskellDB support for the HDBC PostgreSQL driver. haskelldb-hdbc-odbcpackage haskelldb-hdbc-odbcf-HaskellDB support for the HDBC ODBC driver. haskelldb-hdbcpackage haskelldb-hdbcWgXHaskellDB support for HDBC. You will also need one or more back-end specific packages. haskelldb-flatpackage haskelldb-flatg'An experimental HaskellDB back-end in pure Haskell (no SQL) This is a very experimental HaskellDB back-end which is written in pure Haskell and doesn't use SQL. It stores the database in a file. Using this with concurrent writes leads to data loss. This back-end does not support transactions. haskelldb-dynamicpackage haskelldb-dynamicRi7HaskellDB support for the dynamically loaded drivers. haskelldbpackage  haskelldbiSQL unwrapper for Haskell. haskell98package  haskell98j2Compatibility with Haskell 98 This package provides compatibility with the modules of Haskell 98 and the FFI addendum, by means of wrappers around modules from the base package (which in many cases have additional features). However Prelude, Numeric and Foreign are provided directly by the base package. haskell-src-extspackage haskell-src-extsxkManipulating Haskell source: abstract syntax, lexer, parser, and pretty-printer Haskell-Source with Extensions (HSE, haskell-src-exts) is an extension of the standard haskell-src package, and handles most common syntactic extensions to Haskell, including: * Multi-parameter type classes with functional dependencies * Indexed type families (including associated types) * Empty data declarations * GADTs * Implicit parameters (ghc and hugs style) * Template Haskell (now works with GHC 6.4+ syntax) and a few more. Apart from these standard extensions, it also handles regular patterns as per the HaRP extension as well as HSX-style embedded XML syntax (new HSP/HSX release imminent). For details on usage, please see the website.  haskell-srcpackage  haskell-srcnManipulating Haskell source code Facilities for manipulating Haskell source code: an abstract syntax, lexer, parser and pretty-printer. haskell-in-spacepackage haskell-in-spaceXo'Asteroids' arcade games. A collection of clones of the arcade game 'Asteroids'. There are two demos for moving around ('asteroids-space', 'asteroids-aufgabe'); there is a basic Asteroids game ('asteroids-basic'); and then there is a full elaborate one ('asteroids-haskelly'). haskelinepackage  haskelineplA command-line interface for user input, written in Haskell. Haskeline provides a user interface for line input in command-line programs. This library is similar in purpose to readline, but since it is written in Haskell it is (hopefully) more easily used in other Haskell programs. Haskeline runs both on POSIX-compatible systems and on Windows (under MinGW). hask-homepackage  hask-homeDynamic 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}). Hashellpackage HashelltSimple shell written in Haskell A simple shell written in Haskell; through the GHC API, it allows evaluation of Haskell expressions. harpypackage harpy[uRuntime code generation for x86 machine code The package contains the following components: * An x86 assembler. We provide both low-level code generation in module "Harpy.X86CodeGen" as well as a (slightly) higher-level implementation in module "Harpy.X86Assembler", which figures out addressing modes based on an instruction's operand types. * An x86 disassembler which knows most of the opcodes available on modern x86 processors and can display its output both in the style used in Intel documents an in AT&T style, like the GNU tools. The disassmbler can be found in module "Harpy.X86Disassembler". * Some abstractions over the abovementioned code generation modules, such as automatic label management and code generation combinators (for if-then-else statements, while-loops, functions) (module "Harpy.X86CGCombinators"). * All the above modules use the code generation monad defined in module "Harpy.CodeGenMonad". * The Darcs repo and two tutorials on using Harpy can be found at Harpy's homepage: harppackage harpyHaRP allows pattern-matching with regular expressions HaRP, or Haskell Regular Patterns, is a Haskell extension that extends the normal pattern matching facility with the power of regular expressions. This expressive power is highly useful in a wide range of areas, including text parsing and XML processing. Regular expression patterns in HaRP work over ordinary Haskell lists ([]) of arbitrary type. We have implemented HaRP as a pre-processor to ordinary Haskell. For details on usage, please see the website. harchivepackage harchive{Networked content addressed backup and restore software. Implements software to perform backups and restores of filesystem data to a content addressed storage pool. Very preliminary version. happypackage happy|)Happy is a parser generator for Haskell HAppS-Utilpackage  HAppS-Util}Web framework happs-tutorialpackage happs-tutorial^}\A HAppS Tutorial that is is own demo A nice way to learn how to build web sites with HAppS HAppS-Statepackage  HAppS-State}.Event-based distributed state. Web framework HAppS-Serverpackage  HAppS-ServerT~/Web related tools and services. Web framework HAppS-IxSetpackage  HAppS-IxSet~happs-hsp-templatepackage happs-hsp-template~:Utilities for using HSP templates in HAppS applications. happs-hsppackage  happs-hspf HAppS-Datapackage  HAppS-Data5HAppS data manipulation libraries This package provides libraries for: * Deriving instances for your datatypes. * Producing default values of Haskell datatypes. * Normalizing values of Haskell datatypes. * Marshalling Haskell values to and from XML. * Marshalling Haskell values to and from HTML forms. happraisepackage  happraiseKA small program for counting the comments in haskell source A small program for counting the comments in the haskell source files of a project. It can work recursively over directories and/or over a list of given files. For example one can run: "happraise $(darcs query manifest)". Or put this as a command in your Setup.hs file. halfspackage halfssHaskell File System Halfs is a filesystem implemented in the functional programming language Haskell. Halfs can be mounted and used like any other Linux filesystem, or used as a library. Halfs is a fork (and a port) of the filesystem developed by Galois Connections. See also http://haskell.org/pipermail/haskell-cafe/2006-April/015361.html You can get it from here: http://darcs.haskell.org/halfs HaLeXpackage HaLeX-0HaLeX enables modelling, manipulation and animation of regular languages This library was developed in the context of a programming methodology course for undergraduate students, and as a consequence, it was defined mainly for educational purposes. Indeed, it provides a clear, efficient and concise way to define, to understand and to manipulate regular languages in Haskell. Furthermore, the construction of the complete library has been proposed as assignment projects to the students following the course. HaLeX is now being used to support this course. haddockpackage haddockxA documentation-generation tool for Haskell libraries Haddock is a documentation-generation tool for Haskell libraries Haddockmodule Distribution.Simple.HaddockFInvokes haddock to generate api documentation for libraries and optinally executables in this package. Also has support for generating syntax-highlighted source with HsColour and linking the haddock docs to it. hackage2hwnpackage  hackage2hwnNConvert Hackage RSS feeds to wiki format for publishing on Haskell.org Convert Hackage RSS feeds to wiki format for publishing on Haskell.org hackage-sparkspackage hackage-sparksaGenerate sparkline graphs of hackage statistics Generate sparkline graphs of hackage statistics GuiTVpackage GuiTV GUIs for Tangible Values GuiTV is a very small library that extends the TV (tangible value) framework with graphical user interfaces, using Phooey. (See and .) The functionality was part of the TV package up to version 0.1.1. I moved it out to eliminate the dependency of core TV on Phooey and hence on wxHaskell, as the latter can be difficult to install. Try out the examples in @src\/Examples.hs@. For more information, including examples, please see the project wiki page This page and the module documentation pages have links to colorized source code and to wiki pages where you can read and contribute /user comments/. Enjoy! © 2007 by Conal Elliott; BSD3 license. GuiHaskellpackage  GuiHaskell7A graphical REPL and development environment for Haskell GuiHaskell aims to be a cross-platform development environment for Haskell that is integrated with other popular Haskell tools. The program uses the PropLang GUI combinator library to declaratively define the relationships between UI elements and data. GrowlNotifypackage  GrowlNotifyaANotification utility for Growl. Notification utility for Growl. GroteTrappackage  GroteTrapӎParser and selection library for expression languages. Allows quick definition of expression languages. You get a parser for free, as well as conversion from text selection to tree selection and back. greencard-libpackage  greencard-lib֏bA foreign function interface pre-processor library for Haskell Green Card is a foreign function interface preprocessor for Haskell, simplifying the task of interfacing Haskell programs to external libraries (which are normally exposed via C interfaces). This package provides the Foreign.GreenCard library; the greencard binary is packaged separately. greencardpackage  greencardiA foreign function interface pre-processor for Haskell Green Card is a foreign function interface preprocessor for Haskell, simplifying the task of interfacing Haskell programs to external libraries (which are normally exposed via C interfaces). To interface to an external function using Green Card, you write a small procedure specification. The specification tells Green Card what (Haskell) type you want to give the function together with details of how the arguments (and results) to the Haskell function should be marshalled to and from the data representation used by the external function. Green Card will then generate gobs of low-level boilerplate code that takes care of all the details. This package supplies the executable, 'greencard', which needs GHC. For the Foreign.GreenCard library, you need to install this first and then you can install greencard-lib (greencard-lib requires the greencard binary already installed). gravatarpackage gravatarDFind the url of the gravatar associated with an email address. Gravatars () are globally unique images associated with an email address, widely used in social networking sites. This library lets you find the URL of a gravatar image associated with an email address. Test coverage data for this library is available at: graphvizpackage graphvizGraphViz wrapper for Haskell Allows you to convert Data.Graph... graphs into dot format, and parse them back in, as a Dot structure. GraphSCCpackage GraphSCCTarjan's algorithm for computing the strongly connected components of a graph. Tarjan's algorithm for computing the strongly connected components of a graph. graphics-drawingcombinatorspackage graphics-drawingcombinatorsA functional interface to 2D drawing in OpenGL This module is a functional wrapper around OpenGL, so you don't have to go into the deep, dark world of imperative stateful programming just to draw stuff. It supports 2D only (for now), with support drawing geometry, images, and text. Graphmodule Data.GraphA version of the graph algorithms described in: Lazy Depth-First Search and Linear Graph Algorithms in Haskell, by David King and John Launchbury. gopherbotpackage  gopherbot˚4Spidering robot to download files from Gopherspace GoogleChartpackage  GoogleChart46Generate web-based charts using the Google Chart API goapackage goaGHCi on Acid GHCi bindings to lambdabot Offers an interface to be able to call Lambdabot commands within GHCi; this is broken with recent Lambdabots. GLUTpackage GLUTM%A binding for the OpenGL Utility Toolkit A Haskell binding for the OpenGL Utility Toolkit, a window system independent toolkit for writing OpenGL programs. For more information about the C library on which this binding is based, please see: . glome-hspackage glome-hsray tracer Ray Tracer capable of rendering a variety of primitives, with support for CSG (difference and intersection of solids), BIH-based acceleration structure, and ability to load NFF format files. GLFWpackage GLFW A binding for GLFW, An OpenGL Framework A Haskell binding for GLFW OpenGL Framework, a window system independent toolkit for writing OpenGL programs. For more information about the C library on which this binding is based, please see: ghc-pathspackage  ghc-pathsΟYKnowledge of GHC's installation directories Knowledge of GHC's installation directories ghc-corepackage ghc-coreV]Display GHC's core and assembly output in a pager A convenient command line wrapper for GHC that displays GHC's optimised core and assembly output in a human readable, colourised manner, in a pager. Unix systems only, currently. Usage: > ghc-core A.hs > ghc-core -fvia-C -optc-O3 A.hs Screenshot: GHCmodule Distribution.Simple.GHCBuild and Install implementations for GHC. See Distribution.Simple.GHC.PackageConfig.GHCPackageConfig for registration-related stuff. RGetOptmodule System.Console.GetOptThis library provides facilities for parsing the command-line options in a standalone program. It is essentially a Haskell port of the GNU getopt library. GeoIppackage GeoIpPure bindings for the MaxMind IP database. GeoIp is a pure haskell binding to the MaxMind IP database. The IP database contains information such as the approximate longitude and latitude of an IP address. geniconvertpackage  geniconvertUConversion utility for the GenI generator Conversion utility for the GenI generator GenIpackage GenIA natural language generator (specifically, an FB-LTAG surface realiser) A natural language generator (specifically, an FB-LTAG surface realiser) genericserializepackage genericserializeХ^Serialization library using Data.Generics GenericSerialize is a library for serialization using the existing generic-programming framework. It is often advocated that support for serialization should be added to the compiler (e.g. in the form of a deriving(Binary)). With this I intend to show that the existing infrastructure is sufficient, and has some advantages over a dedicated serialization interface. The main advantage that generic serialization posseses is that it is possible to simultaneously have several serialization modes. While interfaces such as AltBinary allow writing to any type of stream, the data format is fixed. By contrast, GenericSerialize supports multiple serialization modes; while the only currently existing module is for a subset of R5RS s-expressions, that module is less than 100 lines of code and is almost pure grammar. Genericsmodule Data.Genericse"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. generic-xmlpackage  generic-xmlPMarshalling Haskell values to/from XML Marshalling Haskell values to/from XML. gdpackage gdA Haskell binding to a subset of the GD graphics library This is a binding to a (currently very small) subset of the GD graphics library. Fusionmodule Data.ByteString.FusionɫStream fusion for ByteStrings. See the paper Stream Fusion: From Lists to Streams to Nothing at All, Coutts, Leshchinskiy and Stewart, 2007. funsatpackage funsat A modern DPLL-style SAT solver functormpackage functormجData.FunctorM (compatibility package) This is the Data.FunctorM module from 6.6's base, deleted from HEAD still used by some projects (notably jhc); this package can be used for compatibility. [ Functionsmodule Text.Show. FunctionsحOptional instance of Text.Show.Show for functions:
instance Show (a -> b) where
	showsPrec _ _ = showString \"\<function\>\"
5Functionmodule Data.Function9Simple combinators working solely on and with functions. funcmppackage funcmpFunctional MetaPost Functional MetaPost is a Haskell frontend to the MetaPost language by John Hobby. Users write their graphics as Haskell programs, which then emit MetaPost code that can be compiled into encapsulated PostScript files and smoothly included into e.g. LaTeX. ftshellpackage ftshellHShell interface to the FreeTheorems library. The ftshell is a shell-based user interface to interact with the free-theorems library. It offers all possibilities provided by that library to generate free theorems from Haskell type expressions. ftphspackage ftphse>FTP Client and Server Library ftphs provides a Haskell library to implement a FTP client and a FTP server. ftphs has a number of features: * Easy to use operation * Full support of text and binary transfers * Optional lazy interaction * Server can serve up a real or a virtual filesystem tree * Standards compliant FTGLpackage FTGLʲPortable TrueType font rendering for OpenGL using the Freetype2 library A Haskell binding for the portable TrueType to OpenGL font rendering library FTGL. This package provides OpenGL with polygonal, texture mapped, and extruded fonts using Freetype2 and any truetype font. fstpackage fst Finite state transducers Fst is an application for construction and running of finite state transducers. The application was written purely in Haskell, and is intended to be a tool for the Haskell programmer, especially for ones that develop language applications. free-theoremspackage  free-theoremsEAutomatic generation of free theorems. The free-theorems library allows to automatically generate free theorems from Haskell type expressions. It supports nearly all Haskell 98 types except of type constructor classes, and in addition it can also handle higher-rank functions. Free theorems are generated for three different sublanguages of Haskell, a basic one corresponding to the polymorphic lambda-calculus of Girard-Reynolds, an extension of that allowing for recursion and errors, and finally a sublanguage additionally allowing seq. In the last two sublanguages, also inequational free theorems may be derived in addition to classical equational results. Framesetmodule Text.XHtml.FramesetProduces XHTML 1.0 Frameset. fragpackage frag]A 3-D First Person Shooter Game A fast and basic reimplementation of the Quake III Arena engine in Haskell; supports many Quake III Arena maps. formletspackage formletsFormlets implemented in Haskell A modular way to build forms based on applicative functors, as described in: * Ezra Cooper, Samuel Lindley, Philip Wadler and Jeremy Yallop \"An idiom's guide to formlets\" Technical Report, EDI-INF-RR-1263. Formatmodule Data.Time.FormattL ForeignPtrmodule Foreign. ForeignPtrThe ForeignPtr type and operations. This module is part of the Foreign Function Interface (FFI) and will usually be imported via the Foreign module. foreignkeyword foreigniA keyword for the foreign function interface that is enabled by -ffi, -fffi or implied by -fglasgow-exts Foreignmodule ForeignfA collection of data types, classes, and functions for interfacing with another programming language. forallkeyword forallThis is a GHC/Hugs extension, and as such is not portable Haskell 98. It is only a reserved word within types. Type variables in a Haskell type expression are all assumed to be universally quantified; there is no explicit syntax for universal quantification, in standard Haskell 98. For example, the type expressiona -> a denotes the type forall a. a ->a. For clarity, however, we often write quantification explicitly when discussing the types of Haskell programs. When we write an explicitly quantified type, the scope of the forall extends as far to the right as possible; for example,
forall a. a -> a
means
forall a. (a -> a)
GHC introduces a forall keyword, allowing explicit quantification, for example, to encode existential types:
data Foo = forall a. MkFoo a (a -> Bool)
         | Nil

MkFoo :: forall a. a -> (a -> Bool) -> Foo
Nil   :: Foo

[MkFoo 3 even, MkFoo 'c' isUpper] :: [Foo]
foopackage fooPaper soccer, an OpenGL game. Foo (abbreviation from football) is a playing machine of Paper Soccer, a pencil and paper game for two players, described in WIKIPEDIA. Written in Haskell, contains also simply interface using HOpenGL library. Provides bunch of playing algorithms. ?Foldablemodule Data.FoldableoClass 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. flow2dotpackage flow2dot'Generates sequence diagrams from textual descriptions Generates sequence diagrams from textual descriptions with help of Graphviz graph drawing tool. Check out (source) and (output). flockpackage flock6Wrapper for flock(2) Simple wrapper around flock(2). Flippipackage Flippi90Wiki Flippi is a Wiki clone written in Haskell fixpointpackage fixpointData types as fixpoints This package allows data types to be seen and manipulated as fixpoints of their underlying functors. It is mostly based on "Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire" by Erik Meijer, Maarten Fokkinga and Ross Paterson (). It makes essential use of associated types and related extensions. >Fixedmodule Data.FixedUThis 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. ,Fixmodule Control.Monad.Fix:Monadic fixpoints. For a detailed discussion, see Levent Erkok's thesis, Value Recursion in Monadic Computations, Oregon Graduate Institute, 2002. fitsiopackage fitsioA library for reading and writing data files in the FITS data format. FITS (Flexible Image Transport System) is self-describing data format used heavily in astronomy and high-energy physics. Right now this library is just an FFI wrapper, but higher-level functionality is planned. firstifypackage firstifyJ[Defunctionalisation for Yhc Core A library to transform Yhc Core programs to first-order. FiniteMappackage  FiniteMapA finite map implementation, derived from the paper: Efficient sets: a balancing act, S. Adams, Journal of functional programming 3(4) Oct 1993, pp553-562 This is the deprecated Data.FiniteMap library, often useful to get old code to build when you are too lazy to update it. fingertreepackage  fingertree Generic finger-tree structure A general sequence representation with arbitrary annotations, for use as a base for implementations of various collection types, as described in section 4 of * Ralf Hinze and Ross Paterson, \"Finger trees: a simple general-purpose data structure\", /Journal of Functional Programming/ 16:2 (2006) pp 197-217. For a directly usable sequence type, see "Data.Sequence" in the @base@ package, which is a specialization of this structure. FindBinpackage FindBinW Locate directory of original program This module locates the full directory to the running program, to allow the use of paths relative to it. FindBin supports invocation of Haskell programs via "ghci", via "runhaskell/runghc", as well as compiled as an executable. Finance-Treasurypackage Finance-TreasurygObtain Treasury yield curve data Obtain Treasury yield curve data from Department of Treasury website Finance-Quote-Yahoopackage Finance-Quote-YahooLSObtain quote data from finance.yahoo.com Obtain quote data from finance.yahoo.com filepathpackage filepath{Library for manipulating FilePath's in a cross platform way. Library for manipulating FilePath's in a cross platform way. FilePathmodule 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. FileManippackage  FileManipExpressive file and directory manipulation for Haskell. A Haskell library for working with files and directories. Includes code for pattern matching, finding files, modifying file contents, and more. fglpackage fgl)Martin Erwig's Functional Graph Library fftpackage fftBindings to the FFTW library. Bindings to the FFTW library. Provides high performance discrete fourier transforms in arbitrary dimensions. Include transforms of complex data, real data, and real to real transforms. FermatsLastMarginpackage FermatsLastMarginXAnnotate ps and pdf documents Distributed annotation for PostScript and PDF documents. fenfirepackage fenfireGraph-based notetaking system Fenfire is a graph-based notetaking system. (We're planning to add a kitchen sink soon.) It is developed on the channel #fenfire on the Freenode IRC network. feed-clipackage feed-cliA simple command line interface for creating and updating feeds like RSS This program generates RSS 2.0 (http://www.rssboard.org/rss-2-0-1-rv-6) feeds based on command line arguments. Use it to easily create and update feeds from shell scripts, build scripts, cron jobs, CGIs, or other programs instead of using an RSS or Atom library. eg: feed-cli new-item -t"entry of the day" -d"This is a description..." -u/tmp/feed.xml -lhttp://www.syntaxpolice.org feedpackage feedwmInterfacing with RSS (v 0.9x, 2.x, 1.0) + Atom feeds. Interfacing with RSS (v 0.9x, 2.x, 1.0) + Atom feeds. fecpackage fec ?Forward error correction of ByteStrings This code, based on zfec by Zooko, based on code by Luigi Rizzo implements an erasure code, or forward error correction code. The most widely known example of an erasure code is the RAID-5 algorithm which makes it so that in the event of the loss of any one hard drive, the stored data can be completely recovered. The algorithm in the zfec package has a similar effect, but instead of recovering from the loss of only a single element, it can be parameterized to choose in advance the number of elements whose loss it can tolerate. fckeditorpackage  fckeditoryWServer-Side Integration for FCKeditor Provides Server-Side Integration for FCKeditor. fastcgipackage fastcgiA Haskell library for writing FastCGI programs This library lets you write FastCGI programs. This package reuses the cgi package API, making it very easy to port CGI programs to FastCGI. j Extensionmodule Language.Haskell. ExtensionHaskell language extensions i Extensionmodule Distribution. Extension[Haskell language extensions Exprmodule Text.ParserCombinators.Parsec.ExprParsec compatibility module Exprmodule Text.Parsec.ExprhA helper module to parse "expressions". Builds a parser given a table of operators and associativities. UExitmodule System.ExitExiting the program. exifpackage exifA Haskell binding to a subset of libexif This is a Haskell binding to a subset of libexif. Only tag reading is currently supported. Image files containing EXIF data can be read from memory or disk. % 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.
event-listpackage  event-listEvent lists with relative or absolute time stamps These lists manage events that are associated with times. Times may be given as difference between successive events or as absolute time values. Pauses before the first and after the last event are supported. The underlying data structures are lists of elements of alternating types, that is [b,a,b,...,a,b] or [a,b,a,...,a,b]. The data structures can be used to represent MIDI files, OpenSoundControl message streams, music performances etc. Etherbunnypackage  EtherbunnyA network analysis toolkit for Haskell A network analysis toolkit for Haskell, based on the Network.Pcap library. Currently not very useful, but getting there. estrepspackage estrepsRepeats from ESTs rselect - select a random set of sequences from a FASTA file. reps - extract exact k-word repeats based that occur in sequences grouped in different clusters. The Darcs repository is at: . Errormodule Text.ParserCombinators.Parsec.ErrorParsec compatibility module Errormodule Text.Parsec.Error' Parse errors Errormodule System.IO.ErrorjStandard IO Errors. NErrormodule Foreign.Marshal.ErroryRoutines for testing return values and raising a userError exception in case of values indicating an error state. MErrormodule Foreign.C.ErroriCC-specific Marshalling support: Handling of C "errno" error codes. Errormodule Control.Monad.Error
  • 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 T Environmentmodule System. Environment8Miscellaneous information about the system environment. encodingpackage encodingx?A library for various character encodings Haskell has excellect handling of unicode, the Char type covers all unicode chars. Unfortunatly, there's no possibility to read or write something to the outer world in an encoding other than ascii due to the lack of support for encodings. This library should help with that. Encodepackage Encode'Encoding character data The "Encode" library is being proposed as a Haskell analogy to the /Encode/ extension in Perl, . Like its counterpart, "Encode" should provide a unified interface for converting strings from different encodings into a common representation, and vice versa. The representation should be isomorphic to the Unicode character set, and the encodings might be both standard and user-defined. For this purpose, the "Encode" module defines the 'Encode.UPoint' type and the 'Encode.Encoding' type class. The "FunParsing" library is an edited excerpt from the /Functional Parsing/ library developed by Peter Ljunglöf in his licenciate thesis /Pure Functional Parsing – an advanced tutorial/, Göteborg University and Chalmers University of Technology, April 2002, . The "Version" library is just a simple support for working with the CVS\/SVN revision keyword. This software is published under the /GNU General Public License/. Only the "Encode".hs and "Version".hs files are instead subject to the /Revised BSD License/. Note the copyright and license details in the headers of the files, and see "LICENSE", "LicenseBSD" and "LicenseGPL" distributed with this package. "Encode" "FunParsing" "Version" Empingpackage Emping4derives heuristic rules from nominal data utility that reads a table in a csv (comma separated) format that can be generated from Open Office Calc (spreadsheet), derives all shortest rules for a selected attribute, and writes them to a .csv file that can be read by OO Calc. The shortest rules may be partially ordered by implication (entailment) and equivalence (equality) and this partial order is shown in Graphviz readable .dot files. Emping has a Gtk2Hs based GUI. elsekeyword else2A conditional expression has the form:
if e1 then e2 else e3
and returns the value of e2 if the value of e1 is True, e3 if e1 is False, and _|_ otherwise.
max a b = if a > b then a else b
$Eithermodule Data.Either>,The Either type, and associated operations. editlinepackage editlineiBindings to the editline library (libedit). This package contains bindings to the BSD editline library (). 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. edit-distancepackage  edit-distance;Levenhstein and restricted Damerau-Levenshtein edit distances Optimized edit distances for fuzzy matching, including Levenhstein and restricted Damerau-Levenshtein algorithms. EdisonCorepackage  EdisonCoreA library of efficent, purely-functional data structures (Core Implementations) This package provides the core Edison data structure implementations, including multiple sequence, set, bag, and finite map concrete implementations with various performance characteristics. The implementations in this package have no dependencies other than those commonly bundled with Haskell compilers. EdisonAPIpackage  EdisonAPIA library of efficient, purely-functional data structures (API) This package provides the typeclasses that form the Edison API and other common utility modules. Eastermodule Data.Time.Calendar.EasterDynamicmodule Data.DynamicThe 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. dsppackage dspoHaskell Digital Signal Processing Digital Signal Processing, Fourier Transform, Linear Algebra, Interpolation DrIFTpackage DrIFTProgram to derive type class instances DrIFT is a type sensitive preprocessor for Haskell. It extracts type declarations and directives from modules. The directives cause rules to be fired on the parsed type declarations, generating new code which is then appended to the bottom of the input file. The rules are expressed as Haskell code, and it is intended that the user can add new rules as required. DrIFT automates instance derivation for classes that aren't supported by the standard compilers. In addition, instances can be produced in seperate modules to that containing the type declaration. This allows instances to be derived for a type after the original module has been compiled. As a bonus, simple utility functions can also be produced from a type. download-curlpackage  download-curl High-level file download based on URLs High-level file download based on URLs Download web content as strict or lazy bytestringrs, strings, HTML tags, XML, RSS or Atom feeds or JSON, using the curl network library. Importing the library: > import Network.Curl.Download Loading a webpage as a "ByteString": > doc <- openURI "http://haskell.org" Loading from a file: > doc <- openURI "file:///tmp/A.hs" Loading a HTML page as a list of tags: > tags <- openAsTags "http://haskell.org" Loading a HTML page as XML: > tags <- openAsXML "http://haskell.org" Loading an RSS or Atom feed: > feed <- openAsFeed "http://haskell.org" These data types can the be processed further with the XML, Feed and TagSoup libraries. downloadpackage download High-level file download based on URLs High-level file download based on URLs Download web content as strict bytestring, strings, HTML tags, XML, RSS or Atom feeds or JSON, via HTTP, FTP or file protocols, using a URL interface. Importing the library: > import Network.Download Loading a webpage as a "ByteString": > doc <- openURI "http://haskell.org" Loading from a file: > doc <- openURI "file:///tmp/A.hs" Loading a HTML page as a list of tags: > tags <- openAsTags "http://haskell.org" Loading a HTML page as XML: > tags <- openAsXML "http://haskell.org" Loading an RSS or Atom feed: > feed <- openAsFeed "http://haskell.org" These data types can the be processed further with the XML, Feed and TagSoup libraries. dotgenpackage dotgen A simple interface for building .dot graph files. This package provides a simple interface for building .dot graph files, for input into the dot and graphviz tools. It includes a monadic interface for building graphs. dokeyword do Syntactic sugar for use with monadic expressions. For example:
do { x; result <- y; foo result }
is shorthand for:
x >> 
y >>= \result ->
foo result
~dnsrblpackage dnsrbl 9Asynchronous DNS RBL lookup Asynchronous DNS RBL lookup }dlistpackage dlist4 Differences lists Differences lists: a list-like type supporting O(1) append. This is particularly useful for efficient logging and pretty printing, (e.g. with the Writer monad), where list append quickly becomes too expensive. |djinnpackage djinnB Generate Haskell code from a type Djinn uses an theorem prover for intuitionistic propositional logic to generate a Haskell expression when given a type. {DisTractpackage DisTract WDistributed Bug Tracking System A distributed bug tracker layered on top of Monotone.  directorypackage  directory Zlibrary for directory handling This package provides a library for handling directories.  Directorymodule System. Directory) 8System-independent interface to directory manipulation. z dimensionalpackage  dimensional 4Statically checked physical dimensions. Dimensional is a library providing data types for performing arithmetic with physical quantities and units. Information about the physical dimensions of the quantities and units is embedded in their types and the validity of operations is verified by the type checker at compile time. The boxing and unboxing of numerical values as quantities is done by multiplication and division with units. The library is designed to, as far as is practical, enforce/encourage best practices of unit usage. Requires GHC 6.6.1 or later. ^Diffmodule Data.Array.Diff -Functional arrays with constant-time update. yDiffpackage DiffS WO(ND) diff algorithm in haskell. Basic implementation of the standard diff algorithm. xdiagramspackage diagrams An EDSL for creating simple diagrams An embedded domain-specific language (EDSL) for creating simple diagrams, built on top of the Cairo rendering engine. wdfsbuildpackage dfsbuild aBuild Debian From Scratch CD/DVD images Debian From Scratch (DFS) is a live bootable CD that is designed to provide a fully-featured kernel and a fully-featured rescue environment. The rescue environment contains filesystem tools, editors, C development environment, etc. dfsbuild is the program used to create the DFS CD image. It is highly configurable and can be used to create other custom bootable CD or DVD images. You can use dfsbuild to do something as simple as building a DFS CD with a custom kernel. Or, you can customize the CD to include a completely different set of packages. dfsbuild works by obtaining packages from your nearest Debian mirror. It will generate an ISO image that contains a bootable Debian system generated by installing those packages. Also, it can place all the .debs and files needed by cdebootstrap in the image. Thus, the generated image can be used to install the base Debian system on a PC as well. On i386 and amd64 platforms, dfsbuild supports the Grub bootloader. On Alpha, dfsbuild supports the aboot bootloader. On PowerPC, dfsbuild supports the yaboot bootloader. derivingkeyword deriving4 data and newtype declarations contain an optional deriving form. If the form is included, then derived instance declarations are automatically generated for the datatype in each of the named classes. Derived instances provide convenient commonly-used operations for user-defined datatypes. For example, derived instances for datatypes in the class Eq define the operations == and /=, freeing the programmer from the need to define them.
data T = A
       | B
       | C
       deriving (Eq, Ord, Show)
vderivepackage derived WA program and library to derive instances for data types Data.Derive is a library and a tool for deriving instances for Haskell programs. It is designed to work with custom derivations, SYB and Template Haskell mechanisms. The tool requires GHC, but the generated code is portable to all compilers. We see this tool as a competitor to DrIFT. u derangementpackage  derangement ^Find derangements of lists Find a derangement, a permutation with no fixed points, on a list tdephdpackage dephdw 2Analyze 'phred' output (.phd files) dephd - A simple tool for base calling and quality appraisal. Reads files in phd-format (phred output), either specified individually, or in a directory (use the --dir option to read directories). The Darcs repository is at . s denominatepackage  denominate GFunctions supporting bulk file and directory name normalization. Denominate is a simple program and an associated library supporting bulk file and directory name normalization. If you've ever spent a long time changing filenames to get rid of whitespace or convert periods and underscores to hyphens, you know why it exists. defaultkeyword defaultP aAmbiguities in the class Num are most common, so Haskell provides a way to resolve them---with a default declaration:
default (Int)
Only one default declaration is permitted per module, and its effect is limited to that module. If no default declaration is given in a module then it assumed to be:
default (Integer, Double)
r DeepArrowpackage  DeepArrow Arrows for "deep application" This library provides a framework for type-directed composition of value editors (non-syntactic transformations). The tools enable \"deep function application\" in two senses: deep application of functions and application of deep functions. These tools generalize beyond values and functions, via the @DeepArrow@ subclass of the @Arrow@ type class. For more information see: * The project wiki page * Application of deep arrows for composable interfaces in the TV library: * The motivating idea and paper "Functional Programming by Interacting with Tangible Values": This page and the module documentation pages have links to colorized source code and to wiki pages where you can read and contribute /user comments/. Enjoy! The primary module is "Control.Arrow.DeepArrow". Examples in "Control.Arrow.DeepArrow.Examples". /Note/: Many of the type signatures use infix type operators (as in @a~>b@), a recent extension to GHC. In reading the documentation and code, be aware that infix operators bind more tightly than @->@. © 2007 by Conal Elliott (); BSD3 license. qDecimalpackage Decimal# Decimal numbers with variable precision A decimal number has an integer mantissa and a negative exponent. The exponent can be interpreted as the number of decimal places in the value. Debugmodule Text.XHtml.Debug$ EThis module contains functions for displaying HTML as a pretty tree. pdebianpackage debianJ% A set of modules for working with Debian control files and packages This version is very out of date and no longer supported. Get latest version from darcs for now. Modules for parsing Debian control files, resolving dependencies, comparing version numbers, and other useful stuff. oDBuspackage DBus& DBus bindings Bindings for the D-Bus API. For details on D-Bus, see the D-Bus wiki at: n datapackerpackage  datapackerG' Tool to help pack files into the minimum number of CDs/DVDs/etc datapacker is a tool to group files by size. It is designed to group files such that they fill fixed-size containers (called "bins") using the minimum number of containers. This is useful, for instance, if you want to archive a number of files to CD or DVD, and want to organize them such that you use the minimum possible number of CDs or DVDs. In many cases, datapacker executes almost instantaneously. Of particular note, the hardlink action can be used to effectively copy data into bins without having to actually copy the data at all. datapacker is a tool in the traditional Unix style; it can be used in pipes and call other tools. mdataencpackage dataenc6* Data encoding library Data encoding library currently providing Uuencode, Base64, Base64Url, Base32, Base32Hex, Base16, and Base85. l data-defaultpackage  data-default* (A class for types with a default value kdata-accessor-templatepackage data-accessor-templatee+ Utilities for accessing and manipulating fields of records Automate generation of @Accessor@'s of the @data-accessor@ package by Template Haskell functions. j data-accessorpackage  data-accessor<, Utilities for accessing and manipulating fields of records In Haskell 98 the name of a record field is automatically also the name of a function which gets the value of the according field. E.g. if we have data Pair a b = Pair {first :: a, second :: b} then > first :: Pair a b -> a > second :: Pair a b -> b However for setting or modifying a field value we need to use some syntactic sugar, which is often clumsy. modifyFirst :: (a -> a) -> (Pair a b -> Pair a b) modifyFirst f r\@(Pair {first=a}) = r{first = f a} With this package you can define record field accessors which allow setting, getting and modifying values easily. The package clearly demonstrates the power of the functional approach: You can combine accessors of a record and sub-records, to make the access look like the fields of the sub-record belong to the main record. Example: > *Data.Accessor.Example> (first^:second^=10) (('b',7),"hallo") > (('b',10),"hallo") You can easily manipulate record fields in a 'Control.Monad.State.State' monad, you can easily code Show instances that use the Accessor syntax and you can parse binary streams into records. See @Data.Accessor.Example@ for demonstration of all features. It would be great if in revised Haskell versions the names of record fields are automatically 'Data.Accessor.Accessor's rather than plain @get@ functions. The package @data-accessor-template@ provides Template Haskell functions for automated generation of 'Data.Acesssor.Accessor's. datakeyword data02 \The data declaration is how one introduces new algebraic data types into Haskell. For example:
data Set a = NilSet 
           | ConsSet a (Set a)
Another example, to create a datatype to hold an [[Abstract syntax tree]] for an expression, one could use:
data Exp = Ebin   Operator Exp Exp 
         | Eunary Operator Exp 
         | Efun   FunctionIdentifier [Exp] 
         | Eid    SimpleIdentifier
where the types Operator, FunctionIdentifier and SimpleIdentifier are defined elsewhere. See the page on types for more information, links and examples. i darcs-monitorpackage  darcs-monitor4 ?Darcs repository monitor (sends email) Darcs-monitor will send email to a specified recipient about new changes added to a specific darcs repository. It can be run as an apply posthook (resulting in near-instantaneous "push" emails), or periodically from Cron, or occasionally by hand, whatever seems most convenient. h darcs-graphpackage  darcs-graph96 [Generate graphs of darcs repository activity Generate graphs of darcs repository activity gdarcs-cabalizedpackage darcs-cabalized6 David's Advanced Version Control System Darcs is a revision control system, along the lines of CVS or arch. That means that it keeps track of various revisions and branches of your project, allows for changes to propagate from one branch to another. Darcs is intended to be an _advanced_ revision control system. Darcs has two particularly distinctive features which differ from other, centralized, revision control systems: * each copy of the source is a fully functional branch, and * underlying darcs is a consistent and powerful theory of patches. The Darcs repository can be found at . This is an unofficial package of Darcs, using Cabal; problems with it may well be the fault of the packager and not the Darcs project. fdarcs-buildpackagepackage darcs-buildpackage: 1Tools to help manage Debian packages with Darcs ecurlpackage curlZ: Haskell binding to libcurl libcurl is a client-side URL transfer library, supporting FTP, FTPS, HTTP, HTTPS, SCP, SFTP, TFTP, TELNET, DICT, LDAP, LDAPS and FILE. libcurl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, cookies, user+password authentication (Basic, Digest, NTLM, Negotiate, Kerberos4), file transfer resume, http proxy tunneling and more! This package provides a Haskell binding to libcurl. d ctemplatepackage  ctemplateR< Binding to the Google ctemplate library CTemplate is the library that Google uses to render most of their sites (including the www.google.com search). It's a simple templating system, but includes many, easy to use, escaping functions. ccsvpackage csvd= =CSV loader and dumper CSV loader and dumper This library parses and dumps documents that are formatted according to RFC 4180, \"The common Format and MIME Type for Comma-Separated Values (CSV) Files\". This format is used, among many other things, as a lingua franca for spreadsheets, and for certain web services. bCryptopackage Crypto> DES, Blowfish, AES, TEA, SHA1, MD5, RSA, BubbleBabble, Hexdump, Support for Word128, Word192 and Word256 and Beyond, PKCS5 Padding, Various Encryption Modes e.g. Cipher Block Chaining all in one package. acrackpackage crack? =A haskell binding to cracklib A haskell binding to cracklib SCPUTimemodule System.CPUTime6@ The standard CPUTime library. `cpuperfpackage cpuperf@ uModify the cpu frequency on OpenBSD systems cpuperf toggle the cpu frequency on OpenBSD systems between 0 and 100%. _cpuidpackage cpuidA gBinding for the cpuid machine instruction on x86 compatible processors This module provides the function 'cpuid' for accessing information about the currently running IA-32 processor. Both a function for calling the 'cpuid' instruction directly, and some convenience functions for common uses are provided. This package is only portable to IA-32 machines. ^cpphspackage cpphsB A liberalised re-implementation of cpp, the C pre-processor. Cpphs is a re-implementation of the C pre-processor that is both more compatible with Haskell, and itself written in Haskell so that it can be distributed with compilers. This version of the C pre-processor is pretty-much feature-complete and compatible with traditional (K&R) pre-processors. Additional features include: a plain-text mode; an option to unlit literate code files; and an option to turn off macro-expansion. ] CPBrainfuckpackage  CPBrainfuckD kA simple Brainfuck interpretter. This is a very simple brainfuck interpretter, that's easy to understand. \ COrderingpackage  COrderinghE An algebraic data type similar to Prelude Ordering. Typically this is used as the return type of a combining comparison, which combines two values if they are deemed equal in some sense. Currently combining comparisons are used extensively by the AVL tree package (AvlTree). [control-timeoutpackage control-timeoutF GTimeout handling This package provides functions for running timeouts Zcontrol-monad-omegapackage control-monad-omegaEG bA breadth-first list monad. A monad for enumerating sets: like the list monad but breadth-first. Ycontrol-monad-freepackage control-monad-freeG KA monad transformer for free monads. A monad transformer for free monads. X control-eventpackage  control-eventnH sEvent scheduling system. Allows scheduling and canceling of IO actions to be executed at a specified future time. W ContArrowpackage  ContArrowI SControl.Arrow.Transformer.Cont A library providing Control.Arrow.Transformer.Cont  containerspackage  containersI 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.ContJ 
  • 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. Vconjurepackage conjureQ LA BitTorrent client Conjure is a Bittorrent client written in the functional, pure, lazy language of Haskell. The primary point of Conjure is to show the feasibility of Haskell with respect to heavy network applications. In particular, we are using the STM (Software Transactional Memory) framework to provide us with concurrency.  Configuremodule Distribution.Simple. Configure!S kExplanation: Perform the "./setup configure" action. Outputs the dist/setup-config file. y Configurationmodule! Distribution.PackageDescription. ConfigurationS Configurations U ConfigFilepackage  ConfigFile*T [Configuration file reading & writing Parser and writer for handling sectioned config files in Haskell. The ConfigFile module works with configuration files in a standard format that is easy for the user to edit, easy for the programmer to work with, yet remains powerful and flexible. It is inspired by, and compatible with, Python's ConfigParser module. It uses files that resemble Windows .INI-style files, but with numerous improvements. ConfigFile provides simple calls to both read and write config files. It's possible to make a config file parsable by this module, the Unix shell, and make. T condorcetpackage  condorcetV Library for Condorcet voting This is a small library for determining the winner of a Condorcet election; for what a Condorcet election is, see  Concurrentmodule Foreign. ConcurrentW IFFI datatypes and operations that use or require concurrency (GHC only).  Concurrentmodule Control. ConcurrentMX GA common interface to a collection of useful concurrency abstractions. S compressionpackage  compressionX Common compression algorithms. Currently contains: * An implementation of the inflate algorithm from RFC 1951 (decompression only). * An implementation of the gzip algorithm from RFC 1952 (decompression only). ;Complexmodule Data.ComplexY Complex numbers. }Compilermodule Distribution.Simple.Compiler(Z Haskell implementations. eCompilermodule Distribution.CompilerZ Haskell compiler flavors uCommandmodule Distribution.Simple.CommandZ HExplanation: Data types and parser for the standard command-line setup.  Combinatormodule Text.ParserCombinators.Parsec. Combinatory[ Parsec compatibility module  Combinatormodule Text.Parsec. Combinator[ "Commonly used generic combinators Rcolockpackage colock$\ thread-friendly file locks that don't block the entire program This module provides file locks that (unlike their counterparts in System.Posix.IO) leave other threads running while one waits for the lock. Q collectionspackage  collections'] Useful standard collections types and related functions. This package provides a suite of data structures types, with a consistent API. It is intended as an evolution of the data structures in the @base@ package. <Coercemodule Unsafe.Coerce2^ 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.
Pcodec-libeventpackage codec-libeventja Cross-platform structure serialisation This package parses and generates Haskell code for serialising and deserialising the tagging format in libevent 1.4. OCodec-Image-DevILpackage Codec-Image-DevILHb An FFI interface to the DevIL library Provides a very simple interface to the DevIL image library. Provides functions readImage and writeImage, which can read and write many image formats from/to an RGBA array of values to work with. NCodec-Compression-LZFpackage Codec-Compression-LZF|c SLZF compression bindings. A Haskell binding to the liblzf by Marc Lehmann. LZF is a fast compression algorithm sacrifising compression quality for an extra bit of speed. The tiny library is contained in the source and statically linked in the Haskell library resulting in no external dependencies. Exposed-modules: Codec.Compression.LZF Cmdmodule System.Cmdd Executing an external command. This module provides a simple interface for executing external commands. For a more complex, but more powerful, interface, see the System.Process module. Mcmathpackage cmathe SA binding to the standard C math library A binding to the standard C math library L clustertoolspackage  clustertoolsrf Tools for manipulating sequence clusters This is a bunch of stuff I needed at some for manipulating sequence clusters. See the README for details. The tools included are: * filter - remove unwanted sequences from a clustering * hist - produce a histogram of cluster sizes from a "label"-formatted clustering. * clusc - compare clusterings, calculating numerous pair-based and entropy based indices. * add_single - add singletons to a clustering. * ace2contigs - parse an ACE assembly file, and output the contigs in a FASTA file. * ace2fasta - parse an ACE assembly, and output each assembly in a separate FASTA file * ace2clusters - parse an ACE assembly, and output clusters in TGICL format * clusterlibs - given a table of regular expressions and library names, along with a clustering (TGICL-format), output a table of clusters with the library name prepended to the sequences. * xcerpt - extract sequences from a list of sequence labels. The Darcs repository is at: . Clockmodule Data.Time.Clockj $Types and functions for UTC and UT1 K clevercsspackage  clevercss k A CSS preprocessor CleverCSS is a CSS preprocessing library that allows defining variables and nesting selectors so that you don't need to Repeat Yourself. Jclassifypackage classifyk &Library for classification of files. classkeyword class%l A class declaration introduces a new type class and the overloaded operations that must be supported by any type that is an instance of that class.
class Num a  where
  (+)    :: a -> a -> a
  negate :: a -> a
Classmodule Control.Monad.Writer.ClassFm 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.Classxn MonadState class. This module is inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.Reader.Classo 
  • 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://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.RWS.Classs Declaration of the MonadRWS class. Inspired by the paper /Functional Programming with Overloading and Higher-Order Polymorphism/, Mark P Jones (http://www.cse.ogi.edu/~mpj/) Advanced School of Functional Programming, 1995. Classmodule Control.Monad.Error.Classu 
  • 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.Classw 
  • 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. Ichunkspackage chunks~ RSimple template library with static safety This library supports templates inspired by the Perl HTML::Chunks module, but this Haskell implementation checks at compile time that the templates used exist and are used correctly. The templates are combined within the compiled Haskell, removing the dependency on the external template file. Hchppackage chp bAn implementation of concurrency ideas from Communicating Sequential Processes The Communicating Haskell Processes (CHP) library is an implementation of ideas from Hoare's Communicating Sequential Processes. More details and a tutorial can be found at its homepage: The library requires at least GHC 6.8.1. Gchildpackage child Fcheckedpackage checkedՁ Bounds-checking integer types. Includes replacements for all of the 'Data.Int' and 'Data.Word' types. No effort has been made towards performance. {Checkmodule! Distribution.PackageDescription.Check AThis module provides functionality to check for common mistakes. EChasingBottomspackage ChasingBottoms1 !For testing partial and infinite values. Do you ever feel the need to test code involving bottoms (e.g. calls to the @error@ function), or code involving infinite values? Then this library could be useful for you. It is usually easy to get a grip on bottoms by showing a value and waiting to see how much gets printed before the first exception is encountered. However, that quickly gets tiresome and is hard to automate using e.g. QuickCheck (). With this library you can do the tests as simply as the following examples show. Testing explicitly for bottoms: [@> isBottom (head [\])@] @True@ [@> isBottom bottom@] @True@ [@> isBottom (\\_ -> bottom)@] @False@ [@> isBottom (bottom, bottom)@] @False@ Comparing finite, partial values: [@> ((bottom, 3) :: (Bool, Int)) ==! (bottom, 2+5-4)@] @True@ [@> ((bottom, bottom) :: (Bool, Int)) approxShow 4 $ (True, bottom) \\\/! (bottom, \'b\')@] @\"Just (True, \'b\')\"@ [@> approxShow 4 $ (True, bottom) \/\\! (bottom, \'b\')@] @\"(_|_, _|_)\"@ [@> approxShow 4 $ ([1..\] :: [Int\])@] @\"[1, 2, 3, _\"@ [@> approxShow 4 $ (cycle [bottom\] :: [Bool\])@] @\"[_|_, _|_, _|_, _\"@ Approximately comparing infinite, partial values: [@> approx 100 [2,4..\] ==! approx 100 (filter even [1..\] :: [Int\])@] @True@ [@> approx 100 [2,4..\] \/=! approx 100 (filter even [bottom..\] :: [Int\])@] @True@ The code above relies on the fact that @bottom@, just as @error \"...\"@, @undefined@ and pattern match failures, yield exceptions. Sometimes we are dealing with properly non-terminating computations, such as the following example, and then it can be nice to be able to apply a time-out: [@> timeOut' 1 (reverse [1..5\]) >>= print@] @Value [5,4,3,2,1]@ [@> timeOut' 1 (reverse [1..\]) >>= print@] @NonTermination@ The time-out functionality can be used to treat \"slow\" computations as bottoms: [@> let tweak = Tweak { approxDepth = Just 5, timeOutLimit = Just 2 }@] [@> semanticEq tweak (reverse [1..\], [1..\]) (bottom :: [Int\], [1..\] :: [Int\])@] @True@ [@> let tweak = noTweak { timeOutLimit = Just 2 }@] [@> semanticJoin tweak (reverse [1..\], True) ([\] :: [Int\], bottom)@] @Just ([],True)@ This can of course be dangerous: [@> let tweak = noTweak { timeOutLimit = Just 0 }@] [@> semanticEq tweak (reverse [1..100000000\]) (bottom :: [Integer\])@] @True@ Timeouts can also be applied to @IO@ computations: [@> let primes = unfoldr (\\(x:xs) -> Just (x, filter ((\/= 0) . (\`mod\` x)) xs)) [2..\]@] [@> timeOutMicro 100 (print $ filter ((== 1) . (\`mod\` 83)) primes) >>= print@] @[167,499NonTermination@ [@> timeOutMicro 100 (print $ take 4 $ filter ((== 1) . (\`mod\` 83)) primes) >>= print@] @[167,499,997NonTermination@ [@> timeOutMicro 100 (print $ take 4 $ filter ((== 1) . (\`mod\` 83)) primes) >>= print@] @[167,499,997,1163]@ [@ @] @Value ()@ All the type annotations above are required. For the underlying theory and a larger example involving use of QuickCheck, see the article \"Chasing Bottoms, A Case Study in Program Verification in the Presence of Partial and Infinite Values\" (). The code has been tested under GHC 6.8. Most parts can probably be ported to other Haskell compilers, but that would require some work. The @TimeOut@ functions require preemptive scheduling, and most of the rest requires @Data.Generics@; @isBottom@ only requires exceptions, though. DChartpackage Chart{ A library for generating 2D Charts and Plots A library for generating 2D Charts and Plots, based upon the cairo graphics library. Char8module Data.ByteString.Lazy.Char8? 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
Char8module Data.ByteString.Char8( 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.CharM Parsec compatibility module Charmodule Text.Parsec.Char !Commonly used character parsers. :Charmodule Data.Char )The Char type and associated operations. C change-mongerpackage  change-mongerQ Parse VCS changelogs into ChangeLogs change-monger is intended to allow you to extract the revision history from various VCSes like Darcs, and save them as a ChangeLog; particularly important is being able to extract the summaries for all patches since the last release. .Chanmodule Control.Concurrent.Chan Unbounded channels. Bchalmers-lava2000package chalmers-lava2000 ;Hardware description library Hardware description library Acgi-undecidablepackage cgi-undecidablek Undecidable instances for the cgi package. This package adds some useful type class instances to the cgi package. This is in a separate package to allow the cgi package to be compatible with Haskell implementations that don't support undecidable instances. @cgipackage cgi XA library for writing CGI programs This is a Haskell library for writing CGI programs. ?cedictpackage cedict ]Convenient Chinese phrase & character lookup. Convenient Chinese phrase & character lookup. > CC-delcontpackage  CC-delcont pDelimited continuations and dynamically scoped variables An implementation of multi-prompt delimited continuations based on the paper, /A Monadic Framework for Delimited Continuations/, by R. Kent Dybvig, Simon Peyton Jones and Amr Sabry (). It also includes a corresponding implementation of dynamically scoped variables, as implemented in the paper, /Delimited Dynamic Binding/, by Oleg Kiselyov, Chung-chieh Shan and Amr Sabry (), adapted from the original haskell code, (). =category-extraspackage category-extrasR .Various modules and constructs inspired by category theory A vastly expanded collection of modules implementing various ideas from category theory. Notable bits include: comonads, adjunctions, and various recursion schemes ala /Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire/. <catchpackage catch *Static Analysis for Pattern-Match Errors casekeyword case A case expression has the general form
case e of { p1 match1; ...; pn matchn }
where each match is of the general form
| g1  -> e1
  ...
| gm -> em
   where decls
Each alternative consists of a pattern pi and its matches, matchi. Each match in turn consists of a sequence of pairs of guards gj and bodies ej (expressions), followed by optional bindings (decls) that scope over all of the guards and expressions of the alternative. An alternative of the form
pat -> exp where decls
is treated as shorthand for:
pat | True -> exp
  where decls
A case expression must have at least one alternative and each alternative must have at least one body. Each body must have the same type, and the type of the whole expression is that type. A case expression is evaluated by pattern matching the expression e against the individual alternatives. The alternatives are tried sequentially, from top to bottom. If e matches the pattern in the alternative, the guards for that alternative are tried sequentially from top to bottom, in the environment of the case expression extended first by the bindings created during the matching of the pattern, and then by the declsi in the where clause associated with that alternative. If one of the guards evaluates to True, the corresponding right-hand side is evaluated in the same environment as the guard. If all the guards evaluate to False, matching continues with the next alternative. If no match succeeds, the result is _|_. ;carraypackage carray A C-compatible array library. A C-compatible array library. Provides both an immutable and mutable (in the IO monad) interface. Includes utilities for multi-dimensional arrays, slicing and norms. Memory is 16-byte aligned by default to enable use of SIMD instructions. Calendarmodule Data.Time.Calendard :calcpackage calc .A small compiler for arithmetic expressions. 9 cabalrpmdepspackage  cabalrpmdeps _Autogenerate rpm dependencies from cabal files Autogenerate rpm dependencies from cabal files 8 cabalmdvrpmpackage  cabalmdvrpm (Create mandriva rpm from cabal package 7 cabal2archpackage  cabal2archߪ _Create Arch Linux packages from Cabal packages Create Arch Linux packages from Cabal packages 6 cabal-uploadpackage  cabal-uploadu Command-line tool for uploading packages to Hackage This is a command-line tool program for uploading packages to the Hackage package database. 5 cabal-testpackage  cabal-test9 Automated test tool for cabal projects. Cabal-test is a tool for testing cabal projects. It uses the GHC-api to load the code so any code currently buildable by GHCi should be testable by cabal-test. You can choose how many tests to run and how many to run concurrently. 4 cabal-setuppackage  cabal-setup~ The user interface for building and installing Cabal packages cabal-setup is a user interface to Cabal. It provides the basic commands for configuring, building, and installing Cabal packages. 3 cabal-rpmpackage  cabal-rpmr RPM package builder for Haskell Cabal source packages. This package turns Haskell Cabal source packages into source and binary RPM packages. 2 cabal-installpackage  cabal-install9 The command-line interface for Cabal and Hackage. The \'cabal\' command-line program simplifies the process of managing Haskell software by automating the fetching, configuration, compilation and installation of Haskell libraries and programs. Cabalpackage CabalW zA framework for packaging Haskell software The Haskell Common Architecture for Building Applications and Libraries: a framework defining a common interface for authors to more easily build their Haskell applications in a portable way. The Haskell Cabal is meant to be a part of a larger infrastructure for distributing, organizing, and cataloging Haskell libraries and tools. 1c2hspackage c2hs C->Haskell Interface Generator C->Haskell assists in the development of Haskell bindings to C libraries. It extracts C interface information from vanilla header files and generates marshaling and signature code in Haskell. Cmodule Foreign.C 1Bundles the C specific FFI library functionality 0bzlibpackage bzlib_ Compression and decompression in the bzip2 format This package provides a pure interface for compressing and decompressing streams of data represented as lazy 'ByteString's. It uses the bz2 C library so it has high performance. 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 bzip2 feature set. /bytestringreadppackage bytestringreadp' A ReadP style parser library for ByteString This 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\". Adapted to use Data.ByteString by Gracjan Polak. Designed as a drop-in replacement for Text.ParserCombinators.ReadP. .bytestringparserpackage bytestringparser\ .Combinator parsing with Data.ByteString.Lazy -bytestring-showpackage bytestring-showǷ wEfficient conversion of values into readable byte strings. Efficient conversion of values into readable byte strings. ,bytestring-mmappackage bytestring-mmap{ mmap support for strict ByteStrings This library provides a wrapper to mmap(2), allowing files or devices to be lazily loaded into memory as strict or lazy ByteStrings, using the virtual memory subsystem to do on-demand loading. +bytestring-lexingpackage bytestring-lexing YParse literals efficiently from bytestrings Parse literals efficiently from bytestrings *bytestring-csvpackage bytestring-csv8 KParse CSV formatted data efficiently Parse CSV formatted data efficiently  bytestringpackage  bytestring 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.Parsec. ByteString+ RMake strict ByteStrings an instance of Stream with Char token type.  ByteStringmodule Data. ByteString 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.  BuildPathsmodule Distribution.Simple. BuildPaths IA bunch of dirs, paths and file names used for intermediate build steps. Buildmodule Distribution.Simple.Builde `Invokes the Distribution.Compilers to build the library and executables in this package. ) brainfuckpackage  brainfuck Brainfuck interpreter This is an interpreter of the brainf*ck language, written in the pure, lazy, functional language Haskell. (botpppackage botpp Build tool for Lambdabot This is a build tool for the Lambdabot IRC bot, which processes simple directives to write a bunch of boilerplate Haskell code. 'botpackage bot_ bots for functional reactive programming /Bot/ is an experimental, arrow-friendly foundation for functional reactive programming. Please see the project wiki page: The module documentation pages have links to colorized source code and to wiki pages where you can read and contribute user comments. Enjoy! © 2008 by Conal Elliott; BSD3 license. 9Boolmodule Data.Bool ,The Bool type and related functions. & bloomfilterpackage  bloomfilterv ]Pure and impure Bloom Filter implementations. Pure and impure Bloom Filter implementations. %blockiopackage blockio 5Block-oriented I/O Driver Block-oriented I/O Driver $blaspackage blas\ ZBindings to the BLAS library The BLAS (Basic Linear Algebra Subprograms) are routines that provide standard building blocks for performing basic vector and matrix operations. The Level 1 BLAS perform scalar, vector and vector-vector operations, the Level 2 BLAS perform matrix-vector operations, and the Level 3 BLAS perform matrix-matrix operations. Because the BLAS are efficient, portable, and widely available, they are commonly used in the development of high quality linear algebra software, LAPACK for example. For more information, see the Netlib BLAS webpage: #bktreespackage bktrees $A set data structure with approximate searching Burkhard-Keller trees provide an implementation of sets which apart from the ordinary operations also has an approximate member search, allowing you to search for elements that are of a certain distance from the element you are searching for. " BitSyntaxpackage  BitSyntax8 9A module to aid in the (de)serialisation of binary data !bitsetpackage bitset A functional data structure for efficient membership testing. A /bit set/ maintains a record of members from a type that can be mapped into (non-negative) @Int@s. Supports insertion, deletion, size, and membership testing, and is completely pure (functional). Bitsmodule Data.Bits /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. biopackage bio% A bioinformatics library This is a collection of data structures and algorithms I've found useful when building various bioinformatics-related tools and utilities. Current list of features includes: a Sequence data type supporting protein and nucleotide sequences and conversion between them, quality data, reading and writing Fasta formatted files, reading TwoBit and phd formats. Rudimentary support for doing alignments - including dynamic adjustment of scores based on sequence quality - and Blast output parsing. Partly implemented single linkage clustering, and multiple alignment. The Darcs repository is at: .  binary-strictpackage  binary-strict Binary deserialisation using strict ByteStrings This is a strict version of the Get monad from the binary package. It's pretty much just a copy and paste job from the original source code. The binary team are currently unsure about their future plans w.r.t. strictness, so this is just a stop gap measure. See http://www.haskell.org/haskellwiki/DealingWithBinaryData for documentation.  binary-searchpackage  binary-search 2Binary and exponential searches These modules address the problem of finding the boundary of an upward-closed set of integers, using a combination of exponential and binary searches. Variants are provided for searching within bounded and unbounded intervals of both 'Integer' and bounded integral types. binarypackage binary iBinary serialisation for Haskell values using lazy ByteStrings Efficient, pure binary serialisation using lazy ByteStrings. Haskell values may be encoded to and from binary formats, written to disk as binary, or sent over the network. Serialisation speeds of over 1 G\/sec have been observed, so this library should be suitable for high performance scenarios. bimappackage bimap Bidirectional mapping between two key types A data structure representing a bidirectional mapping between two key types. Each value in the bimap is associated with exactly one value of the opposite type.  BerkeleyDBpackage  BerkeleyDB Bindings for Berkeley DB v1.x Provides Haskell bindings for Berkeley DB v1.x, a simple file-backed database library which is included by default with many UNIX distributions. This package presently makes no effort to support modern versions of Berkeley DB. Databases may be organized in one of four methods: in a hashtable, in a b-tree, in a stream of fixed-length records, and in a stream of variable-length records. Custom comparison and hash functions are supported. Most of the standard database API is supported. This implementation *seems* stable, inasmuch as I don't know of any glaring flaws, but I haven't done anything that could even jokingly be referred to as coverage testing. bencodepackage bencode 'Parser and printer for bencoded data.  benchpresspackage  benchpress Micro-benchmarking with detailed statistics. Benchmarks actions and produces statistics such as min, mean, median, standard deviation, and max execution time. Also computes execution time percentiles. Comes with functions to pretty-print the results. Batchmodule Test.QuickCheck.Batch 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). baskellpackage baskellX An interpreter for a small functional language Baskell is an interpreter for a small functional language. It supports type inference, lazy evaluation and strict evaluation. Basicsmodule Data.Generics.BasicsB "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.  base64-stringpackage  base64-string= Base64 implementation for String's. This Base64 implementation uses the characters A-Z a-z 0-9 + / along with = to signal the number of characters mod 3. It is compliant with both PEM (RFC 989 / RFC 1421) and MIME (RFC 2045). basepackage baseG 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 Test.HUnit.BaseB ]Basemodule Data.Array.Basew bBasis for IArray and MArray. Not intended for external consumption; use IArray or MArray instead.  Barracudapackage  Barracuda An ad-hoc P2P chat program An ad-hoc chat program developed in the software development course at the TU-Braunschweig. Barracuda (by Stephan Friedrichs, Henning Günther, Oliver Mielentz and Martin Wegner) implements an ad-hoc (p2p) network. On top of that, a chat application has been realised. Just like in IRC, the communication is organised in channels. A channel may be anonymous (the messages' origin is obscured), private (encrypted, only invited users may join them) or public (free for all users). The design is elaborated in a series of RFCs (see for example ). The Darcs repository can be found at  backdropperpackage  backdropper /Rotates backdrops for X11 displays using qiv. AvlTreepackage AvlTreeX Balanced binary trees using the AVL algorithm. A comprehensive and efficient implementation of AVL trees. The raw AVL API has been designed with efficiency and generality in mind, not elagance or safety. It contains all the stuff you really don't want to write yourself if you can avoid it. This library may be useful for rolling your own Sets, Maps, Sequences, Queues (for example). autoprocpackage autoproc BEDSL for Procmail scripts Autoproc is a utility which allows you to write an email filterer in an Haskell EDSL (embedded domain specific language); autoproc will then compile it down to a Procmail configuration file (.procmailrc). This file can then be used with Procmail to sort and filter your email before you see it.  AutoFormspackage  AutoForms{ 3GUI library based upon generic programming (SYB3) AutoForms is a library to ease the creation of Graphical User Interfaces (GUI). It does this by using generic programming to construct GUI components. The AutoForms user creates an ordinary algebraic data type (ADT), which should reflect the data model of an application. From this ADT AutoForms automatically constructs a GUI component, by using the structure and identifiers of the ADT. To facilitate this construction, AutoForms uses the 'Scrap your boilerplate' approach to generic programming. This component can be displayed using WxHaskell or by an AutoForms custom monad called WxM.. The first facilitates that people who already knows WxHaskell quickly will be able to make GUIs. The second is our attempt at a more type-safe and easier to use GUI toolkit.  attoparsecpackage  attoparsec .Combinator parsing with Data.ByteString.Lazy astarpackage astar8 `General A* search algorithm. This is a data-structure independent implementation of A* search. ASN1package ASN1 ASN.1 support for Haskell Enough ASN.1 suppport for X.509 identity and attribute certificates, PKCS8, PKCS1v15. Only the Basic Encoding Rules (BER) are supported. askeyword as Renaming module imports. Like qualified and hiding, as is not a reserved word but may be used as function or variable name.
import qualified Data.Map as M

main = print (M.empty :: M.Map Int ())
arrowspackage arrows Arrow classes and transformers Several classes that extend the Arrow class, and some transformers that implement or lift these classes. arrowppackage arrowpR preprocessor translating arrow notation into Haskell 98 A preprocessor that reads Haskell with arrow notation and outputs Haskell 98. Note that GHC 6.2 or later has built-in support for arrow notation, so if you're only using GHC, you don't need this preprocessor: just rename your arrow module as an ordinary Haskell source file and invoke GHC with the -farrows option. You'll get better error messages for arrow code, too. )Arrowmodule Control.Arrow2 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/. ArrayRefpackage ArrayRefP Unboxed references, dynamic arrays and more This array library supports: unboxed references, Monad-independent references, syntax sugar for mutable types, a reimplemented Arrays library, changes in MArray usage, and using dynamic (resizable) arrays arraypackage arrays 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.Array7 Basic non-strict arrays. Note: The Data.Array.IArray module provides 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. applicative-extraspackage applicative-extras VInstances for Applicative Some instances for Applicative and type-level composition. ( 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. AppleScriptpackage  AppleScriptH wCall AppleScript from Haskell. This package enables you to compile and execute AppleScript from Haskell applications. anydbmpackage anydbm BInterface for DBM-like database systems This module provides a generic infrastructure for supporting storage of hash-like items with String-to-String mappings. It can be used for in-memory or on-disk storage. Two simple backend drivers are included with this package: one that is RAM-only, and one that is persistent and disk-backed. The hdbc-anydbm package provides another driver, which lets you use simple tables in any SQL database to provide a DBM-like interface. MissingPy also provides a Python driver which lets you use any Python anydbm driver under Haskell AnyDBM. ALUTpackage ALUTS UA binding for the OpenAL Utility Toolkit A Haskell binding for the OpenAL Utility Toolkit, which makes managing of OpenAL contexts, loading sounds in various formats and creating waveforms very easy. For more information about the C library on which this binding is based, please see: .  alsa-midipackage  alsa-midi Bindings for the ALSA sequencer API (MIDI stuff) Bindings for the ALSA sequencer API (MIDI stuff) Since there is also which aims at a more complete interface to ALSA we will no longer maintain this one. Allocmodule Foreign.Marshal.Alloc :Marshalling support: basic routines for memory allocation Aliasesmodule Data.Generics.Aliasesy "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. alexpackage alex!<Alex is a tool for generating lexical analysers in Haskell AGIpackage AGI!5A library for writing AGI scripts for Asterisk Asterisk is an open-source Voice over IP server (VoIP). Asterisk provides an Asterisk Gateway Interface (AGI), which can be used to write external programs that interact with Asterisk. It is typically used for creating Interactive Voice Response (IVR) systems.  AERN-RnToRmpackage  AERN-RnToRmR!polynomial function enclosures (PFEs) approximating exact real functions AERN-RnToRm provides datatypes and abstractions for approximating functions of type @D -> R^m@ where @D@ is a bounded interval in @R^n@ with non-empty interior. The main datatype are function enclosures whose boundaries are piece-wise polynomial with a bounded degree. (This degree can be set arbitrarily high or as low as 0.) This datatype is supported by safely rounding operations whose precision can be increased arbitrarily, so that they all converge to the exact operations. Field operations, integration, maximisation and some elementary operations (namely exp, sin, cos) are among those already implemented. For an architectural overview, see module "Data.Number.ER.RnToRm". A mathematical description of the very basics as well as a brief comparison with Taylor Models is included in the paper . Simple examples of usage can be found in module @Demo.hs@ in folder @tests@.  AERN-Realpackage  AERN-Real~!arbitrary precision interval arithmetic for approximating exact real numbers Datatypes and abstractions for approximating exact real numbers and a basic arithmetic over such approximations. The main datatype is interval with arbitrary precision endpoints supported by safely rounding field and elementary operations whose precision can be increased arbitrarily, so that they all converge to the exact operations. The design of the library is inspired to some degree by Mueller's iRRAM and Lambov's RealLib (both are C++ libraries for exact real arithmetic). For an architectural overview, see module "Data.Number.ER.Real". Simple examples of usage can be found in module @Demo.hs@ in folder @tests@.  adhoc-networkpackage  adhoc-networkw !tAd-hoc P2P network protocol This is a library for ad hoc P2p networking, developed for the Barracuda chat client (by Stephan Friedrichs, Henning Günther, Oliver Mielentz and Martin Wegner). This library implements the RFCs (see for example ). The Darcs repository can be found at Adaptivepackage Adaptive !Library for incremental computing. This is a Haskell (plus some extensions) implementation of a library for incremental computing. It closely follows the implementation in the nice POPL 2002 paper "Adaptive Functional Programming", by Umut Acar, Guy Blelloch and Bob Harper. _keyword _P !jPatterns of the form _ are wildcards and are useful when some part of a pattern is not referenced on the right-hand-side. It is as if an identifier not used elsewhere were put in its place. For example,
case e of { [x,_,_]  ->  if x==0 then True else False }
is equivalent to:
case e of { [x,y,z]  ->  if x==0 then True else False }
@keyword @ !8Patterns of the form var@pat are called as-patterns, and allow one to use var as a name for the value being matched by pat. For example:
case e of { xs@(x:rest) -> if x==0 then rest else xs }
is equivalent to:
let { xs = e } in
  case xs of { (x:rest) -> if x==0 then rest else xs }
>keyword >4!In a bird style Literate Haskell file, the > character is used to introduce a code line.
comment line
> main = print "hello world"
<-keyword <-!In do-notation:
do x <- getChar
   putChar x
In list comprehension generators:
[ (x,y) | x <- [1..10], y <- ['a'..'z'] ]
In pattern guards (a GHC extension):
f x y | Just z <- g x = True
      | otherwise     = False
::keyword ::!]Read as "has type":
length :: [a] -> Int
"Length has type list-of-'a' to Int" ->keyword ->!%The function type constructor:
length :: [a] -> Int
In lambdas:
\x -> x + 1
To denote alternatives in case statements:
case Just 3 of
    Nothing -> False
    Just x  -> True
And on the kind level (GHC specific):
(->) ::?? ->? -> *
--keyword --!Line comment character. Everything after -- on a line is ignored.
main = print "hello world" -- comment here 
The multiline variant of comments is {- comment -}. !keyword !!Whenever a data constructor is applied, each argument to the constructor is evaluated if and only if the corresponding type in the algebraic datatype declaration has a strictness flag, denoted by an exclamation point. For example:
data STList a 
        = STCons a !(STList a)  -- the second argument to STCons will be 
                                -- evaluated before STCons is applied
        | STNil
to illustrate the difference between strict versus lazy constructor application, consider the following:
stList = STCons 1 undefined
lzList = (:)    1 undefined
stHead (STCons h _) = h -- this evaluates to undefined when applied to stList
lzHead (h: _)      = h -- this evaluates to 1 when applied to lzList 
! is also used in the "bang patterns" (GHC extension), to indicate strictness in patterns:
f!x!y = x + y
Finally, it is the array subscript operator:
let x = arr ! 10
1!1!g1!P1!91!%1!1!1!0!0!0!0!0!0!0!0!y0!n0!Z0!I0!20!0! 0!/!/!/!/!/!/!/!/!/!w/!l/!]/!H!G!G!F!E!AE!D!D!dC!B!2B!A!A!n@!?!??!>!=!n=!http://hackage.haskell.org/cgi-bin/hackage-scripts/package/stmrandom1.0.0.0Dhttp://hackage.haskell.org/packages/archive/random/1.0.0.0/doc/html/Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/randomprocess1.0.0.0Ehttp://hackage.haskell.org/packages/archive/process/1.0.0.0/doc/html/Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/processpretty1.0.0.0Dhttp://hackage.haskell.org/packages/archive/pretty/1.0.0.0/doc/html/Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/prettyparsec3.0.0Bhttp://hackage.haskell.org/packages/archive/parsec/3.0.0/doc/html/Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parsecparallel1.0.0.1Fhttp://hackage.haskell.org/packages/archive/parallel/1.0.0.1/doc/html/Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parallelmtl1.1.0.1Ahttp://hackage.haskell.org/packages/archive/mtl/1.1.0.1/doc/html/>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mtl haskell-src1.0.1.2Ihttp://hackage.haskell.org/packages/archive/haskell-src/1.0.1.2/doc/html/Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskell-srcfilepath1.1.0.0Fhttp://hackage.haskell.org/packages/archive/filepath/1.1.0.0/doc/html/Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/filepath directory1.0.0.0Ghttp://hackage.haskell.org/packages/archive/directory/1.0.0.0/doc/html/Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/directory containers0.1.0.1Hhttp://hackage.haskell.org/packages/archive/containers/0.1.0.1/doc/html/Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/containers bytestring0.9.1.0Hhttp://hackage.haskell.org/packages/archive/bytestring/0.9.1.0/doc/html/Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring 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/QuickCheckHUnit1.2.0.0Chttp://hackage.haskell.org/packages/archive/HUnit/1.2.0.0/doc/html/@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HUnitCabal1.4.0.1Chttp://hackage.haskell.org/packages/archive/Cabal/1.4.0.1/doc/html/@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Cabalarray0.1.0.0Chttp://hackage.haskell.org/packages/archive/array/0.1.0.0/doc/html/@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/arraybase3.0.1.07http://haskell.org/ghc/docs/latest/html/libraries/base/2http://haskell.org/ghc/docs/latest/html/libraries/ZMachine0.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ZMachinezlib0.4.0.4?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/zlibzipedit0.2.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/zipeditZFS0.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ZFSYogurt0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Yogurtyi-vty0.2.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/yi-vtyyi-gtk0.2.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/yi-gtkyi0.4.3=http://hackage.haskell.org/cgi-bin/hackage-scripts/package/yiyhccore0.9Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/yhccore YampaSynth0.0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/YampaSynthYampa0.9.2.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Yampa YamlReference0.9.2Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/YamlReferenceyahoo-web-search0.1Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/yahoo-web-searchxtc1.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xtcxslt0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xsltxsact1.6@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xsact xmonad-utils0.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad-utilsxmonad-contrib0.7Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonad-contribxmonad0.7Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmonadxmobar0.9Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmobarxml2x0.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xml2x xml-parsec1.0.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/xml-parsecxml1.3.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/xmlXInput0.0Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/XInput xcb-types0.2.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/xcb-typesX11-xft0.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-xft X11-extras0.4Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11-extrasX111.4.2>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/X11 WxGeneric0.4.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/WxGenericwxFruit0.1.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/wxFruitwxcore0.10.3Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/wxcorewx0.10.3=http://hackage.haskell.org/cgi-bin/hackage-scripts/package/wxWURFL0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/WURFLWordNet0.1.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/WordNet wl-pprint1.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/wl-pprintwitness0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/witnesswinerror0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/winerror Win32-notify0.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Win32-notifyWin322.1.0.0@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Win32whim0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/whimWebBits0.9.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/WebBitsWAVE0.1.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/WAVE wavconvert0.1.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/wavconvertvty3.0.2>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/vty vector-space0.3Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/vector-spacevector0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/vectorVec0.9.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Vec value-supply0.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/value-supplyvalidate0.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/validateuvector0.1.0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/uvectoruulib0.9.5@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uulibuuid0.1.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uuiduuagc0.9.6@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uuagc utf8-string0.3.1.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/utf8-string utf8-light0.3Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/utf8-lighturlcheck0.1.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/urlcheckurl1.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/urlunlambda0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/unlambda Unixutils1.17Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Unixutilsunix-pty-light0.1Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/unix-pty-light unix-compat0.1.2.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/unix-compatunix2.3.0.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/unixuniplate1.2.0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/uniplateunicode-normalization0.1Phttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/unicode-normalizationuhexdump0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/uhexdumpudcode 0.1.20080512Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/udcodeuconv0.0.3@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/uconvtypeof0.1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/typeofTypeIlluminator0.0Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/TypeIlluminator TypeCompose0.5Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/TypeCompose type-level0.2.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/type-leveltype-int0.4Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/type-inttypalyze0.1.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/typalyzetwitter0.1.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/twitterTV0.4=http://hackage.haskell.org/cgi-bin/hackage-scripts/package/TV truelevel0.1.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/trueleveltrhsx0.2.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/trhsxtracker0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/trackertraced2008.7.4Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/tracedtorrent 2007.10.27Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/torrenttopkata0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/topkata TimePiece0.0.3Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/TimePiece tic-tac-toe0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/tic-tac-toethrist0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/thristthih1.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/thihth-lift0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/th-liftterminfo0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/terminfotemplate0.1.1.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/templatetar0.1.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/tarTakusen0.8.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Takusentagsoup0.6Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/tagsoupsystem-inotify0.1Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/system-inotify SybWidget0.4.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SybWidgetsyb-with-class0.4Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/syb-with-classswf1.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/swf suffixtree0.2.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/suffixtreestringtable-atom0.0.4Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/stringtable-atom stringsearch0.2.1.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/stringsearch strictify0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/strictifystrict-concurrency0.2Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/strict-concurrencystrict0.3.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/strict streamproc1.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/streamproc stream-fusion0.1.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/stream-fusionStream0.2.6Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Stream StrategyLib4.0.0.0Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/StrategyLibstorablevector0.1.2.2Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/storablevectorstorable-complex0.1Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/storable-complex STMonadTrans0.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/STMonadTransstemmer0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/stemmerstate0.0.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/statesrcinst0.8.10Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/srcinstsqlite0.4.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/sqlite sphinx-cli0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/sphinx-clisphinx0.2.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/sphinxspecial-functors1.0Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/special-functors sparsecheck0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/sparsecheck SpaceInvaders0.4.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SpaceInvaderssonic-visualiser0.1.1Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/sonic-visualisersoegtk0.9.12.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/soegtk smallcheck0.4Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/smallchecksimseq0.0Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/simseq simpleargs0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/simpleargs Shu-thing1.1.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shu-thingshow0.3.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/showShellac-readline0.9Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shellac-readlineShellac-editline0.9Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shellac-editlineShellac-compatline0.9Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shellac-compatlineShellac0.9.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Shellac shell-pipe0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/shell-pipe setlocale0.0.3Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/setlocalesessions 2008.7.18Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/sessionsselenium0.2.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/seleniumSDL-ttf0.5.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-ttfSDL-mpeg0.0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-mpeg SDL-mixer0.5.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-mixer SDL-image0.5.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-imageSDL-gfx0.5.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDL-gfxSDL0.5.4>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/SDLscgi0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/scgi scenegraph0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/scenegraphscc0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/scc scaleimage0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/scaleimage sat-micro-hs0.1.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/sat-micro-hssat1.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/satsafecopy0.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/safecopysafe0.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/saferss2irc0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/rss2ircrss3000.1.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rssrsagl0.2.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rsagl rosezipper0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/rosezipper roguestar-gl0.2.2Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/roguestar-glroguestar-engine0.2.2Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/roguestar-enginermonad0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/rmonadRJson0.3.5@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/RJson ReviewBoard0.2.2Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ReviewBoardreify0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/reifyregexqq0.6Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regexqqregexpr0.2.9Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regexpr regex-tre0.91Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-tre regex-tdfa0.94Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-tdfa regex-posix0.93.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-posixregex-pcre-builtin 0.94.2.0.7.7Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-pcre-builtin regex-pcre0.94.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-pcre regex-parsec0.90Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-parsec regex-dfa0.91Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-dfa regex-compat0.91Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-compat regex-base0.93.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/regex-basereadline1.0.1.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/readlinereactive0.5Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/reactiverdtsc1.1.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rdtscrbr0.8.3>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/rbr Ranged-sets0.2.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Ranged-sets RandomDotOrg0.2.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/RandomDotOrgrandom-access-list0.2Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/random-access-listquickcheck-script0.1.1Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/quickcheck-script quantum-arrow0.0.4Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/quantum-arrow pxsl-tools1.0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pxsl-toolspureMD50.2.4Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pureMD5 pugs-HsSyck0.41Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pugs-HsSyck pugs-hsregex1.0Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pugs-hsregex pugs-DrIFT2.2.3.0Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pugs-DrIFT pugs-compat0.0.5Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pugs-compatPugs 6.2.13.11?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/PugsPSQueue1.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/PSQueueprotocol-buffers0.1.0Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/protocol-buffersproplang0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/proplangprof2dot0.4.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/prof2dotProbabilityMonads0.1.0Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ProbabilityMonads probability0.2.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/probability Printf-TH0.1.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Printf-TH printf-mauke0.3Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/printf-maukepqc0.2>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pqc powermate0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/powermate postmaster0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/postmaster PostgreSQL0.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/PostgreSQLposix-realtime0.0.0.1Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/posix-realtimeports0.4.3.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/portspopenhs1.0.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/popenhs polyparse1.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/polyparse pointfree1.0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pointfreepngload0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pngloadplugins1.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pluginspkcs11.0.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pkcs1Pipe2.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Pipe photoname2.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/photonamephooey2.0Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/phooeypesca4.0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pesca permutation0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/permutation penn-treebank0.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/penn-treebankpdf2line0.0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pdf2line pcre-light0.3.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcre-lightpcap0.4.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/pcapparsely0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parsely parsedate3000.0.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parsedate parseargs0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parseargs parse-dimacs1.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parse-dimacsPArrows0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/PArrowsparport0.0.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parportparameterized-data0.1.2Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/parameterized-datapandoc0.46Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/pandocPageIO0.0.3Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/PageIO packedstring0.1.0.0Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/packedstringopml0.4?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/opmlOpenGL2.2.1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/OpenGLOpenAL1.3.1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/OpenAL OpenAFP-Utils1.2.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/OpenAFP-UtilsOpenAFP1.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/OpenAFP open-witness0.1.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/open-witnessonly0.0.4.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/only omnicodec0.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/omnicodecold-time1.0.0.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/old-time old-locale1.0.0.0Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/old-localeoeis0.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/oeisObjectIO1.0.1.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ObjectIOobdd0.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/obddnymphaea0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/nymphaea numeric-quest0.1.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/numeric-questnumeric-prelude0.0.2Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/numeric-preludenumbers 2008.4.20Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/numbers non-negative0.0.3Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/non-negativeNGrams1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/NGramsnewports1.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/newports NewBinary0.1.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/NewBinary network-rpca0.0.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/network-rpcanetwork-multicast0.0.3Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/network-multicastnetwork-minihttp0.2Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/network-minihttp network-dns0.1.2Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/network-dnsnetwork-connection0.1.1Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/network-connectionnetwork-bytestring0.1.1.2Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/network-bytestringnetwork2.2.0.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/networknat0.2>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/nat nanocurses1.5.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/nanocursesnano-md50.1.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/nano-md5 nano-hmac0.2.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/nano-hmacmultiset0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/multisetmueval0.6.4Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/muevalmtlparse0.0.0.5Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mtlparsemtl-tf0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mtl-tfmpdmate0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mpdmate MonadRandom0.1.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/MonadRandom MonadPrompt1.0.0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/MonadPromptmonadLib3.4.4Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/monadLibMonadius0.92Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Monadiusmonadenv0.0-2005-02-14Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/monadenv monad-param0.0.2Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/monad-parammohws0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mohwsmmap0.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mmapmkcabal0.4.1.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mkcabalmkbndl0.2.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mkbndl MissingPy0.10.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/MissingPyMissingH1.0.2.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/MissingHminiplex0.3.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/miniplexmines0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mines mime-string0.3Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mime-stringmime0.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mimemidi0.0.6?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/midi microbench0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/microbenchmetaplug0.1.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/metaplug MetaObject0.0.4Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/MetaObjectmersenne-random-pure640.2.0.2Qhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mersenne-random-pure64mersenne-random0.1.3Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/mersenne-randomMemoTrie0.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/MemoTriemdo0.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mdoMaybeT0.1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/MaybeTmaybench0.2.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/maybench matrix-market1.2Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/matrix-market markov-chain0.0.2Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/markov-chainmagic1.0.7@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/magicmage1.1.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/mageLucu0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/LucuLRU0.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/LRUlogict0.2.3Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/logictlogfloat0.8.6Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/logfloatloch0.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/lochllvm0.0.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/llvmListLike1.0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ListLike list-extras0.2.2Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/list-extras lispparser0.2.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lispparserlinkchk0.0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/linkchkline2pdf0.0.7Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/line2pdflighttpd-conf-qq0.5Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lighttpd-conf-qq lighttpd-conf0.4Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lighttpd-conflibxml0.1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/libxmllibmpd0.3.0Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/libmpdlibGenI0.16.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/libGenIlhs2tex1.13Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lhs2texleksah0.1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/leksahLDAP0.6.4?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/LDAPlcs0.2>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/lcslazysmallcheck0.3Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lazysmallcheck lazyarray0.1.3Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lazyarraylax0.0.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/lax language-c0.3.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/language-c LambdaShell0.9.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/LambdaShell LambdaHack 0.1.20080413Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/LambdaHack lambdaFeed0.3.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lambdaFeedlambdabot-utils4.1Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lambdabot-utils lambdabot4.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/lambdabotkibro0.0@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/kibrokbq-gu0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/kbq-gujson0.3.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/jsonjack0.5?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/jackivor0.1.5?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ivor ircbouncer0.0Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ircbouncerirc0.4.3>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ircipprint0.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ipprintipc0.0.3>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ipcIOSpec0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/IOSpecIOR0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/IOR interlude0.1.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/interludeinterleavableIO0.0.1Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/interleavableIOinterleavableGen0.0.1Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/interleavableGeninfix0.1.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/infixinfinity0.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/infinity IndentParser0.2.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/IndentParserINblobs0.1.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/INblobsImlib0.1.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ImlibIFS0.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/IFSiff0.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/iff iException0.0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/iException ieee-utils0.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ieee-utilsieee0.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ieeeiconv0.4.0.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/iconvi18n0.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/i18nhybrid2.0Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hybridhxweb0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hxweb hxt-filter8.1.0Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hxt-filterhxt8.1.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hxtHXQ0.9.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HXQ HTTP-Simple0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTP-SimpleHTTP3001.0.4?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTTPhtml1.0.1.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/htmlHTF0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HTFhtar0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/htarhsyslog1.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsyslog hsXenCtrl0.0.7Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsXenCtrl hsx-xhtml0.4.4Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsx-xhtmlhsx0.4.4>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsxHStringTemplate0.3.2Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HStringTemplatehstidy0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hstidyhstats0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hstatsHsSyck0.44Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsSyckHsSVN0.3.3@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsSVN hsSqlite30.0.4Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsSqlite3 hsql-sqlite31.7Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsql-sqlite3hsql-postgresql1.7Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsql-postgresql hsql-odbc1.7Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsql-odbc hsql-mysql1.7Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsql-mysqlhsql1.7?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsqlhspread0.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hspreadhspr-sh0.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hspr-shHsPerl50.0.6Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsPerl5HsParrot0.0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsParrot hsparklines0.1.0Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsparklineshsp-cgi0.4.4Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsp-cgihsp0.4.4>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsp HSoundFile0.2.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HSoundFile HsOpenSSL0.4.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsOpenSSLhsntp0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsntphsns0.5.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsnshsndfile0.2.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsndfilehsmagick0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsmagickhslua0.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hslua hslogger4j0.1.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hslogger4jhslogger1.0.5Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hslogger hslackbuilder0.0.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hslackbuilderHsJudy0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsJudyHsHyperEstraier0.2.1Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsHyperEstraier HsHaruPDF0.0.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HsHaruPDFHSH1.2.6>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HSHhsgnutls0.2.3.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsgnutlshsemail1.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsemailhsdns1.3@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsdnshsdip0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsdiphscurses1.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hscurseshscolour1.10Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hscolourhsclock1.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsclockhsc30.4?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsc3hsc2hs 0.67.20061107Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hsc2hshS30.3>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hS3hs-pgms0.1.0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hs-pgmshs-fltk0.2.5Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hs-fltkHRay1.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HRayhpodder1.1.5Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hpodderHPDF1.4?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HPDFhpc0.5.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hpchpaste0.3Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hpastehosc0.4?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hoschopenssl1.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hopensslhoogle4.0.0.3Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hoogle homeomorphic0.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/homeomorphichogg0.3.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hogghnop0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hnopHmpf0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Hmpfhmp31.5.2.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmp3hmm0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmmhmatrix0.4.0.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmatrixhmarkup3000.0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hmarkupHList0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HListHJScript0.4.4Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HJScripthjs0.2.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hjs HJavaScript0.4.4Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HJavaScriptHipmunkPlayground0.2Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HipmunkPlaygroundHipmunk0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Hipmunk hinvaders0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hinvadershint0.2.4.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hint hinstaller 2008.2.16Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hinstallerhinotify0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hinotifyhimerge0.20Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/himerge highWaterMark0.1.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/highWaterMarkhighlighting-kate0.2.3Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/highlighting-katehiccup0.40Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hiccupHGL3.2.0.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HGL hgeometric0.0.2.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hgeometrichgdbmi0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hgdbmihgal1.0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hgalhg-buildpackage1.0.4Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hg-buildpackageHFuse0.2.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HFusehfov0.5?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hfovhfann0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hfannhexpat0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hexpathetris0.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hetrishelisp0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/helispHedi0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Hediheap0.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/heap HDBC-sqlite31.1.4.0Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-sqlite3HDBC-postgresql1.1.4.0Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-postgresql HDBC-odbc1.1.4.4Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBC-odbcHDBC1.1.5?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HDBChCsound0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hCsoundHCodecs0.0.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HCodecsHCL1.3>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HCLhburg1.1.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hburghbeat0.1.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hbeathback0.0.3@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hbackhaxr-th3000.0.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haxr-thhaxr3000.0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/haxrHaXml1.19.4@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HaXmlhaskelldb-hsql-sqlite30.10Qhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hsql-sqlite3haskelldb-hsql-sqlite0.10Phttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hsql-sqlitehaskelldb-hsql-postgresql0.10Thttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hsql-postgresqlhaskelldb-hsql-odbc0.10Nhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hsql-odbchaskelldb-hsql-mysql0.10Ohttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hsql-mysqlhaskelldb-hsql0.10Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hsqlhaskelldb-hdbc-sqlite30.10Qhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hdbc-sqlite3haskelldb-hdbc-postgresql0.10Thttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hdbc-postgresqlhaskelldb-hdbc-odbc0.10Nhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hdbc-odbchaskelldb-hdbc0.10Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-hdbchaskelldb-flat0.10Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-flathaskelldb-dynamic0.10Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb-dynamic haskelldb0.10Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskelldb haskell981.0.1.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskell98haskell-src-exts0.3.5Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskell-src-extshaskell-in-space0.1.1Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskell-in-space haskeline0.2.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haskeline hask-home 2007.12.6Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hask-homehasim0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/hasimHashell0.15Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Hashellharpy0.4@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/harpyharp0.2.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/harpharchive0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/harchivehappy1.17@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/happy HAppS-Util0.9.2.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HAppS-Utilhapps-tutorial0.2Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/happs-tutorial HAppS-State0.9.2.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HAppS-State HAppS-Server0.9.2.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HAppS-Server HAppS-IxSet0.9.2.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HAppS-IxSethapps-hsp-template0.2Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/happs-hsp-template happs-hsp0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/happs-hsp HAppS-Data0.9.2.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/HAppS-Data happraise0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/happraisehalfs0.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/halfsHaLeX1.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/HaLeXhaddock2.2.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/haddock hackage2hwn0.4.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hackage2hwnhackage-sparks0.1Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/hackage-sparksGuiTV0.4@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GuiTV GuiHaskell0.1.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/GuiHaskell GrowlNotify0.4Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/GrowlNotify GroteTrap0.5Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/GroteTrap greencard-lib3.0.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/greencard-lib greencard3.0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/greencardgravatar0.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/gravatargraphviz 2008.7.11Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/graphvizGraphSCC1.0Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/GraphSCCgraphics-drawingcombinators0.2Vhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/graphics-drawingcombinators gopherbot0.1.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/gopherbot GoogleChart0.2Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/GoogleChartgoa3.0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/goaGLUT2.1.1.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GLUTglome-hs0.51Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/glome-hsGLFW0.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GLFW ghc-paths0.1.0.5Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ghc-pathsghc-core0.4Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ghc-coreGeoIp0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GeoIp geniconvert0.15Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/geniconvertGenI0.16.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/GenIgenericserialize0.1Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/genericserialize generic-xml0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/generic-xmlgd3000.4.0=http://hackage.haskell.org/cgi-bin/hackage-scripts/package/gdfunsat0.5Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/funsatfunctorm1.0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/functormfuncmp1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/funcmpftshell0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ftshellftphs1.0.4@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ftphsFTGL1.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/FTGLfst0.9>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fst free-theorems0.2Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/free-theoremsfrag1.1.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fragformlets0.4.5Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/formletsfoo1.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fooflow2dot0.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/flow2dotflock0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/flockFlippi0.0.5Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Flippifixpoint0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/fixpointfitsio0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/fitsiofirstify0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/firstify FiniteMap0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/FiniteMap fingertree0.0Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/fingertreeFindBin0.0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/FindBinFinance-Treasury0.1.2Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Finance-TreasuryFinance-Quote-Yahoo0.6.0Nhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Finance-Quote-Yahoo FileManip0.3.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/FileManipfgl5.4.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fglfft0.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fftFermatsLastMargin0.1Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/FermatsLastMarginfenfire0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/fenfirefeed-cli2008.5.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/feed-clifeed0.3.2.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/feedfec0.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/fec fckeditor0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/fckeditorfastcgi3001.0.2Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/fastcgiexif3000.0.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/exif event-list0.0.7Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/event-list Etherbunny0.3Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Etherbunnyestreps0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/estrepsencoding0.4.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/encodingEncode0.7Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/EncodeEmping0.5.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Empingeditline0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/editline edit-distance0.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/edit-distance EdisonCore1.2.1.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/EdisonCore EdisonAPI1.2.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/EdisonAPIdsp0.2.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dspDrIFT2.2.3@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/DrIFT download-curl0.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/download-curldownload0.3Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/downloaddotgen0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/dotgendnsrbl0.0.3Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/dnsrbldlist0.4.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dlistdjinn 2008.8.10@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/djinnDisTract0.2.5Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/DisTract dimensional0.7.2Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/dimensionalDiff0.1.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Diffdiagrams0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/diagramsdfsbuild1.0.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/dfsbuildderive0.1.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/derive derangement0.1.0Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/derangementdephd0.1.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/dephd denominate0.4.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/denominate DeepArrow0.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/DeepArrowDecimal0.1.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Decimaldebian1.2.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/debianDBus0.3?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/DBus datapacker1.0.0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/datapackerdataenc0.11Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/dataenc data-default0.2Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/data-defaultdata-accessor-template0.1.3Qhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/data-accessor-template data-accessor0.1.2Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/data-accessor darcs-monitor0.3.6Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/darcs-monitor darcs-graph0.3.2Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/darcs-graphdarcs-cabalized2.0.2.2Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/darcs-cabalizeddarcs-buildpackage0.5.12Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/darcs-buildpackagecurl1.3.2.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/curl ctemplate0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ctemplatecsv0.1.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/csvCrypto4.1.0Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Cryptocrack0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/crackcpuperf0.1.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cpuperfcpuid0.2@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cpuidcpphs1.5@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cpphs CPBrainfuck1.0Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/CPBrainfuck COrdering2.3Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/COrderingcontrol-timeout0.1.2Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/control-timeoutcontrol-monad-omega0.2Nhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/control-monad-omegacontrol-monad-free0.3Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/control-monad-free control-event0.3.0Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/control-event ContArrow0.0.4Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ContArrowconjure0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/conjure ConfigFile1.0.4Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ConfigFile condorcet0.0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/condorcet compression0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/compressioncolock0.2.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/colock collections0.3Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/collectionscodec-libevent0.1.2Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/codec-libeventCodec-Image-DevIL0.1Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Codec-Image-DevILCodec-Compression-LZF0.2Phttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Codec-Compression-LZFcmath0.3@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cmath clustertools0.1.1Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/clustertools clevercss0.1.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/clevercssclassify 2007.6.26Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/classifychunks 2007.4.18Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/chunkschp1.1.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/chpchild0.0-2005-02-14@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/childchecked0.1.0.0Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/checkedChasingBottoms1.2.4Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ChasingBottomsChart0.8@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/Chart change-monger0.0Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/change-mongerchalmers-lava20001.0.1Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/chalmers-lava2000cgi-undecidable3000.0.0Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cgi-undecidablecgi 3001.1.6.0>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/cgicedict0.2.5Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cedict CC-delcont0.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/CC-delcontcategory-extras0.53.5Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/category-extrascatch0.1.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/catchcarray0.1.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/carraycalc0.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/calc cabalrpmdeps0.0.3Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabalrpmdeps cabalmdvrpm0.0.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabalmdvrpm cabal2arch0.3.8.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal2arch cabal-upload0.4Ghttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-upload cabal-test0.1Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-test cabal-setup1.2.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-setup cabal-rpm0.5.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-rpm cabal-install0.5.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/cabal-installc2hs0.15.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/c2hsbzlib0.4.0.3@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bzlibbytestringreadp0.2Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestringreadpbytestringparser0.3Khttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestringparserbytestring-show0.2Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-showbytestring-mmap0.2.0Jhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-mmapbytestring-lexing0.1.2Lhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-lexingbytestring-csv0.1.2Ihttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bytestring-csv brainfuck0.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/brainfuckbotpp0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/botppbot0.1>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bot bloomfilter1.2.3Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bloomfilterblockio0.0-2006-02-03Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/blockioblas0.5?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/blasbktrees0.2.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bktrees BitSyntax0.3.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/BitSyntaxbitset0.6Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bitsetbio0.3.3.4>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bio binary-strict0.3.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/binary-strict binary-search0.0Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/binary-searchbinary0.4.2Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/binarybimap0.2.4@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/bimap BerkeleyDB0.3Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/BerkeleyDBbencode0.3Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/bencode benchpress0.2.2Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/benchpressbaskell0.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/baskell base64-string0.1Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/base64-string Barracuda1.0.2Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Barracuda backdropper1.1Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/backdropperAvlTree4.1Bhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/AvlTreeautoproc0.1Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/autoproc AutoForms0.4.0Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/AutoForms attoparsec0.4Ehttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/attoparsecastar0.1@http://hackage.haskell.org/cgi-bin/hackage-scripts/package/astarASN10.0.1.1?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ASN1arrows0.4Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/arrowsarrowp0.5.0.1Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/arrowpArrayRef0.1.2Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/ArrayRefapplicative-extras0.1.3Mhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/applicative-extras AppleScript0.1.3Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/AppleScriptanydbm1.0.5Ahttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/anydbmALUT2.1.0.0?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/ALUT alsa-midi0.3.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/alsa-midialex2.2?http://hackage.haskell.org/cgi-bin/hackage-scripts/package/alexAGI1.2.2>http://hackage.haskell.org/cgi-bin/hackage-scripts/package/AGI AERN-RnToRm0.4Fhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/AERN-RnToRm AERN-Real0.9.6.1Dhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/AERN-Real adhoc-network1.0.3Hhttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/adhoc-networkAdaptive0.22Chttp://hackage.haskell.org/cgi-bin/hackage-scripts/package/Adaptivekeyword'http://haskell.org/haskellwiki/Keywords