x      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~)(c) Simon Marlow 2003BSD-likehaddock@projects.haskell.org experimentalportable Safe-Inferreds(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mark Lentczner 2010BSD-likehaddock@projects.haskell.org experimentalportableNone Safe-Inferred Helper that encodes and packs a  into a "Helper that unpacks and decodes a  into a Character to use when  or  fail for a byte.BEncode a Haskell String to a list of Word8 values, in UTF8 format.KDecode a UTF8 string packed into a list of Word8 values, directly to String(c) David Waern 2006-2009BSD-likehaddock@projects.haskell.org experimentalportableNone 24Try and interpret a GHC  as a cabal PackageIdentifer . Returns Nothing- if we could not parse it as such an object.A parent and its childrenpA 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 A variant of D where the return value from the first computation is not required.,&+ Safe-Inferred  (c) Simon Marlow 2003BSD-likehaddock@projects.haskell.org experimentalportable Safe-Inferred         Bryan O'Sullivan 2011BSD3bos@serpentine.com experimentalunknown Safe-Inferred+ iA numeric type that can represent integers accurately, and floating point numbers to the precision of a  .      Bryan O'Sullivan 2008BSD3bos@serpentine.com experimentalunknownNone;mThe lower bound on the size of a lookup table. We choose this to balance table density against performance. Create a set.Check the set for membership.zCheck the set for membership. Only works with 8-bit characters: characters above code point 255 will give wrong answers. !"#$%&'()"#( ! ""#$%&'() Bryan O'Sullivan 2007-2011BSD3bos@serpentine.com experimentalunknownNoneBHM*!Have we read all available input?+;The core parser type. This is parameterised over the type t of string being processed.2This type is an instance of the following classes:,, where -; throws an exception (i.e. fails) with an error message.. and /%, which follow the usual definitions.0, where 1& fails (with no error message) and 2 executes the right-hand parser if the left-hand one fails. When the parser on the right executes, the input is reset to the same state as the parser on the left started with. (In other words, Attoparsec is a backtracking parser that supports arbitrary lookahead.)3, which follows 0.4<The result of a parse. This is parameterised over the type t of string that was processed.This type is an instance of ., where 5 transforms the value in a 6 result.6The parse succeeded. The t[ parameter is the input that had not yet been consumed (if any) when the parse succeeded.7Supply this continuation with more input so that the parser can resume. To indicate that no more input is available, use an empty string.8The parse failed. The tY parameter is the input that had not yet been consumed when the failure occurred. The []; is a list of contexts in which the error occurred. The . is the message describing the error, if any.&*9:;<+=>?@ABCD4678EFGHIJKLMNOPQRSTUVWX*9:;<+=>?@ABCD4678FN*:9;<+=>?@ABCD4876EFGHIJKLMNOPQRSTUVWX Bryan O'Sullivan 2012BSD3bos@serpentine.com experimentalunknownNoneY Compare two 4 values for equality.If both 4s are 7, the result will be Z^, as they are incomplete and hence their equality cannot be known. (This is why there is no [ instance for 4.)YYY 1Daan Leijen 1999-2001, Bryan O'Sullivan 2009-2010BSD3bos@serpentine.com experimentalportableNone\ choice ps( tries to apply the actions in the list psT in order, until one of them succeeds. Returns the value of the succeeding action.] option x p tries to apply action p. If p6 fails without consuming input, it returns the value x#, otherwise the value returned by p. +priority = option 0 (digitToInt <$> digit)^ A version of liftM23 that is strict in the result of its first action._many' p applies the action p zero: or more times. Returns a list of the returned values of p. The value returned by p is forced to WHNF.  word = many' letter`many1 p applies the action p one: or more times. Returns a list of the returned values of p.  word = many1 letteramany1' p applies the action p one: or more times. Returns a list of the returned values of p. The value returned by p is forced to WHNF.  word = many1' letterb sepBy p sep applies zero or more occurrences of p, separated by sep+. Returns a list of the values returned by p. $commaSep p = p `sepBy` (symbol ",")c sepBy' p sep applies zero or more occurrences of p, separated by sep+. Returns a list of the values returned by p. The value returned by p is forced to WHNF. %commaSep p = p `sepBy'` (symbol ",")d sepBy1 p sep applies one or more occurrences of p, separated by sep+. Returns a list of the values returned by p. %commaSep p = p `sepBy1` (symbol ",")e sepBy1' p sep applies one or more occurrences of p, separated by sep+. Returns a list of the values returned by p. The value returned by p is forced to WHNF. &commaSep p = p `sepBy1'` (symbol ",")fmanyTill p end applies action p zero or more times until action end7 succeeds, and returns the list of values returned by p%. This can be used to scan comments: I simpleComment = string "<!--" *> manyTill anyChar (try (string "-->"))Note the overlapping parsers anyChar and  string "<!--" , and therefore the use of the try combinator.gmanyTill' p end applies action p zero or more times until action end7 succeeds, and returns the list of values returned by p%. This can be used to scan comments: J simpleComment = string "<!--" *> manyTill' anyChar (try (string "-->"))Note the overlapping parsers anyChar and  string "<!--" , and therefore the use of the try# combinator. The value returned by p is forced to WHNF.h)Skip zero or more instances of an action.i(Skip one or more instances of an action.j:Apply the given action repeatedly, returning every result.kCombine two alternatives.\]^_`abcdefghijk\]_`abcdefghijk\]^_`abcdefghijk Bryan O'Sullivan 2007-2011BSD3bos@serpentine.com experimentalunknownNone ;HM!l If at least nI bytes of input are available, return the current input, otherwise fail.mkAsk for input. If we receive any, pass it to a success continuation, otherwise to a failure continuation.n$Immediately demand more input via a 7 continuation result.o)This parser always succeeds. It returns pA if any input is available either immediately or on demand, and q+ if the end of all input has been reached.rcAttempt a parse, and if it fails, rewind the input so that no input appears to have been consumed.kThis combinator is provided for compatibility with Parsec. Attoparsec parsers always backtrack on failure.s The parser  satisfy p0 succeeds for any byte for which the predicate p returns p,. Returns the byte that is actually parsed. @digit = satisfy isDigit where isDigit w = w >= 48 && w <= 57t The parser skip p0 succeeds for any byte for which the predicate p returns p. AskipDigit = skip isDigit where isDigit w = w >= 48 && w <= 57u The parser satisfyWith f p3 transforms a byte, and succeeds if the predicate p returns pT on the transformed value. The parser returns the transformed byte that was parsed.vConsume n< bytes of input, but succeed only if the predicate returns p.wConsume exactly n bytes of input.xstring s4 parses a sequence of bytes that identically match s". Returns the parsed string (i.e. sI). This parser consumes no input if it fails (even if a partial match).Note: The behaviour of this parser is different to that of the similarly-named parser in Parsec, as this one is all-or-nothing. To illustrate the difference, the following parser will fail under Parsec given an input of "for": string "foo" <|> string "for"fThe reason for its failure is that the first branch is a partial match, and will consume the letters 'f' and 'o'8 before failing. In Attoparsec, the above parser will succeedF on that input, because the failed first branch will consume nothing.y5Skip past input for as long as the predicate returns p.z/Consume input as long as the predicate returns q (i.e. until it returns p!), and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns p on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.{/Consume input as long as the predicate returns p!, and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns q on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.|=Consume all remaining input and return it as a single string.}=Consume all remaining input and return it as a single string.~A stateful scanner. The predicate consumes and transforms a state argument, and each transformed state is passed to successive invocations of the predicate on each byte of the input until one returns Z or the input ends.UThis parser does not fail. It will return an empty string if the predicate returns Z on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop./Consume input as long as the predicate returns p!, and return the consumed input.zThis parser requires the predicate to succeed on at least one byte of input: it will fail if the predicate never returns p or if there is no input left.Match any byte in a set. vowel = inClass "aeiou"Range notation is supported. halfAlphabet = inClass "a-nA-N"To add a literal '-'; to a set, place it at the beginning or end of the string.Match any byte not in a set.Match any byte.Match a specific byte.$Match any byte except the given one.Match any byte. Returns Z? if end of input has been reached. Does not consume any input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.*Match only if all input has been consumed.CReturn an indication of whether the end of input has been reached.(Match either a single newline character '\n'8, or a carriage return followed by a newline character "\r\n".(Name the parser, in case failure occurs.Terminal failure continuation.Terminal success continuation. Run a parser.-Run a parser that cannot be resupplied via a 7 result.vJust like unsafePerformIO, but we inline it. Big performance gains as it exposes lots of things to further inlining.  Very unsafe@. In particular, you should do no memory allocation inside an  block. On Hugs this is just unsafePerformIO./lmnorstuvwxyz{|}~ the name to use if parsing fails,\]_`abcdefghijkrstuwxyz{|}~.lmnorstuvwxyz{|}~Bryan O'Sullivan 2007-2011BSD3bos@serpentine.com experimentalunknownNoneIf a parser has returned a 7$ result, supply it with more input.5Run a parser and print its result to standard output.fRun a parser with an initial input string, and a monadic action that can supply more input if needed. Convert a  value to a  value. A 7 result is treated as failure. Convert a  value to an  value. A 7 result is treated as failure.rAn action that will be executed to provide the parser with more input, if necessary. The action must return an . string when there is no more input available.Initial input for the parser.34678Y\]_`abcdefghijkrstuwxyz{|}~Bryan O'Sullivan 2007-2011BSD3bos@serpentine.com experimentalunknownNone !"24=K#(Satisfy a literal string, ignoring case./Consume input as long as the predicate returns p!, and return the consumed input.zThis parser requires the predicate to succeed on at least one byte of input: it will fail if the predicate never returns p or if there is no input left. The parser  satisfy p0 succeeds for any byte for which the predicate p returns p,. Returns the byte that is actually parsed. Bdigit = satisfy isDigit where isDigit c = c >= '0' && c <= '9',Match a letter, in the ISO-8859-15 encoding.&Match a letter, in the ASCII encoding.8A fast alphabetic predicate for the ISO-8859-15 encodingNote~: For all character encodings other than ISO-8859-15, and almost all Unicode code points above U+00A3, this predicate gives  wrong answers.2A fast alphabetic predicate for the ASCII encodingNotex: For all character encodings other than ASCII, and almost all Unicode code points above U+007F, this predicate gives  wrong answers.Parse a single digit.A fast digit predicate.A fast digit predicate.Match any character.Match any character. Returns Z? if end of input has been reached. Does not consume any input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.3Fast predicate for matching ASCII space characters.Note: This predicate only gives correct answers for the ASCII encoding. For instance, it does not recognise U+00A0 (non-breaking space) as a space character, even though it is a valid ISO-8859-15 byte. For a Unicode-aware and only slightly slower predicate, use Fast / predicate for matching ASCII space characters.Parse a space character.Note: This parser only gives correct answers for the ASCII encoding. For instance, it does not recognise U+00A0 (non-breaking space) as a space character, even though it is a valid ISO-8859-15 byte.Match a specific character.+Match a specific character, but return its  value.)Match any character except the given one.Match any character in a set. vowel = inClass "aeiou"Range notation is supported. halfAlphabet = inClass "a-nA-N"OTo add a literal '-' to a set, place it at the beginning or end of the string.!Match any character not in a set./Consume input as long as the predicate returns p!, and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns q on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.A stateful scanner. The predicate consumes and transforms a state argument, and each transformed state is passed to successive invocations of the predicate on each byte of the input until one returns Z or the input ends.UThis parser does not fail. It will return an empty string if the predicate returns Z on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop./Consume input as long as the predicate returns q (i.e. until it returns p!), and return the consumed input.UThis parser does not fail. It will return an empty string if the predicate returns p on the first byte of input.NoteM: Because this parser does not fail, do not use it with combinators such as manyh, because such parsers loop until a failure occurs. Careless use will thus result in an infinite loop.5Skip past input for as long as the predicate returns p.Skip over white space.Type-specialized version of  for .Type-specialized version of  for .2A predicate that matches either a carriage return '\r' or newline '\n' character.(A predicate that matches either a space ' ' or horizontal tab '\t' character.BParse and decode an unsigned hexadecimal number. The hex digits 'a' through 'f' may be upper or lower case.&This parser does not accept a leading "0x" string.,Parse and decode an unsigned decimal number.(Parse a number with an optional leading '+' or '-' sign character.Parse a rational number.This parser accepts an optional leading sign character, followed by at least one decimal digit. The syntax similar to that accepted by the . function, with the exception that a trailing '.' or 'e' not& followed by a number is not consumed.%Examples with behaviour identical to 9, if you feed an empty continuation to the first result: rational "3" == Done 3.0 "" rational "3.1" == Done 3.1 "" rational "3e4" == Done 30000.0 "" rational "3.1e4" == Done 31000.0, ""%Examples with behaviour identical to : yrational ".3" == Fail "input does not start with a digit" rational "e3" == Fail "input does not start with a digit"Examples of differences from : Drational "3.foo" == Done 3.0 ".foo" rational "3e" == Done 3.0 "e"MThis function does not accept string representations of "NaN" or "Infinity".Parse a rational number.6The syntax accepted by this parser is the same as for .Note0: This function is almost ten times faster than !, but is slightly less accurate.The  ] type supports about 16 decimal places of accuracy. For 94.2% of numbers, this function and  give identical results, but for the remaining 5.8%, this function loses precision around the 15th decimal place. For 0.001% of numbers, this function will lose precision at the 13th or 14th decimal place.MThis function does not accept string representations of "NaN" or "Infinity".@Parse a number, attempting to preserve both speed and precision.6The syntax accepted by this parser is the same as for .Note0: This function is almost ten times faster than ~. On integral inputs, it gives perfectly accurate answers, and on floating point inputs, it is slightly less accurate than .MThis function does not accept string representations of "NaN" or "Infinity".)L 4678Y\]_`abcdefghijkrwx|}(NoneBryan O'Sullivan 2007-2011BSD3bos@serpentine.com experimentalunknownNone34678Y\]_`abcdefghijkrstuwxyz{|}~|(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskellorg experimentalportableNone*+-./?Haddock's own exception type.Module\ contains the current module. This way we can distinguish imported and local identifiers.'Option controlling how to qualify namesUses aliases of module names as suggested by module import renamings. However, we are unfortunately not able to maintain the original qualifications. Image a re-export of a whole module, how could the re-exported identifiers be qualified?JLike local, but strip module prefix from modules in the same hierarchy.!Qualify all imported names fully.Qualify all names fully.Never qualify any names.7Source-level options for controlling the documentation.*Render enabled extensions for this module.CNot the best place to get docs for things exported by this module.Pretend everything is exported.*This module should not appear in the docs.G}The head of an instance. Consists of a class name, a list of kind parameters, a list of type parameters and an instance typeH-An instance head that may have documentation.The three types of instancesData constructorsBody (right-hand side)ContextIExtends " with cross-reference information.J^This thing is not part of the (existing or resulting) documentation, as far as Haddock knows.KFThis thing is part of the (existing or resulting) documentation. The : is the preferred place in the documentation to refer to.LFType of environment used to cross-reference identifiers in the syntax.NArguments and result are indexed by Int, zero-based from the left, because that's the easiest to use when recursing over types.T$A cross-reference to another module.USome documentation.VA section heading.WSection level (1, 2, 3, ...).XSection id (for hyperlinks).YSection heading text.ZgAn exported entity for which we have no documentation (perhaps because it resides in another package).\Subordinate names.]An exported declaration.^A declaration._cMaybe a doc comment, and possibly docs for arguments (if this decl is a function or type-synonym).`/Subordinate names, possibly with documentation.aEInstances relevant to this declaration, possibly with documentation.bCFixity decls relevant to this declaration (including subordinates).cgWhether the ExportItem is from a TH splice or not, for generating the appropriate type of Source link.dA subset of the fields of p' that we store in the interface files.f)The module represented by this interface.g%Textual information about the module.hTDocumentation of declarations originating from the module (including subordinates).j"All names exported by this module.k|All "visible" names exported by the module. A visible name is a name that will show up in the documentation of the module.l=Haddock options for this module (prune, ignore-exports, etc).ppP holds all information used to render a single Haddock page. It represents the  interface of a module. The core business of Haddock lies in creating this structure. Note that the record contains some fields that are only used to create the final record, and that are not used by the backends.r!The module behind this interface.s!Original file name of the module.t%Textual information about the module.uDocumentation header.v6Documentation header with cross-reference information.w=Haddock options for this module (prune, ignore-exports, etc).xDeclarations originating from the module. Excludes declarations without names (instances and stand-alone documentation comments). Includes names of subordinate declarations mapped to their parent declarations.yTDocumentation of declarations originating from the module (including subordinates).{TDocumentation of declarations originating from the module (including subordinates).!All names exported by the module.|All "visible" names exported by the module. A visible name is a name that will show up in the documentation of the module. Aliases of module imports as in import A.B.C as C.!Instances exported by the module.The number of haddockable and haddocked items in the module, as a tuple. Haddockable items are the exports and the module itself.+Warnings for things defined in this module. Convert an p to an d  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~      !  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ E   !"#$%&'()*+,-./01FEDCBA@?>=<;:98765432GHIKJLMNOPQRS]ZVUT^_`abc[\WXYd efghijklmnopqrstuvwxyz{|}~     (c) The University of Glasgow 2001-2002, Simon Marlow 2003-2006, David Waern 2006-2009BSD-likehaddock@projects.haskell.org experimentalportableNone"3Print a message to stdout, if it is not too verbose#%Extract a module's short description.$%Extract a module's short description.%The name of the module index file to be displayed inside a frame. Modules are display in full, but without indentation. Clicking opens in the main window.&^Takes an arbitrary string and makes it a valid anchor ID. The mapping is identity preserving.'The identity markup3("program verbositymessage verbosity#$)*+,-./0123%456789:;&<=>?@ABCDEFGHIJKLMNOPQR'S'TU("#$).0123%456789:;&<=>?@ABCDELMPQ'S3("#$)*+,-./0123%456789:;&<=>?@ABCDEFGHIJKLMNOPQR'S|(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskell.org experimentalportableNoneVLike  listToMaybe3 but returns the last element instead of the first.<WXYZ[\]^_`abcdefV:XYZ[\]^_`abcdef*WXYZ[\]^_`abcdefV(c) Mark Lentczner 2010BSD-likehaddock@projects.haskell.org experimentalportableNoneg-Find a theme by name (case insensitive match)hStandard theme used by defaulti=Default themes that are part of Haddock; added with --default-themes The first theme in this list is considered the standard theme. Themes are "discovered" by scanning the html sub-dir of the libDir, and looking for directories with the extension .theme or .std-theme. The later is, obviously, the standard theme.j%Build a theme from a single .css filekBuild a theme from a directoryl!Check if we have a built in thememFind a built in themen+Process input flags for CSS Theme argumentsopqrstuvghijklmnwxyz{|}~qn{|opqrstuvghijklmnwxyz{|}~s(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mark Lentczner 2010BSD-likehaddock@projects.haskell.org experimentalportableNoneConcatenate a series of / values vertically, with linebreaks in between. Join two 5 values together with a linebreak in between. Has  as left identity.Generate a named anchor)generate an anchor identifier for a group,Attributes for an area that can be collapsed4Attributes for an area that toggles a collapsed areaNAttributes for an area that toggles a collapsed area, and displays a control.(c) Neil Mitchell 2006-2008BSD-likehaddock@projects.haskell.org experimentalportableNone%for constructors, and named-fields...&!F(c) Simon Marlow 2003-2006, David Waern 2006-2009BSD-likehaddock@projects.haskell.org experimentalportableNone0.(c) Isaac Dupree 2009,BSD-likehaddock@projects.haskell.org experimentalportableNoneJbecause 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, but we want to restore things to the source-syntax situation where the defining class gets to quantify all its functions for free!sbeginning of a function definition, in which, to make it look less ugly, those rank-1 foralls are made implicit.^normal situation. This is the safe one to use if you don't quite understand what's going on.h(c) Simon Marlow 2006, David Waern 2006-2009, Isaac Dupree 2009BSD-likehaddock@projects.haskell.org experimentalportableNone; Simplified type for sorting types, ignoring qualification (not visible in Haddock output) and unifying special tycons with normal ones. For the benefit of the user (looks nice and predictable) and the tests (which prefer output to be deterministic).  Like GHC's   but drops "silent" arguments. EDrop "silent" arguments. See GHC Note [Silent superclass arguments]. {Like GHC's getInfo but doesn't cut things out depending on the interative context, which we don't set sufficiently anyway."A class or data type is hidden iff<it is defined in one of the modules that are being processed/and it is not exported by any non-hidden moduleZWe say that an instance is hidden iff its class or any (part) of its type(s) is hidden.        None !"  !"F(c) Simon Marlow 2010, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskell.org experimentalportableNone#OPrint a possibly commented instance. The instance header is printed inside an argBoxJ. The comment is printed to the right of the box in normal comment style.$oPrint the LHS of a data/newtype declaration. Currently doesn't handle 'data instance' decls or kind signatures%IPrint an application of a DocName and two lists of HsTypes (kinds, types)&5Print an application of a DocName and a list of Names'%General printing of type applications|()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNO#PQRSTUV$%&'WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~-y(+*),-./0123456789:;<=>?@ABCDEFGHIJKLMNO#PQRSTUV$%&'WXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~F(c) Mateusz Kowalczyk 2013, Simon Hengel 2013BSD-likehaddock@projects.haskell.org experimentalportableNone*24T#SMain entry point to the parser. Appends the newline character to the input string.5Parse a text paragraph. Actually just a wrapper over F which drops leading whitespace and encodes the string to UTF8 first.Parses and processes 9https://en.wikipedia.org/wiki/Numeric_character_referenceNumeric character references'parseOnly encodedChar "&#65;&#66;&#67;"Right (DocString "ABC")List of characters that we use to delimit any special markup. Once we have checked for any of these and tried to parse the relevant markup, we can assume they are used as regular text.Plain, regular parser for text. Called as one of the last parsers to ensure that we have already given a chance to more meaningful parsers before capturing their characers.Skips a single special character and treats it as a plain string. This is done to skip over any special characters belonging to other elements but which were not deemed meaningful at their positions.Emphasis parser."parseOnly emphasis "/Hello world/"-Right (DocEmphasis (DocString "Hello world")) Bold parser. parseOnly bold "__Hello world__")Right (DocBold (DocString "Hello world"))Like ., but unconditionally take escaped characters.Like ., but unconditionally take escaped characters.EText anchors to allow for jumping around the generated documentation. parseOnly anchor "#Hello world#"Right (DocAName "Hello world")Monospaced strings.(parseOnly (monospace dynflags) "@cruel@")Right (DocMonospaced (DocString "cruel"))[Picture parser, surrounded by << and >>. It's possible to specify a title for the picture.!parseOnly picture "<<hello.png>>",Right (DocPic (Picture "hello.png" Nothing))'parseOnly picture "<<hello.png world>>"3Right (DocPic (Picture "hello.png" (Just "world")))Paragraph parser, called by .List parser, called by . Parses unordered (bullet) lists.*Parses ordered lists (numbered or dashed).Generic function collecting any further lines belonging to the list entry and recursively collecting any further lists in the same paragraph. Usually used as PsomeListFunction dynflags = listBeginning *> innerList someListFunction dynflagsParses definition lists.If possible, appends two 1 s under a C? rather than outside of it. This allows to get structures like DocParagraph (DocAppend & &) rather than DocAppend (DocParagraph &) &Drops all trailing newlines.Main worker for  and . We need the u here to be able to tell in the respective functions whether we're dealing with the next list or a nested paragraph.Use by  and  to parse any nested paragraphs.4Attemps to fetch the next list if possibly. Used by  and F to recursivly grab lists that aren't separated by a whole paragraph. Helper for  and Q which simply takes a line of text and attempts to parse more list content with . Runs the ? parser on an indented paragraph. The indentation is 4 spaces.1Grab as many fully indented paragraphs as we can.-Takes a non-empty, not fully whitespace line.%Doesn't discard the trailing newline.zParses examples. Examples are a paragraph level entitity (separated by an empty line). Consecutive examples are accepted.Property parser.&parseOnly property "prop> hello world"!Right (DocProperty "hello world")WParagraph level codeblock. Anything between the two delimiting @ is parsed for markup.Parses strings between identifier delimiters. Consumes all input that it deems to be valid in an identifier. Note that it simply blindly consumes characters and does no actual validation itself.,Parses UTF8 strings from ByteString streams. Parses identifiers with help of . Asks GHC for ! from the string it deems valid.*Remove all leading and trailing whitespace6String to parse6 ((c) Simon Marlow 2006, Isaac Dupree 2009BSD-likehaddock@projects.haskell.org experimentalportableNone"This function is how we read keys.7all fields in the header are optional and have the form spaces1[field name][spaces] ":"textg"n" ([spaces2][space][text]"n" | [spaces]"n")* where each [spaces2] should have [spaces1] as a prefix.Thus for the key  Description, VDescription : 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".!A(c) Isaac Dupree 2009, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskell.org experimentalportableNone"|(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskell.org experimentalportableNoneEUse a  to produce an pj. To do this, we need access to already processed modules in the topological sort. That's what's in the .Create  by looping through the declarations. For each declaration, find its names, its subordinates, and its doc strings. Process doc strings into 1s.FGet all subordinate declarations inside a declaration, and their docs.1Extract function argument docs from inside types.|All the sub declarations of a class (that we handle), ordered by source location, with documentation attached if it exists.The top-level declarations of a module that we care about, ordered by source location, with documentation attached if it exists.)Extract a map of fixity declarations onlyATake all declarations except pragmas, infix decls, rules from an .bTake a field of declarations from a data structure and create HsDecls using the given constructorSort by source location7Filter out declarations that we don't handle in HaddockCGo through all class declarations and filter their sub-declarations7Collect docs and attach them to the right declarations.Build the list of items that will become the documentation, from the export list. At this point, the list of ExportItems is in terms of original names.We create the export items even if the module is hidden, since they might be useful when creating the export items for other modules.(Lookup docs for a declaration from maps.Return all export items produced by an exported module. That is, we're interested in the exports produced by "module B" in such a scenario: 5module A (module B) where import B (...) hiding (...),There are three different cases to consider:1) B is hidden, in which case we return all its exports that are in scope in A. 2) B is visible, but not all its exports are in scope in A, in which case we only return those that are. 3) B is visible and all its exports are in scope, in which case we return a single T item.Sometimes the declaration we want to export is not the "main" declaration: it might be an individual record selector or a class method. In these cases we have to extract the required declaration (and somehow cobble together a type signature for it...).Keep export items with docs.5Find a stand-alone documentation comment by its name.# Module A'The real name of B, the exported module"The flags used when typechecking A#The renaming environment used for AAll the exports of AAll the declarations in AAlready created interfacesInterfaces in other packages Locations of all TH splices Resulting export items##s(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mark Lentczner 2010BSD-likehaddock@projects.haskell.org experimentalportableNoneIndicator of how to render a I into Render using prefix notation.Render using infix notation. Render as-is. :Render a name depending on the selected qualification mode             $s(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mark Lentczner 2010BSD-likehaddock@projects.haskell.org experimentalportableNoneSame as  but it doesn't insert the G element in links. This is used to generate the Contents box elements.  !"#$% !"#$  !"#$%%s(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mark Lentczner 2010BSD-likehaddock@projects.haskell.org experimentalportableNone&Make an element that always has at least something (a non-breaking space). If it would have otherwise been empty, then give it the class ".empty".!'()*&+,-./0123456789:;<=>?@ABCDEF'(*&+,-./012345678=>?@ABCDEF!'()*&+,-./0123456789:;<=>?@ABCDEF&s(c) Simon Marlow 2003-2006, David Waern 2006-2009, Mark Lentczner 2010BSD-likehaddock@projects.haskell.org experimentalportableNone@G%Print a type family and its variablesH/Print a newtype / data binder and its variablesIIPrint an application of a DocName and two lists of HsTypes (kinds, types)J5Print an application of a DocName and a list of NamesK%General printing of type applicationsLoPrint the LHS of a data/newtype declaration. Currently doesn't handle 'data instance' decls or kind signaturesAMNOPQRSTUVWXYZ[\]GHIJK^_`abcdefghijklmnopqLrstuvwxyz{|}~MVZ[KAMNOPQRSTUVWXYZ[\]GHIJK^_`abcdefghijklmnopqLrstuvwxyz{|}~'A(c) Simon Marlow 2003-2006, David Waern 2006BSD-likehaddock@projects.haskell.org experimentalportableNone((c) Simon Marlow 2003-2006, David Waern 2006-2009, Mark Lentczner 2010, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskell.org experimentalportableNoneBTurn a module tree into a flat list of full module names. E.g.,  A +-B +-C  becomes [A, A.B, A.B.C]  PackageDestination directoryPrologue text, maybeThemesThe source URL (--source)The wiki URL (--wiki)!The contents URL (--use-contents) The index URL (--use-index) 0Whether to use unicode in output (--use-unicode) How to qualify names +Output pretty html (newlines and indenting) How to qualify names )K(c) David Waern 2006-2009, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskell.org experimentalportableNoneHMRead a Haddock (.haddock$) interface file. Return either an  or an error message.\This 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 a new empty name cache is used. The function is therefore generic in the monad being used. The exact monad is whichever monad the first argument, the getter and setter of the name cache, requires.( *|(c) Simon Marlow 2003-2006, David Waern 2006-2010, Mateusz Kowalczyk 2013BSD-likehaddock@projects.haskell.org experimentalportableNoneCreate pzs and a link environment by typechecking the list of modules using the GHC API and processing the resulting syntax trees.: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 "the module nearest the bottom of the dependency graph which exports this name", not including hidden modules. When there are multiple choices, we pick a random one.uThe interfaces are passed in in topologically sorted order, but we start by reversing the list so we can do a foldl.Verbosity of logging to stdout9A list of file or module names sorted by module topologyCommand-line flags'Interface files of package dependencies6Resulting list of interfaces and renaming environment+F(c) Simon Marlow 2003-2006, David Waern 2006-2010BSD-likehaddock@projects.haskell.org experimentalportableNoneMoEither returns normally or throws an ExitCode exception; all other exceptions are turned into exit exceptions.)Run Haddock with given list of arguments.8Haddock's own main function is defined in terms of this: main = getArgs >>= haddock1Create warnings about potential misuse of -optghcFRender the interfaces with whatever backend is specified in the flags.kStart a GHC session with the -haddock flag set. Also turn off compilation and linking. Then run the given  action.(c) David Waern 2010BSD-likehaddock@projects.haskellorg experimentalportableNoneCreate pf structures from a given list of Haddock command-line flags and file or module names (as accepted by m executable). Flags that control documentation generation or show help or version information are ignored.A list of command-line flagsFile or module namesResulting list of interfaces  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~pqrstuvwxyz{|}~defghijklmnS]ZVUT^_`abc[\WXYMNLIKJHG1FEDCBA@?>=<;:98765432)*+,-./0 !"#$%&'(OPQRo ,-./01233456789:;<=>?@ABCDEFGHIJKLMNOPQRSTTUVWWXYZ[\]^_`abcdefghijklmnopqrstuvwxxyz{|}~))))))))*+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEF G H I J = = K L M N O P Q R S T U V WXYZ[\]^]_]`[a bc d e f g h i j W k l m n o = p q r s t u v w x y z { | } ~       9                    9:9:                                i j l o  W      [[      !"#$%&'()*+,-./0123456789:;<;=>?>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstrsuvwxyz{|}~@      !"#$%&'()*+,-./'0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~  !!!!!!!!""""""""""""""""""""""" " " " " """"""""################## #!#"####$$%$&'$($)$*$+$,$-$.%/%0%1%2%3%4%5%6%7%8%9%:%;%<%=%>%?%@%A%B%C%D%E%F%G%H%I%J%K%L%M%N%O&P&Q&C&D&E&B&Z&R&^&_&`&S&a&T&c&d&\&]&b&U&V&[&W&u&v&w&x&y&X&i&j&Y&k&Z&p&[&q&\&]&r&s&t&^&{&|&}&_&~&&&&&&&&`&&&&&&&&&'a'b'c'd'e'f(g(h(i(j(k(l(m(n(o(p(q(r(s(t(u(v(w(x(y(z({(|(}(~(((T((((())))))))))))))))))))))))))))))))*****++++++++++++++++haddock-2.14.3Documentation.HaddockHaddock.Backends.HaddockDBHaddock.Backends.Xhtml.Types Haddock.Utf8Haddock.GhcUtils Paths_haddockHaddock.VersionData.Attoparsec.Number"Data.Attoparsec.ByteString.FastSetData.Attoparsec.Internal.TypesData.Attoparsec.InternalData.Attoparsec.Combinator#Data.Attoparsec.ByteString.InternalData.Attoparsec.ByteString Data.Attoparsec.ByteString.Char8 Data.CharisSpaceHaddock.Parser.UtilData.Attoparsec Haddock.Types Haddock.UtilsHaddock.OptionsHaddock.Backends.Xhtml.ThemesHaddock.Backends.Xhtml.UtilsHaddock.Backends.HoogleHaddock.Interface.RenameHaddock.Convert!Haddock.Interface.AttachInstances Haddock.DocHaddock.Backends.LaTeXHaddock.Parser#Haddock.Interface.ParseModuleHeaderHaddock.Interface.LexParseRnHaddock.Interface.CreateHaddock.Backends.Xhtml.Names Haddock.Backends.Xhtml.DocMarkupHaddock.Backends.Xhtml.LayoutHaddock.Backends.Xhtml.DeclHaddock.ModuleTreeHaddock.Backends.XhtmlHaddock.InterfaceFileHaddock.InterfaceHaddockAliasMap DocOptionOptShowExtensions OptNotHomeOptIgnoreExportsOptPruneOptHideHaddockModInfohmi_description hmi_copyright hmi_licensehmi_maintainer hmi_stabilityhmi_portability hmi_safety hmi_languagehmi_extensions DocMarkupMarkup markupEmpty markupStringmarkupParagraph markupAppendmarkupIdentifiermarkupIdentifierUnchecked markupModule markupWarningmarkupEmphasis markupBoldmarkupMonospacedmarkupUnorderedListmarkupOrderedList markupDefListmarkupCodeBlockmarkupHyperlink markupAName markupPicmarkupProperty markupExample markupHeaderExampleexampleExpression exampleResult Hyperlink hyperlinkUrlhyperlinkLabelDoc DocHeader DocExamples DocPropertyDocANameDocPic DocHyperlink DocCodeBlock DocDefListDocOrderedListDocUnorderedListDocBold DocMonospaced DocEmphasis DocWarning DocModuleDocIdentifierUnchecked DocIdentifier DocParagraph DocString DocAppendDocEmptyInstHead DocInstanceDocName Undocumented DocumentedLinkEnv DocForDecl FnArgsDoc DocumentationdocumentationDocdocumentationWarning ExportItem ExportModule ExportDoc ExportGroupexpItemSectionLevelexpItemSectionIdexpItemSectionText ExportNoDecl expItemName expItemSubs ExportDecl expItemDecl expItemMbDocexpItemSubDocsexpItemInstancesexpItemFixitiesexpItemSplicedInstalledInterfaceinstModinstInfo instDocMap instArgMap instExportsinstVisibleExports instOptions instSubMap instFixMap WarningMap InterfaceifaceModifaceOrigFilename ifaceInfoifaceDoc ifaceRnDoc ifaceOptions ifaceDeclMap ifaceDocMap ifaceArgMap ifaceRnDocMap ifaceRnArgMap ifaceSubMap ifaceFixMapifaceExportItemsifaceRnExportItems ifaceExportsifaceVisibleExportsifaceModuleAliasesifaceInstancesifaceFamInstancesifaceHaddockCoverageifaceWarningMapArgMapDocMapmarkupFlagFlag_PrintMissingDocsFlag_PrettyHtmlFlag_QualificationFlag_NoTmpCompDirFlag_UseUnicodeFlag_NoWarningsFlag_PrintGhcLibDirFlag_PrintGhcPathFlag_GhcVersionFlag_GhcLibDir Flag_OptGhcFlag_ShowExtensionsFlag_HideModuleFlag_IgnoreAllExports Flag_GenIndex Flag_UseIndexFlag_GenContentsFlag_UseContentsFlag_InterfaceVersion Flag_CompatibleInterfaceVersions Flag_VersionFlag_Verbosity Flag_HelpFlag_LaTeXStyle Flag_LaTeXFlag_WikiEntityURLFlag_WikiModuleURLFlag_WikiBaseURLFlag_SourceLEntityURLFlag_SourceEntityURLFlag_SourceModuleURLFlag_SourceBaseURL Flag_PrologueFlag_OutputDirFlag_Lib Flag_Hoogle Flag_Html Flag_HeadingFlag_DumpInterfaceFlag_ReadInterfaceFlag_CSSFlag_BuiltInThemesNameCacheAccessor InterfaceFile ifLinkEnvifInstalledIfacesnameCacheFromGhcfreshNameCachereadInterfaceFileprocessModuleshaddockcreateInterfaces ppDocBookUnicodeSplice LinksInfoWikiURLs SourceURLs encodeUtf8baseGHC.BaseStringbytestring-0.10.4.0Data.ByteString.Internal ByteString decodeUtf8replacementCharacterencodedecodeunpackPackageId ghc-7.8.3Module PackageIdfamilyfamilies parentMapparents gbracket_ ExceptiongbracketParentchildren moduleStringmodulePackageInfolookupLoadedHomeModuleGRE isNameSymisVarSymisConSymgetMainDeclBinder getInstLocfilterLSigNamesfilterSigNames ifTrueJustsigName sigNameNoLocisTyClDisClassDisDocDisInstDisValDdeclATspretty trace_pprunLreLbeforemodifySessionDynFlags minimalDef setObjectDirsetHiDir setStubDir setOutputDir$fParentTyClDecl$fParentConDecl$fNamedThingConDecl$fNamedThingTyClDecl$fTraversableGenLocated$fFoldableGenLocatedcatchIOversionbindirlibdirdatadir libexecdir sysconfdir getBinDir getLibDir getDataDir getLibexecDir getSysconfDirgetDataFileName projectName projectUrlprojectVersionNumberghc-prim GHC.TypesDoubleDIbinop$fRealFracNumber$fFractionalNumber $fRealNumber $fNumNumber $fOrdNumber $fEqNumber$fNFDataNumber $fShowNumber tableCutoffset memberWord8 memberCharFastSetTableSortedfromSetfromListshiftRshiftLindexmkTable charClass $fShowFastSetMoreParserMonadfailFunctorControl.Applicative Applicative Control.Monad MonadPlusmzeromplus AlternativeIResultfmapDonePartialFail IncompleteCompleteSuccessFailure runParserAddedAunAInputunIfmapRaddSbindPreturnPnoAddsplusfmapPapPfailDesc<>$fAlternativeParser$fMonoidParser$fApplicativeParser$fFunctorParser$fMonadPlusParser $fMonadParser $fMonoidMore$fFunctorIResult$fNFDataIResult $fShowIResultcompareResults Data.MaybeNothing GHC.ClassesEqchoiceoptionliftM2'many'many1many1'sepBysepBy'sepBy1sepBy1'manyTill manyTill'skipMany skipMany1counteitherPensureprompt demandInput wantInputTrueFalsetrysatisfyskip satisfyWithtakeWithtakestring skipWhiletakeTill takeWhiletakeByteStringtakeLazyByteStringscan takeWhile1inClass notInClassanyWord8word8notWord8 peekWord8 endOfInputatEnd endOfLinefailKsuccessKparse parseOnlyinlinePerformIOTResultensure'getputstorablestringTransformtakeRestfeed parseTest parseWith maybeResultMaybe eitherResult Data.EitherEitherData.ByteStringemptystringCIletter_iso8859_15 letter_asciiisAlpha_iso8859_15 isAlpha_asciidigitisDigit isDigit_w8anyCharpeekChar isSpace_w8GHC.WordWord8spacecharchar8notChar skipSpace.*>*><*.<* isEndOfLineisHorizontalSpace hexadecimaldecimalsignedrational Text.ReadreaddoublenumbertoLowerasDoublefloaty$fIsStringParser takeUntilHaddockException AliasedQual QualOptionOptAliasedQualOptRelativeQual OptLocalQual OptFullQual OptNoQualInstTypeDataInstTypeInst ClassInstNametoInstalledIface ErrMsgGhc WriterGhc runWriterGhcErrMsgMWriter runWriterErrMsg Qualification RelativeQual LocalQualFullQualNoQualHeader headerLevel headerTitlePicture pictureUri pictureTitleLDocDocPathsSrcMapFixMapInstMapDeclMapSubMap InstIfaceMapIfaceMap noDocForDeclunrenameDocForDeclexampleToStringemptyHaddockModInfomakeContentsQualmakeModuleQualtellthrowEliftGhcToErrMsgGhc liftErrMsg$fMonadErrMsgGhc$fApplicativeErrMsgGhc$fFunctorErrMsgGhc$fExceptionHaddockException$fShowHaddockException$fMonadErrMsgM$fApplicativeErrMsgM$fFunctorErrMsgM$fNFDataExample$fNFDataPicture$fNFDataHyperlink$fNFDataHeader$fNFDataModuleName$fNFDataOccName $fNFDataName $fNFDataDoc$fTraversableHeader$fFoldableHeader$fOutputableInstType$fNamedThingDocNameHsDoc HsDocString LHsDocString BasicTypesFixityout toDescriptiontoInstalledDescriptionframeIndexHtmlFile makeAnchorIdidMarkupparseVerbosity restrictTorestrictDataDefn restrictCons restrictDecls restrictATs emptyHsQTvsbaseNamemoduleHtmlFilemoduleHtmlFile'contentsHtmlFile indexHtmlFilemoduleIndexFrameName mainFrameNamesynopsisFrameNamesubIndexHtmlFile moduleUrl moduleNameUrlmoduleNameUrl' nameAnchorIdjsFile framesFilegetProgramNamebyediedieMsgnoDieMsgmapSnd mapMaybeM escapeStr escapeURICharescapeURIString isUnreserved isAlphaChar isDigitCharisAlphaNumCharhtml_xrefs_refhtml_xrefs_ref' html_xrefs html_xrefs'replacespanWith markupPair getProcessIDtransformers-0.3.0.0Control.Monad.IO.ClassMonadIOliftIOoptLastoptionsgetUsageparseHaddockOptsoptTitle outputDiroptContentsUrl optIndexUrl optCssFile sourceUrlswikiUrlsoptDumpInterfaceFile optLaTeXStyle qualification verbosityghcFlags readIfaceArgs findTheme standardTheme defaultThemessingleFileThemedirectoryThemedoesBuiltInExist builtInTheme getThemesPossibleThemes PossibleThemeThemesTheme themeName themeHref themeFiles errMessageretRightgetDirectoryItems isCssFilePathcssFiles styleSheetsequenceEither liftEither concatEithervcatxhtml-3000.2.1Text.XHtml.InternalsHtml<=>noHtml namedAnchorgroupIdcollapseSectioncollapseTogglecollapseControl spliceURLrenderToStringhsep<+>keywordequalscommaquoteparensbrackets pabracketsbraces punctuate parenList ubxParenList ubxparensdcolonarrowdarrow forallSymboldot linkedAnchorpick lookupConTagsTagStr TagInlineTagPreTagPTagLprefixppHoogleppModule dropHsDocTy outHsType makeExplicit makeExplicitL dropCommentoperatorppExportppSigppClass ppInstance ppSynonymppDatappCtorppDocumentationdocdocWithboxstr markupTagshowTags showBlockasInline showInlineshowPre unwordsWrapescapeRnMunRnrenameInterfacereturnRnthenRn getLookupRnoutRnlookupRnrunRnFMrenamerenameLrenameExportItemsrenameDocForDeclrenameDocumentationrenameLDocHsSyn renameDocrenameFnArgsDoc renameLType renameLKindrenameMaybeLKind renameTyperenameHsQuasiQuoterenameLTyVarBndrsrenameLTyVarBndrrenameLContextrenameInstHead renameLDecl renameDecl renameLThing renameTyClDrenameFamilyDeclrenameFamilyInforenameDataDefn renameConrenameConDeclFieldField renameSig renameForD renameInstDrenameClsInstDrenameTyFamInstDrenameTyFamInstEqnrenameDataFamInstDrenameExportItem renameSub$fApplicativeRnM $fFunctorRnM $fMonadRnMDeleteTopLevelQuantificationImplicitizeForAll WithinTypeSynifyTypeStatetyThingToLHsDeclsynifyAxBranch synifyAxiom synifyTyCon synifyDataCon synifyName synifyIdSig synifyCtx synifyTyVars synifyType synifyTyLit synifyKindSigsynifyInstHead synifyFamInst SimpleType instanceHead'InstEnv instanceHeaddropSilentArgs getAllInfo isNameHiddenisInstanceHidden SimpleTyLit ExportInfoModules ExportedNamesattachInstancesattachToExportItem instLookupinstHeadargCountsimplifyinstFam funTyConName isTypeHiddencombineDocumentation docAppend docParagraph docCodeBlock $fMonoidDoc ppDocInstance ppDataHeaderppAppNameTypesppAppDocNameNames ppTypeApp StringContextMonoVerbPlainLaTeXppLaTeX haddockSty ppLaTeXTop ppLaTeXModule string_txtexportListItemprocessExports isSimpleSigisExportModule processExport ppDocGroup declNames forSummarymoduleLaTeXFilemoduleBasenameppDeclppTyFamppForppTySynppFunSig ppLPatSigppPatSigppTypeOrFunSig ppTypeSigppTyVars tyvarNames declWithDoc multiDeclmaybeDocrDoc ppClassHdrppFds ppClassDeclppDocInstancesisUndocdInstance ppInstDecl ppInstHeadlookupAnySubdoc ppDataDecl ppConstrHdrppSideBySideConstrppSideBySideField ppLContextppLContextNoArrowppContextNoArrowppContextNoLocs ppContext pp_hs_contextppBang tupleParenspREC_TOPpREC_FUNpREC_OPpREC_CON maybeParenppLType ppLParendType ppLFunLhTypeppType ppParendType ppFunLhTypeppLKindppKindppForAll ppr_mono_lty ppr_mono_ty ppr_tylit ppr_fun_typpBinder ppBinderInfix isInfixName ppSymName ppVerbOccNameppIPName ppOccName ppVerbDocName ppVerbRdrName ppDocName ppLDocName ppDocBinderppDocBinderInfixppName latexFilterlatexMonoFilter latexMungelatexMonoMungeparLatexMarkup latexMarkuprdrLatexMarkup docToLaTeXdocumentationToLaTeX rdrDocToLaTeXlatexStripTrailingWhitespace itemizedListenumeratedListdescriptionListttdeclttemphboldverbnl<-> parseParas parseString parseStringBS encodedChar specialCharstring'skipSpecialCharemphasis takeWhile_ takeWhile1_anchor monospacepicture paragraphlist unorderedList orderedList innerListdefinitionListjoinParadropNLsmoreinnerParagraphs moreListItems moreContentindentedParagraphsdropFrontOfParatakeNonEmptyLineexamplesproperty codeblock parseValid utf8String identifierRdrNamestripparseParasMaybeparseStringMaybedisallowNewline moduleNameheader textParagraphnonSpace birdtracks stripSpace nonEmptyLinetakeLine hyperlinkautoUrlskipHorizontalSpacetakeHorizontalSpace makeLabeledparseKeyparseModuleHeaderprocessDocStringsprocessDocStringParasprocessDocStringprocessprocessModuleHeader dataTcOccs' outOfScopecreateInterfaceGHCTypecheckedModulemkMapsMaps subordinatestypeDocs classDeclstopDeclsmkFixMapungroupHsDeclsHsGroupmkDecls sortByLoc filterDecls filterClasses collectDocs mkExportItems lookupDocs moduleExports extractDeclpruneExportItems findNamedDoc mkAliasMaplookupModuleDyn mkWarningMap moduleWarning parseWarning mkDocOpts parseOptionhiDeclhiValExportItemfullModuleContents toTypeNoLocextractClassDecl extractRecSelmkVisibleNamesseqListNotationPrefixInfixRaw ppQualifyName ppRdrNameppUncheckedLinkppFullQualName ppQualName ppBinder' wrapInfixlinkId linkIdOcc linkIdOcc' ppModuleRefdocToHtmlNoAnchors docToHtmlText.XHtml.Strict.Elements parHtmlMarkup origDocToHtml rdrDocToHtml docElement docSection docSection_cleanupnonEmptySectionNameSubDeclminiBody sectionDiv sectionNamedivPackageHeader divContentdivModuleHeader divFooterdivTableOfContentsdivDescription divSynposis divInterfacedivIndex divAlphabet divModuleList shortDeclList shortSubDecls divTopDecl divSubDeclssubDlistsubTablesubBlock subArgumentssubAssociatedTypessubConstructors subFields subEquations subInstances subMethods subMinimaldeclElem topDeclElemppFamDeclBinderWithVarsppDataBinderWithVars ppLFunSig ppSigLike ppFixitiesppTyName ppTyFamHeader ppAssocType ppHsContextppShortClassDecl ppInstancesppShortDataDecl ppShortConstrppShortConstrParts ppShortFieldpREC_CTX ppCtxType ModuleTreeNode mkModuleTree addToTrees mkSubTree splitModuleflatModuleTreeppHtml copyHtmlBitsheadHtml srcButton wikiButtoncontentsButton indexButtonbodyHtml moduleInfoppHtmlContents ppPrologue ppModuleTree mkNodeListmkNodeppHtmlContentsFrame ppHtmlIndex ppHtmlModuleppHtmlModuleMiniSynopsis ifaceToHtml miniSynopsisprocessForMiniSynopsis ppNameMinippTyClBinderWithVarsMinippModuleContentsnumberSectionHeadings nothingIf processDeclprocessDeclOneLiner groupHeadinggroupTag OnDiskName BinDictionary bin_dict_next bin_dict_mapBinSymbolTablebin_symtab_nextbin_symtab_map ifPackageIdbinaryInterfaceMagicbinaryInterfaceVersion#binaryInterfaceVersionCompatibilityinitBinMemSizewriteInterfaceFileputName putFastStringputSymbolTablegetSymbolTablefromOnDiskName serialiseName$fBinaryDocName$fBinaryHaddockModInfo $fBinaryDoc$fBinaryHeader$fBinaryPicture$fBinaryHyperlink$fBinaryExample$fBinaryDocOption$fBinaryInstalledInterface$fBinaryInterfaceFile $fBinaryMapbuildHomeLinks createIfaces0 createIfaces processModule withTempDirhandleNormalExceptionswarningsrenderwithGhcGhcMonadGhchandleTopExceptionshandleHaddockExceptionshandleGhcExceptionswithGhc'readPackagesAndProcessModules renderStepreadInterfaceFilesgetHaddockLibDir getGhcDirs shortcutFlagsupdateHTMLXRefs getPrologue