Haddock is the standard tool for generating documentation from Haskell code.
Full documentation about Haddock itself can be found in the
in reStructedText format format.
This project consists of three packages:
haddock: provides the
haddockexecutable. It is implemented as a tiny wrapper around
haddock-api: contains the program logic of the
haddocktool. The haddocks for the
Documentation.Haddockmodule offer a good overview of the functionality.
haddock-library: is concerned with the parsing and processing of the Haddock markup language. Unlike the other packages, it is expected to build on a fairly wide range of GHC versions.
Please create issues when you have any problems and pull requests if you have some code.
To get started you'll need the latest GHC release installed.
Clone the repository:
git clone https://github.com/haskell/haddock.git cd haddock
and then proceed using your favourite build tool.
cabal v2-build -w ghc-8.10.1 cabal v2-test -w ghc-8.10.1 all
stack init stack build export HADDOCK_PATH="$(stack exec which haddock)" stack test
Using Cabal sandboxes (deprecated)
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
If you're a GHC developer and want to update Haddock to work with your changes,
you should be working on the
ghc-head branch. See instructions at
for an example workflow.
Updating golden testsuite outputs
If you've changed Haddock's output, you will probably need to accept the new
output of Haddock's golden test suites (
hypsrc-test). This can be done by passing the
argument to these test suites. With a new enough version of
cabal v2-test html-test latex-test hoogle-test hypsrc-test \ --test-option='--accept'