BSD3 licensed by Simon Marlow, David Waern
Maintained by Alex Biehl, Simon Hengel, Mateusz Kowalczyk

Module documentation for 2.17.4

There are no documented modules for this package.

Haddock, a Haskell Documentation Tool Build Status

About haddock

See Description on Hackage.

Source code documentation

Full documentation can be found in the doc/ subdirectory, in reStructedText format format.


Please create issues when you have any problems and pull requests if you have some code.


To get started you'll need a latest GHC release installed.

Clone the repository:

  git clone
  cd haddock

and then proceed using your favourite build tool.

Using cabal new-build

cabal new-build -w ghc-8.4.1
# build & run the test suite
cabal new-test -w ghc-8.4.1

Using Cabal sandboxes

cabal sandbox init
cabal sandbox add-source haddock-library
cabal sandbox add-source haddock-api
cabal sandbox add-source haddock-test
# adjust -j to the number of cores you want to use
cabal install -j4 --dependencies-only --enable-tests
cabal configure --enable-tests
cabal build -j4
# run the test suite
export HADDOCK_PATH="dist/build/haddock/haddock"
cabal test

Using Stack

stack init
stack install
# run the test suite
export HADDOCK_PATH="$HOME/.local/bin/haddock"
stack test

Git Branches

If you're a GHC developer and want to update Haddock to work with your changes, you should be working on ghc-head branch instead of master. See instructions at for an example workflow.

The master branch usually requires a GHC from the latest GHC stable branch. The required GHC version can be inferred from the version bounds on ghc in the respective .cabal files.


Changes in version 2.19.1

  • Show where instances are defined (#748)

  • @since includes package name (#452, #550, #749)

Changes in version

  • Support for linking unicode operators (#458)

  • Hyperlinker: Fix file handle leak in (#763)

Changes in version 2.19.0

  • Haddock now supports tables in documentation inspired by reSTs grid tables

  • --quickjump allows for quick navigation in documentation on hackage and other documentation hosting sites.

  • A --reexport flag, which can be used to add extra modules to the top-level module tree

  • Haddock no longer reports coverage statistics for hidden modules. By default cabal-install marks all package internal modules as hidden.

  • Haddock now writes additional information about the documentation to meta.json

  • Fix renaming of type variables after specializing instance method signatures (#613)

  • Move markup related data types to haddock-library

  • Fix: Show empty constraint contexts in pattern type signatures (#663)

  • Fix: Generate constraint signatures for constructors exported as pattern synonyms (#663)

  • The hyperlinker backend now uses the GHC lexer instead of a custom one. This notably fixes rendering of quasiquotes.

  • Overhaul Haddock's rendering of kind signatures so that invisible kind parameters are not printed (#681)

  • Recognise SPDX-License-Identifier as alias for License in module header parser (#743)

Changes in version 2.18.1

  • Synopsis is working again (#599)

  • Per-argument documentation on class methods working again (#647)

  • Support user defined signatures on pattern synonyms

  • Support for bundled pattern synonyms (#494, #551, #626)

Changes in version 2.17.4

  • Fix 'internal error: links: UnhelpfulSpan' (#554, #565)

  • Hyperlink backend knows about DataKinds (#510)

  • Fix rendering of class methods for Eq and Ord (#549)

  • Export MDoc and toInstalledIface from Haddock.Types

Changes in version

  • Disable NFData instances for GHC types when GHC >= 8.0.2 (#537)

Changes in version 2.17.3

  • Remove framed view of the HTML documentation

Changes in version 2.17.2

  • Fix portability of documentation building within GHC

Changes in version 2.17.1

  • Included with GHC 8.0.1

  • Fixed Makefile for GHC installation

  • Fixed clean rule of GHC Makefile

Changes in version 2.17.0 (not released)

  • Support typesetting of mathematical expressions via Mathjax (#397)

  • Describe orphan instances defined in a module in its documentation (#449)

  • Produce specialized type signatures for typeclass methods (#425)

  • Support GCC-like response files (#470)

Changes in version 2.16.2

  • Generate hyperlinked source ourselves (#410, part of GSOC 2015)

  • Fix expansion icon for user-collapsible sections (#412)

  • Break up response file arguments on newlines

  • Various HTML fixes (#301, #406, #407, #421)

  • Line anchors in hyperlinked source (#420)

Changes in version 2.16.1

  • Don't default to type constructors for out-of-scope names (#253 and #375)

  • Fix Hoogle display of constructors (#361)

  • Fully qualify names in Hoogle instances output (#263)

  • Output method documentation in Hoogle backend (#259)

  • Don't print instance safety information in Hoogle (#168)

  • Expand response files in arguments (#285)

  • Build the main executable with -threaded (#399)

  • Use SrcSpan of declarations for inferred type sigs (#207)

  • Fix cross-module instance locations (#383)

  • Fix alignment of Source link for instances in Firefox (#384)

Changes in version 2.16.0

  • Experimental collapsible header support (#335)

  • Add support for markdown links and images

  • Allow an optional colon after the closing bracket of definition lists. This is to disambiguate them from markdown links and will be require with a future release.

  • Fix re-exports of built-in type families (#310)

  • Fix parsing of infix identifiers such as elem.

  • Print missing docs by default and add --no-print-missing-docs

  • parser: now parses out some meta data too, breaking the API

  • parser: markdown syntax for images and URLs is now accepted: <> style for images and style for links is now considered deprecated. for links is still OK.

  • parser: add support for @since element: this is paragraph-level element of the form ‘@since x.y.z’ where x.y.z is the version number. The way it is rendered is subject to change.

  • properly render package ID (not package key) in index (#329)

  • links to source location of class instance definitions

  • Fix code blocks in presence of Windows line endings

  • Deal better with long synopsis lines (#151)

Changes in version 2.15.0

  • Always read in prologue files as UTF8 (#286 and Cabal #1721)

  • parser: don't wrap headers in DocParagraph (#307)

  • parser: don't mangle append order for nested lists (pandoc #1346)

  • parser: preserve list ordering in certain scenarios (#313)

  • parser: update the attoparsec version used internally giving slight parsing performance boost.

  • Move development to be against latest GHC release and not GHC HEAD.

  • Further split up the package to separate the executable from the library, necessary by things like GHCJS. We now have ‘haddock-library’ which are the parts that don't use GHC API, ‘haddock-api’ which are (some of) the parts that do use GHC API and ‘haddock’ which merely provides the executable.

  • Export few extra functions in the API.

  • Add compatibility with GHC 7.8.2.

  • Omit unnecessary ‘forall’s (#315 and #86)

  • Remove some files which were really old or did not belong in the repository in the first place.

Changes in version 2.14.3

  • Fix parsing of identifiers with ^ or ⋆ in them (#298)

  • Fix anchors (#308)

Changes in version 2.14.2

  • Always drop --split-objs GHC flag for performance reasons (#292)

  • Print kind signatures GADTs (#85)

  • Drop single leading whitespace when reasonable from @-style blocks (#201)

  • Fix crashes associated with exporting data family record selectors (#294)

Changes in version 2.14.1

  • Render * and -> with their UnicodeSyntax equivalents if -U is enabled

  • Display minimal complete definitions for type classes

  • Hide right hand side of TF instances with hidden names on the RHS

Changes in version 2.14.0

  • Print entities with missing documentation (#258)

  • Print a warning message when given -optghc instead of --optghc (#5)

  • Add --compatible-interface-versions (#231)

  • Allow to generate latex documentation for FFI declarations (#247)

  • Add copyright and license information to generated documentation

  • Improved to Unicode support

  • Bold markup support

  • Nested paragraphs

  • Better escaping

  • Header markup

  • Parser should no longer fail to parse any markup

  • {-# OPTIONS_HADDOCK show-extensions #-} pragma will show the GHC extensions enabled in the module.

  • Properly render License field (#271)

  • Print type/data family instances (for exported types only)

  • Fix display of poly-kinded type operators (#189)

  • PatternSynonyms support

  • Fix display of implicit parameters (#260)

  • Fix rendering of Contents when links are present (#276)

  • Fix documentation duplication on record fields (#195)

  • Add --source-entity-line for exact line links (eg. things defined inside TH splices) (#79)

  • Display fixity information for names with nonstandard fixities

  • Bird tracks specified like "> code" no longer suffer from an extra leading space in the code output

Changes in version 2.13.2

  • Handle HsExplicitListTy in renamer (#213)

  • Allow haddock markup in deprecation messages

  • Export more types from Documentation.Haddock

  • Include everything that is required to run the test suite with the cabal package (#230)

Changes in version 2.13.1

  • Hide instances that are "internal" to a module

  • Add support for properties in documentation

  • Fix a bug with spurious superclass constraints

  • Fix and extend the Haddock API

Changes in version 2.12.0

Changes in version 2.11.0

  • Show deprecation messages for identifiers

  • List identifiers declared on the same line (with a common type) separately

  • Don't crash on unicode strings in doc comments

  • Fix reporting of modules safe haskell mode

  • Fix a case where we were generating invalid xhtml

  • Improved --qual option (no crashes, proper error messages)

  • A new --qual option "aliased" which qualifies identifiers by the module alias used in the source code

  • The Haddock API restores GHC's static flags after invocation

  • Access to unexported identifiers through the Haddock API again

Changes in version 2.10.0

  • Require GHC >= 7.4

  • Safe Haskell indications on module pages

  • Type declarations on identifiers no longer necessary

  • Add flag --interface-version

  • Warn when comment refers to in-scope identifier without documentation

  • Bug fix: links to out-of-scope things (#78)

  • Bug fix: module references to other packages work again

Changes in version 2.9.4

  • Require GHC >= 7.2

  • Support Alex 3.x

Changes in version 2.9.3

[This is the version that comes with GHC 7.2.1 although it claims it's 2.9.2!]

  • Build with GHC 7.2.1

  • Support blank lines in results of examples

  • A type signature for multiple names generates one signature in the output

  • Minor bug fixes

Changes in version 2.9.2

  • Build with GHC 7.0.2

  • Write Hoogle output in utf8; fixes GHC build on Windows

Changes in version 2.9.1

  • Fix build in GHC tree

  • Improve .cabal file

Changes in version 2.9.0

  • Drop support for ghc < 7

  • New flag --qual for qualification of names

  • Print doc coverage information to stdout when generating docs

  • Include an 'All' option in the A-Z subdivided index

  • Make TOC group header identifiers validate

  • Minor changes to the API

Changes in the version that comes with GHC 7.0.1

[This version claims it is 2.8.0 but is actually based on 2.8.1]

  • Fix URL creation on Windows: Use / not \ in URLs.

  • Support GHC 7.0

Changes in version 2.8.1

  • Fix build on Windows with MinGW

Changes in version 2.8.0

  • HTML backend completely rewritten to generate semantically rich XHTML using the xhtml package.

  • New default CSS based on the color scheme chosen for the new Haskell wiki, with a pull-out tab for the synopsis.

  • Theme engine based on CSS files. Themes can be switched from the header menu. (New flags --built-in-themes and --theme. The latter is an alias for --css which now has extended semantics).

  • Markup support for executable examples/unit-tests. To be used with an upcoming version of the DocTest program.

  • Addition of a LaTeX backend.

  • Frames-mode can be enabled from the header menu.

  • Path to source entities can be specified per package, so that source links work for cross-package documentation.

  • Support for a second form of enumerated lists (1. 2. etc).

  • Additions and changes to the Haddock API.

  • New flag --no-tmp-comp-dir to tell Haddock to write and pick up compilation files (.o, .hi, etc) to/from GHC's output directory instead of a temporary directory.

  • Various bug fixes.

Changes in version 2.6.1 (bug fix release from the stable branch)

  • Fix #128

Changes in version 2.7.2

  • Add Paths_haddock to library

Changes in version 2.7.1:

  • Fix problems with library part of .cabal file

Changes in version 2.7.0:

  • Instances can be commented

  • The Haddock API now exposes more of the internals of Haddock

  • Bug fixes (most importantly #128)

Changes in version 2.6.0:

  • Drop support for GHC 6.10.*

  • Add support for GHC 6.12.1

  • Cross-package documentation: full documentation show up when re-exporting things coming from external packages

  • Lexing and parsing the Haddock comment markup is now done in Haddock again, instead of in GHC

  • Slightly prettier printing of instance heads

  • Support platforms for which GHC has no native code generator

  • Add a flag --print-ghc-libdir

  • Minor bug fixes

Changed in version 2.5.0:

  • Drop support for GHC 6.8.*

  • Add support for GHC 6.10.3 and 6.10.4

  • Revert to the old multi-page index for large packages (#106)

  • Show GADT records in the generated documentation

  • Create output directory if it doesn't exist (#104)

  • Use the native codegen instead of compiling via C for TH modules

  • Add --use-unicode flag for displaying prettier versions of common symbols

  • Multiple verbosity levels: remove --verbose and add --verbosity=n

Changed in version 2.4.2:

  • Support GHC 6.10.2

  • Haddock no longer crashes on Template Haskell modules (#68) (only with GHC 6.10.2 or above)

  • Fix problem with Template Haskell-generated declarations disappearing (#59)

  • Generate two anchors for each link for compatibility between IE and Opera (#45)

  • Improved error messages

  • Show re-exports from external packages again (GHC ticket #2746)

  • Store hidden modules in .haddock files again (needed by the haddock library)

  • Avoid processing boot modules

  • Pragmas may exist between document comments and declarations

  • Do not indicate that a constructor argument is unboxed

  • Fix problem with non-working links to ghc-prim

  • Allow referring to a specific section within a module in a module link (#65)

  • Fixes to the Hoogle backend

  • Improvements to the haddock library

  • Many other fixes (including #67, #69, #58, #57)

Changed in version 2.4.1:

  • Depend on base 4. when GHC >= 6.9, otherwise 3.

Changed in version 2.4.0:

  • Add framed view of the HTML documentation

  • Build with GHC 6.8.2 and 6.8.3 again

  • Support images in documentation comments again

  • Small improvements to the Hoogle output

  • A few bugs has been fixed

Changed in version 2.3.0:

  • Support for GHC 6.10.1

  • Slightly improved space usage

  • Fix a bug that made hidden modules show up in the contents & index pages

  • Fix a bug that made Haddock load modules twice

  • Improvements to the Hoogle output

Changed in version 2.2.2:

  • Relax version dependency on ghc-paths

Changes in version 2.2.1:

  • Support for GHC 6.8.3

  • The Hoogle backend is back, thanks to Neil Mitchell. The plan is to be compatible with the upcoming Hoogle 4 pre-release

  • Show associated types in the documentation for class declarations

  • Show type family declarations

  • Show type equality predicates

  • Major bug fixes (#1 and #44)

  • It is no longer required to specify the path to GHC's lib dir

  • Remove unnecessary parenthesis in type signatures

Changes in version 2.1.0:

  • Fix a bug that made links point to the defining module instead of the "best" one (e.g Int pointing to GHC.Base instead of Data.Int)

  • Fix a couple of smaller bugs

  • The representation of DocName was changed in the library

  • Add a flag --no-warnings for turning off warnings

Changes in version

  • The GHC API is used as the front-end

  • Haddock now understands all syntax understood by GHC 6.8.2

  • Haddock can generate documentation for some of the language extensions in GHC 6.8.2

  • Format of module attributes has changed. The only way of specifying module attributes is via a new OPTIONSHADDOCK pragma. Example: {-# OPTIONSHADDOCK hide, prune #-}

  • Haddock understands literate source files

  • Add a small library to read Haddock's interface files

  • Add a flag -B for passing the path to the GHC lib dir

  • Add a flag --optghc for passing options to GHC

  • Add a flag --ghc-version for printing the GHC version

  • Remove --use-package, --allow-missing-html, --ghc-pkg, in favour of only supporting --read-interface

  • Remove --package flag, the GHC flag -package-name can be used instead

  • Remove --no-implicit-prelude flag, the GHC flag -XNoImplicitPrelude can be used instead

Changes in version 0.9:

  • Infix type operators, e.g., first :: a~>a' -> (a,b)~>(a',b)

  • Add a search box to the index page which automatically narrows the index to the search as you type (thanks to Neil Mitchell).

  • Add a --ghc-pkg flag

  • Add a flag --allow-missing-html

  • URL expansion for %%, %L, %{LINE}

  • added substitution %{FILE///c}

  • Lexing of /.../ is now more like '...', in that a / character must be matched by another / character on the same line, otherwise it is treated as a literal '/'. This removes a common source of accidental parse errors in documentation.

  • Various bugs were fixed.

  • Cabal 1.2 is now required, and Haddock builds with GHC 6.8.x.

Changes in version 0.8:

  • Haddock has a Cabal build system, and will build on Windows without Cygwin or MSYS. GHC 6.4 or later is required.

  • New options: --comments-base, --comments-module, --comments-entity for generating links to pages (eg. wiki) for collecting user comments.

  • New options: --source-base, --source-module, --source-entity for generating links to source code. Haddock now understands {-# LINE #-} pragmas, which means it can figure out the correct name for the source file even if the file is preprocessed.

  • Haddock generates output for populating the Hoogle search engine.

  • New markup <> for including images.

Changes in version 0.7:

  • Changes in the way Haddock decides where to direct hyperlinks. Each entity

    is now assigned a single "home" module, and all hyperlinks are directed to that module. See the docs ("Hyperlinking and re-exported entities") for details.

  • New options --ignore-all-exports, --hide

  • New option --use-package for creating documentation that hyperlinks to the HTML documentation for existing packages on your system. It works by querying ghc-pkg for the location of the Haddock interface and HTML for the given package.

  • Parts of the HTML documentation, notably lists of instances, are now "collapsible" with a +/- button. Also, the contents page is now in the form of tree in which subtrees can be collapsed.

  • Support for Microsoft DevHelp and HtmlHelp 2.0 formats.

  • Support for a short description for each module for the contents page.

  • Compiles with GHC 6.4+

  • Various bugfixes

Changes in version 0.6:

  • Implicit parameters, zip comprehensions and 'mdo' are now supported by the parser.

  • Some lexical bugs were fixed, mainly concerning literal paragraphs next to non-literal paragraphs.

  • New options: --gen-index, --use-index, --gen-contents and --use-contents, for generting a combined index and contents for several libraries from the appropriate .haddock files.

  • There is now one index rather than separate Function/Constructor and Type/Class indices. Where a name refers to several entities, these are listed separately in the index.

  • New option: -v, elicits more verbose warnings. Some warnings are now turned off by default; Haddock should be a little less noisy in general.

  • Markup for definition lists has been added. See the documentation for details.

  • New option: --package for setting the package name. The package is listed alongside each module name in the combined contents.

  • Entities which are re-exported from another package now at least leave a hyperlink in the generated HTML, rather than nothing at all.

  • Some fixes for bugs which caused incorrect hyperlinks in the generated HTML. In particular, instances should now be linked correctly.

  • Some aesthetic improvements to the generated HTML.

Changes in version 0.5:

  • Compiles with recent versions of GHC.

  • A few bugs have been fixed.

  • New labelling/linking feature (see "Anchors" in the manual).

Changes in version 0.4:

  • Import declarations which list entities in parentheses, or with hiding clauses, are now properly supported. Modulo one or two small infelicities, the full Haskell modules system is now supported.

  • Haddock is now more flexible about the placing of separators (commas, semicolons) in relation to doc comments.

  • There is support for generating and reading "interface files" which describe the exports of a set of modules. This is useful for generating documentation which hyperlinks to previously-generated documentation.

  • Support for generating the extra files required by the Microsoft Help compiler.

  • New option: --prologue specifies a file of documentation which is placed on the contents page.

  • Many bugs fixed

Changes in version 0.3:

  • Documentation on individual function arguments is now implemented

  • Links can be made to identifiers that aren't in scope, by using the fully qualified name.

  • Instances are collected and listed with the appropriate classes and datatypes (not for derived instances yet).

  • Single quotes are only interpreted specially when they surround a legal Haskell identifier, otherwise they are treated literally.

  • Bird-tracked text is now literal. If you want marked-up text in a code block, use the @...@ notation instead.

  • Various changes to the layout, it generally looks nicer now.

  • Various bugs fixed.

Changes in version 0.2:

  • The [...] markup for typewriter font has been changed to @...@.

  • Module attributes introduced (see the documentation for details).

  • {- ... -} style comments may now be used for documentation annotations

  • Recursive modules are detected and reported as an error.

  • Existential constructors and rank-N types are now groked by the parser

  • Some type rendering cleaned up

  • `abc' is accepted as well as 'abc' to markup an identifier

  • Several bugs fixed, and error messages improved.

Depends on 2 packages:
Used by 3 packages:
comments powered byDisqus