!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  portable experimentalhaddock@projects.haskell.org:because in class methods the context is added to the type  (e.g. adding forall a. Num a => to (+) :: a -> a -> a)  which is rather sensible, F but we want to restore things to the source-syntax situation where C the defining class gets to quantify all its functions for free! >beginning of a function definition, in which, to make it look 6 less ugly, those rank-1 foralls are made implicit. 9normal situation. This is the safe one to use if you don't  quite understand what' s going on.       portable experimentalhaddock@projects.haskell.orgTry and interpret a GHC  as a cabal PackageIdentifer . Returns Nothing if * we could not parse it as such an object. A parent and its children FA mapping from the parent (main-binder) to its children and from each + child to its grand-children, recursively. A mapping from child to parent .The parents of a subordinate in a declaration 3FWe only want LF line endings in our internal doc string format, so we  filter out all CRs.  portable experimentalhaddock@projects.haskellorgHaddock's own exception type  !"#$%&'()*+,-./0123456A smaller version of @?! that can be created from Haddock's  interface files ( InterfaceFile). 78*The module represented by this interface. 9&Textual information about the module. :EDocumentation of declarations originating from the module (including  subordinates). ;#All names exported by this module. <All "visible" names exported by the module. H A visible name is a name that will show up in the documentation of the  module. =>Haddock options for this module (prune, ignore-exports, etc). >?FThe data structure used to render a Haddock page for a module - it is H the interface of the module. The core of Haddock lies in creating this J structure (see Haddock.Interface). The structure also holds intermediate " data needed during its creation. @A*The module represented by this interface. B"Original file name of the module. C&Textual information about the module. DDocumentation header. E,Documentation header with link information. F>Haddock options for this module (prune, ignore-exports, etc). GHDeclarations originating from the module. Excludes declarations without D names (instances and stand-alone documentation comments). Includes H names of subordinate declarations mapped to their parent declarations. HEDocumentation of declarations originating from the module (including  subordinates). IJKL"All names exported by the module. MAll "visible" names exported by the module. H A visible name is a name that will show up in the documentation of the  module. N"Instances exported by the module. O2Documentation of instances defined in the module. ;This structure holds the module information we get from GHC's  type checking phase      P3An environment used to create hyper-linked syntax. QKThe head of an instance. Consists of a context, a class name and a list of  instance types. RS$A cross-reference to another module TSome documentation UA section heading VSection level (1, 2, 3, ... ) WSection id (for hyperlinks) XSection heading text Y(An exported entity for which we have no . documentation (perhaps because it resides in  another package) Z[Subordinate names \An exported declaration ]A declaration ^>Maybe a doc comment, and possibly docs for arguments (if this % decl is a function or type-synonym) _/Subordinate names, possibly with documentation `DInstances relevant to this declaration, possibly with documentation a8Source-level options for controlling the documentation. b*Not the best place to get docs for things  exported by this module. cPretend everything is exported de*This module should not appear in the docs fAn extension of 4 that may contain the preferred place to link to in  the documentation. ghiGA declaration that may have documentation, including its subordinates, # which may also have documentation jkCArguments and result are indexed by Int, zero-based from the left,  because that'0s the easiest to use when recursing over types. l.An instance head that may have documentation. mThe  of this name.  Convert an @? to an 76  ! !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO     PQRSTUVWXYZ[\]^_`abcdefghijklm !"#$% !"#$%&543210/.-,+*)(''()*+,-./0123456789:;<=>789:;<=>?@ABCDEFGHIJKLMNO@ABCDEFGHIJKLMNO           PQR\YUTS]^_`Z[VWXSTUVWXYZ[\]^_`aedcbbcdefhgghijklmno"nonono0#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQR#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~KLMNOPQR0#$$%&&'(()*++,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRportable experimentalhaddock@projects.haskell.org14Print a message to stdout, if it is not too verbose program verbosity message verbosity extract a module's short description. extract a module's short description. BThe name of the module index file to be displayed inside a frame. J Modules are display in full, but without indentation. Clicking opens in  the main window. The identity markup $"portable experimentalhaddock@projects.haskell.org'pqrstuvwxyz{|}~%pqrstuvwxyz{|}~%p~}|{zyxwvutsrq%p ~}|{zyxwvutsrqqrstuvwxyz{|}~portable experimentalhaddock@projects.haskell.orgGSimplified type for sorting types, ignoring qualification (not visible B in Haddock output) and unifying special tycons with normal ones. B For the benefit of the user (looks nice and predictable) and the 2 tests (which prefer output to be deterministic). Like GHC's getInfo but doesn'"t cut things out depending on the ! interative context, which we don't set sufficiently anyway. portable experimentalhaddock@projects.haskell.org#portable experimentalhaddock@projects.haskell.org      portable experimentalhaddock@projects.haskell.org#This function is how we read keys. 8all fields in the header are optional and have the form  spaces1 [field name][spaces] :  [text]n ([spaces2][space][text]n | [spaces]n)*  where each [spaces2] should have [spaces1] as a prefix. Thus for the key  Description,  Description : this is a  rather long   description   The module comment starts here the value will be this is a .. description and the rest will begin  at The module comment.  portable experimentalhaddock@projects.haskell.org portable experimentalhaddock@projects.haskell.org';Process the data in the GhcModule to produce an interface. L To do this, we need access to already processed modules in the topological  sort. That's what's in the module map. JMake a sub map from a declaration map. Make sure we only include exported  names. If you know the HsDecl can't contain any docs 1 (e.g., it was loaded from a .hi file and you don't have a .haddock file . to help you find out about the subs or docs) ( then you can use this to get its subs. ;The top-level declarations of a module that we care about, G ordered by source location, with documentation attached if it exists.  CTake all declarations except pragmas, infix decls, rules and value  bindings from an !". #FTake a field of declarations from a data structure and create HsDecls  using the given constructor $Sort by source location %&#Filter out declarations that we don't handle in Haddock 'DGo through all class declarations and filter their sub-declarations ()*+,;Collect the docs and attach them to the right declaration. -./EBuild the list of items that will become the documentation, from the E export list. At this point, the list of ExportItems is in terms of  original names. DWe create the export items even if the module is hidden, since they C might be useful when creating the export items for other modules. 017Sometimes the declaration we want to export is not the main declaration: H it might be an individual record selector or a class method. In these G cases we have to extract the required declaration (and somehow cobble & together a type signature for it...) 2345675Find a stand-alone documentation comment by its name portable experimentalhaddock@projects.haskell.org89:;<=>?@ABCDRead a Haddock (.haddock$) interface file. Return either an   or an error message. GThis function can be called in two ways. Within a GHC session it will & update the use and update the session'%s name cache. Outside a GHC session K a new empty name cache is used. The function is therefore generic in the A monad being used. The exact monad is whichever monad the first > argument, the getter and setter of the name cache, requires. EFGHIJ D D portable experimentalhaddock@projects.haskell.orgKLCreate @?0 structures by typechecking the list of modules > using the GHC API and processing the resulting syntax trees. Verbosity of logging to stdout 9A list of file or module names sorted by module topology Command-line flags (Interface files of package dependencies 6Resulting list of interfaces and renaming environment MNO1Dig out what we want from the typechecker output P<Build a mapping which for each original name, points to the best ? place to link to in the documentation. For the definition of  best , we use Nthe module nearest the bottom of the dependency graph which exports this name&, not including hidden modules. When 3 there are multiple choices, we pick a random one. IThe interfaces are passed in in topologically sorted order, but we start - by reversing the list so we can do a foldl. portable experimentalhaddock@projects.haskellorg !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmpqrstuvwxyz{|}~?@ABCDEFGHIJKLMNO6789:;<=>R\YUTS]^_`Z[VWXijkPfhgmlQ&543210/.-,+*)(' !"#$%p~}|{zyxwvutsrqaedcbQ !""#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHHIJKLMNOPPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~               !"##$%&'()*+,-,./012234566789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                ! " # $ % & ' ()*)* + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?@AABCDDEFGHIJKLMNOP Q R S T U VW haddock-2.7.0Haddock.ConvertDocumentation.Haddock Haddock.DocHaddock.Options!Haddock.Interface.AttachInstancesHaddock.Interface.Rename"Haddock.Interface.ExtractFnArgDocsHaddock.Interface.Rn#Haddock.Interface.ParseModuleHeaderHaddock.Interface.LexParseRnHaddock.Interface.CreateHaddock.InterfaceHaddock.GhcUtils Haddock.Lex Haddock.Types Haddock.Parse Haddock.UtilsHaddock.InterfaceFileSynifyTypeStateDeleteTopLevelQuantificationImplicitizeForAll WithinTypetyThingToLHsDecl synifyClassAT synifyTyCon synifyDataCon synifyName synifyIdSig synifyCtx synifyPred synifyTyVars synifyTypesynifyInstHeadHaddockModInfohmi_descriptionhmi_portability hmi_stabilityhmi_maintainer DocMarkupMarkup markupEmpty markupStringmarkupParagraph markupAppendmarkupIdentifier markupModulemarkupEmphasismarkupMonospacedmarkupUnorderedListmarkupOrderedList markupDefListmarkupCodeBlock markupURL markupAName markupPicDocDocANameDocPicDocURL DocCodeBlock DocDefListDocOrderedListDocUnorderedList DocMonospaced DocEmphasis DocModule DocIdentifier DocParagraph DocString DocAppendDocEmptyInstalledInterfaceinstModinstInfo instDocMap instExportsinstVisibleExports instOptions instSubMap InterfaceifaceModifaceOrigFilename ifaceInfoifaceDoc ifaceRnDoc ifaceOptions ifaceDeclMap ifaceRnDocMap ifaceSubMapifaceExportItemsifaceRnExportItems ifaceExportsifaceVisibleExportsifaceInstancesifaceInstanceDocMapLinkEnvInstHead ExportItem ExportModule ExportDoc ExportGroupexpItemSectionLevelexpItemSectionIdexpItemSectionText ExportNoDecl expItemName expItemSubs ExportDecl expItemDecl expItemMbDocexpItemSubDocsexpItemInstances DocOption OptNotHomeOptIgnoreExportsOptPruneOptHideDocName Undocumented DocumentedDeclInfo DocForDecl FnArgsDoc DocInstance docNameOcc docAppend docParagraphFlagFlag_UseUnicodeFlag_NoWarningsFlag_PrintGhcLibDirFlag_GhcVersionFlag_GhcLibDir Flag_OptGhcFlag_HideModuleFlag_IgnoreAllExports Flag_GenIndex Flag_UseIndexFlag_GenContentsFlag_UseContents Flag_VersionFlag_Verbosity Flag_HelpFlag_WikiEntityURLFlag_WikiModuleURLFlag_WikiBaseURLFlag_SourceEntityURLFlag_SourceModuleURLFlag_SourceBaseURL Flag_PrologueFlag_OutputDirFlag_Lib Flag_HtmlHelp Flag_Hoogle Flag_Html Flag_HeadingFlag_DumpInterfaceFlag_ReadInterface Flag_DebugFlag_CSSgetUsageparseHaddockOptsghcFlags ifacePairsattachInstancesrenameInterfacegetDeclFnArgDocsgetSigFnArgDocsgetTypeFnArgDocsrnHaddockModInfornDocparseModuleHeaderHaddockCommentTypeDocSectionCommentNormalHaddockCommentlexParseRnHaddockCommentListlexParseRnHaddockCommentlexParseRnMbHaddockCommentlexParseRnHaddockModHeadercreateInterfaceNameCacheAccessor InterfaceFile ifLinkEnvifInstalledIfacesnameCacheFromGhcfreshNameCachereadInterfaceFilecreateInterfacesParentchildren moduleStringmodulePackageStringmodulePackageInfounpackPackageId ghc-6.12.1Module PackageIdmkModuleNoPackagelookupLoadedHomeModuleGRE isNameSymisVarSymgetMainDeclBinderisTyClDisClassDisDocDisInstDdeclATspretty trace_pprunLreLfamilyfamilies parentMapparents AlexAccPredAlexAccAlexAccSkipPred AlexAccSkip AlexLastAcc AlexLastSkipAlexNone AlexReturn AlexTokenAlexSkip AlexErrorAlexEOFAlexAddrAlexA# AlexInputAction StartCodeToken TokBirdTrackTokAName TokEmphasisTokPicTokURL TokStringTokIdent TokSpecial TokDefEnd TokDefStart TokBullet TokNumberTokPara alex_base alex_table alex_check alex_deflttokeniseandBegintokenstrtoken strtokenNLbeginident strToHsQNames birdtrackdeflineparastring ErrMsgGhc WriterGhc runWriterGhcHaddockExceptionErrMsgMWriter runWriterErrMsgLDoc GhcModule ghcModule ghcFilename ghcMbDocOpts ghcMbDocHdrghcGroup ghcMbExportsghcExportedNamesghcDefinedNamesghcNamesInScope ghcInstances GhcDocHdrDocMap InstIfaceMap ModuleMapNameDecl noDocForDeclOccNametoInstalledIface unrenameDocunrenameDocForDeclemptyHaddockModInfotellthrowEliftGhcToErrMsgGhc liftErrMsgHsDoc HsDocString LHsDocString docCodeBlock HappyAddrHappyA#HappyStk Happy_IntList HappyConsHappyAny HappyAbsSynhappyIn5 happyOut5happyIn6 happyOut6happyIn7 happyOut7happyIn8 happyOut8happyIn9 happyOut9 happyIn10 happyOut10 happyIn11 happyOut11 happyIn12 happyOut12 happyIn13 happyOut13 happyIn14 happyOut14 happyIn15 happyOut15 happyIn16 happyOut16 happyInTok happyOutTokhappyActOffsetshappyGotoOffsetshappyDefActions happyCheck happyTable happyThen happyReturn happyReturn1 happyError' happyError happyTcHack happyDoSeq happyDontSeqhappyReduceArr happy_n_termshappy_n_nonterms happyReduce_2happyReduction_2 happyReduce_3happyReduction_3 happyReduce_4happyReduction_4 happyReduce_5happyReduction_5 happyReduce_6happyReduction_6 happyReduce_7happyReduction_7 happyReduce_8happyReduction_8 happyReduce_9happyReduction_9happyReduce_10happyReduction_10happyReduce_11happyReduction_11happyReduce_12happyReduction_12happyReduce_13happyReduction_13happyReduce_14happyReduction_14happyReduce_15happyReduction_15happyReduce_16happyReduction_16happyReduce_17happyReduction_17happyReduce_18happyReduction_18happyReduce_19happyReduction_19happyReduce_20happyReduction_20happyReduce_21happyReduction_21happyReduce_22happyReduction_22happyReduce_23happyReduction_23happyReduce_24happyReduction_24happyReduce_25happyReduction_25happyReduce_26happyReduction_26happyReduce_27happyReduction_27happyReduce_28happyReduction_28happyReduce_29happyReduction_29happyReduce_30happyReduction_30happyReduce_31happyReduction_31happyReduce_32happyReduction_32 happyNewToken happyError_ happyThen1 parseParas parseStringhappySeq happyParse happyAccept happyDoActionindexShortOffAddr happyShifthappySpecReduce_0happySpecReduce_1happySpecReduce_2happySpecReduce_3 happyReducehappyMonadReducehappyMonad2Reduce happyDrop happyDropStk happyGoto happyFail notHappyAtAll FormatVersionparseVerbosityout toDescriptiontoInstalledDescription restrictTo restrictCons restrictDecls restrictATsmoduleHtmlFile nameHtmlRefcontentsHtmlFile indexHtmlFileframeIndexHtmlFilemoduleIndexFrameName mainFrameNamesynopsisFrameNamesubIndexHtmlFile anchorNameStrpathJoincssFileiconFilejsFileplusFile minusFile framesFilegetProgramNamebyediedieMsgnoDieMsgmapSnd mapMaybeM escapeStr escapeURICharescapeURIString isUnreserved isAlphaChar isDigitCharisAlphaNumCharhtml_xrefs_ref html_xrefsreplacemarkup markupPairidMarkupnullFormatVersionmkFormatVersion MonadUtilsliftIOMonadIOparseIfaceOptionoptions SimpleType lookupInstDoc getAllInfoinstHead sortImage funTyConNameRnMGenRnMunRnreturnRnthenRn getLookupRnoutRnlookupRnrunRnFMrenamerenameLrenameExportItemsrenameDocForDeclrenameMaybeDocrenameLDocHsSyn renameDocrenameFnArgsDoc renameLPred renamePred renameLType renameTyperenameLTyVarBndrrenameLContextrenameInstHead renameLDecl renameDecl renameLTyClD renameTyClD renameSig renameForD renameInstDrenameExportItem renameSub getLTypeDocs getTypeDocsIdunId ids2stringparseKeyMaybeDocStringsFastMaybeDocStrings mkDocOpts parseOptionmkInstanceDocMapmkSubMap mkDeclMap declInfossubordinatesWithNoDocs subordinates classDataSubs classDeclsdeclsFromClassdeclNametopDeclsfilterOutInstancesdeclsFromGroupHsDeclsHsGroupmkDecls sortByLocwarnAboutFilteredDecls filterDecls filterClassesdocStringEmptydocStringSingletondocStringAppenddocStringToList collectDocscollect finishedDoc mkExportItemsfullContentsOfThisModule extractDecl toTypeNoLocextractClassDecl extractRecSelpruneExportItemsmkVisibleNames findNamedDoc OnDiskName BinDictionary bin_dict_next bin_dict_mapBinSymbolTablebin_symtab_nextbin_symtab_mapbinaryInterfaceMagicbinaryInterfaceVersioninitBinMemSizewriteInterfaceFileputName putFastStringputSymbolTablegetSymbolTablefromOnDiskName serialiseNameFullyCheckedMod CheckedModcreateInterfaces' processModule mkGhcModulebuildHomeLinks