In favour of


A documentation-generation tool for Haskell libraries

Latest on Hackage:2.6.0

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow to host generated Haddocks.

BSD3 licensed by Simon Marlow, David Waern
Maintained by David Waern
Haddock, a Haskell Documentation Tool

This is Haddock, a tool for automatically generating documentation
from annotated Haskell source code. It is primary intended for
documenting library interfaces, but it should be useful for any kind
of Haskell code.

Like other systems ([1],[2]), Haddock lets you write documentation
annotations next to the definitions of functions and types in the
source code, in a syntax that is easy on the eye when writing the
source code (no heavyweight mark-up). The documentation generated by
Haddock is fully hyperlinked - click on a type name in a type
signature to go straight to the definition, and documentation, for
that type.

Haddock understands Haskell's module system, so you can structure your
code however you like without worrying that internal structure will be
exposed in the generated documentation. For example, it is common to
implement a library in several modules, but define the external API by
having a single module which re-exports parts of these implementation
modules. Using Haddock, you can still write documentation annotations
next to the actual definitions of the functions and types in the
library, but the documentation annotations from the implementation
will be propagated to the external API when the documentation is
generated. Abstract types and classes are handled correctly. In
fact, even without any documentation annotations, Haddock can generate
useful documentation from your source code.

Haddock can generate documentation in multiple formats; currently HTML
is implemented, and there is partial support for generating DocBook.
The generated HTML uses stylesheets, so you need a fairly up-to-date
browser to view it properly (Mozilla, Konqueror, Opera, and IE 6
should all be ok).

Full documentation can be found in the doc/ subdirectory, in DocBook

Please send questions and suggestions to:

David Waern <> or
Simon Marlow <>

[1] IDoc - A No Frills Haskell Interface Documentation System

[2] HDoc


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

* Mutiple 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

* Improved error messages

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

* Store hidden modules in .haddock files again (needed by the haddock

* Avoid processing boot modules

* Pragmas may exist between document comments and declarations

* Do not indicate that a constructor argument is unboxed

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

* Allow referring to a specific section within a module in a module link

* 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 specifiying
module attributes is via a new OPTIONS_HADDOCK pragma. Example:
{-# OPTIONS_HADDOCK 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 <<url>> 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

* 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.
comments powered byDisqus