Haddock: A Haskell Documentation Tool
News
  • January 8 2008: Haddock version 2.0.0.0 released (Release notes)
  • December 20 2007: Haddock version 0.9 released (Release notes)
  • October 10 2006: Haddock version 0.8 released (Release notes)
  • August 4 2005: Haddock version 0.7 released (Release notes)
  • November 11 2003: Haddock version 0.6 released (Release notes)
  • July 28 2003: Haddock version 0.5 released (Release notes)
  • July 23 2002: Haddock version 0.4 released (Release notes)
  • June 3 2002: Haddock version 0.3 released (Release notes)
  • May 9 2002: Haddock version 0.2 released (Release notes)
  • May 1 2002: Haddock version 0.1 released
Overview
This is Haddock, a tool for automatically generating documentation from annotated Haskell source code. It is primarily intended for documenting libraries, but it should be useful for any kind of Haskell code.

Like other systems (IDoc,HDoc), 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).

Examples
  • Haddock is being used to document the new hierarchical Haskell libraries. The documentation generated for the libraries shipped with the latest release of GHC is here.
  • The Gtk2Hs project is using Haddock to build reference documentation.
  • The HTk project is using Haddock to generate its library documentation.
Documentation
Development

Haddock is licensed under a BSD-style license. The current sources are in a Darcs repository, to get the latest version say:

   darcs get http://code.haskell.org/haddock/

The old (pre-2.0.0.0) version of Haddock is at http://darcs.haskell.org/haddock.

See also the Haddock Wiki Page.

Feel free to hack on Haddock and darcs send me your patches.

Downloads for version 2.0.0.0
  • The HackageDB page for Haddock 2.0.0.0
  • Source distribution (.tar.gz) (requires Cabal 1.2 and GHC version 6.8.2 or later to compile).
  • RPMs for Linux: RPMs can be built from the source distribution using rpmbuild -ta or from the source RPM using rpmbuild --rebuild, but you do need GHC installed.
  • FreeBSD/x86 and OpenBSD/x86: Haddock is in the ports tree, under devel/haddock. To install binaries on FreeBSD, just say pkg_add -r haddock.
  • Windows: a binary distribution is available, just unzip and go.

Simon Marlow <simonmar@microsoft.com>