haddock: A documentation-generation tool for Haskell libraries

[ bsd3, documentation, program ] [ Propose Tags ]

Haddock is a documentation-generation tool for Haskell libraries

[Skip to Readme]


Manual Flags


Are we in a GHC tree?


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Versions [RSS] 0.8, 0.9,, 2.1.0, 2.2.0, 2.2.1, 2.2.2, 2.4.0, 2.4.1, 2.4.2, 2.5.0, 2.6.0, 2.6.1, 2.7.0, 2.7.1, 2.7.2, 2.8.0, 2.8.1, 2.9.0, 2.9.1, 2.9.2, 2.9.3, 2.9.4, 2.10.0, 2.11.0, 2.11.1, 2.12.0, 2.13.0, 2.13.1, 2.13.2,, 2.14.1, 2.14.2, 2.14.3, 2.15.0,,, 2.16.0, 2.16.1, 2.17.2, 2.17.4, 2.17.5, 2.18.1,, 2.20.0, 2.21.0, 2.22.0, 2.23.0, 2.23.1, 2.24.0, 2.24.1, 2.24.2, 2.25.0, 2.25.1, 2.26.0, 2.27.0, 2.28.0, 2.29.0, 2.29.1
Change log CHANGES
Dependencies base (>=4.3 && <4.9), haddock-api (>=2.16 && <2.17) [details]
License BSD-3-Clause
Copyright (c) Simon Marlow, David Waern
Author Simon Marlow, David Waern
Maintainer Simon Hengel <sol@typeful.net>, Mateusz Kowalczyk <fuuzetsu@fuuzetsu.co.uk>
Category Documentation
Home page http://www.haskell.org/haddock/
Bug tracker https://github.com/haskell/haddock/issues
Source repo head: git clone https://github.com/haskell/haddock.git
Uploaded by MateuszKowalczyk at 2015-07-22T21:01:39Z
Distributions Arch:2.26.0, FreeBSD:2.16.1
Reverse Dependencies 10 direct, 17 indirect [details]
Executables haddock
Downloads 91163 total (191 in the last 30 days)
Rating 2.25 (votes: 2) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs not available [build log]
Last success reported on 2016-06-26 [all 8 reports]

Readme for haddock-2.16.1

[back to package description]
# Haddock, a Haskell Documentation Tool

#### About haddock

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.

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.

#### Documentation formats

Haddock can generate documentation in multiple formats; currently HTML
is implemented, and there is partial support for generating LaTeX and

#### Source code documentation

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

#### Contributing

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

###### Hacking

To get started you'll need a latest GHC release installed. Below is an
example setup using cabal sandboxes.

  git clone https://github.com/haskell/haddock.git
  cd haddock
  cabal sandbox init
  cabal sandbox add-source haddock-library
  cabal sandbox add-source haddock-api
  # 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
  cabal test

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.