Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Mirror of haddock repository. DO NOT SUBMIT PULL REQUESTS HERE. Use http://github.com/haskell/haddock instead!
Haskell HTML CSS JavaScript TeX Makefile Shell
Branch: master
Failed to load latest commit information.
doc Make some version changes after 2.16.1 release
driver Break the response file by line termination rather
haddock-api Fix weird-looking Hoogle output for familyless classes.
haddock-library Delete trailing whitespace
html-test Add examples with type operators to the instances test case.
hypsrc-test Re-accept test cases after adding line anchors for each of them.
latex-test solve dataDir ambiguity
.arcconfig Add an .arcconfig file.
.arclint Add .arclint file.
.ghci Move sources under haddock-api/src
.gitignore Add hyperlinker test runner to .cabal and .gitignore files.
.travis.yml Make Travis use 7.10.2
CHANGES Update tests to follow HTML changes
CONTRIBUTING CONTRIBUTING file for issues
LICENSE Move Haddock API to a separate package
Makefile Update Makefile for the new GHC build system
README.md Refine hacking instructions slightly
STYLE Add a pointer to the style guide
Setup.lhs Fix Setup.lhs
build-windows-dist.sh add build scripts
ghc.mk Fixup ghc.mk (follow-up to 1739375)
haddock.cabal Refactor specializer module to be independent from XHTML backend.
haddock.wrapper GHC build system: Make *nix installation work in paths containing spaces
make-sdist.sh Delete few unused/irrelevant/badly-place files.

README.md

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 Hoogle.

Source code documentation

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

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 https://ghc.haskell.org/trac/ghc/wiki/WorkingConventions/Git/Submodules for an example workflow.

Something went wrong with that request. Please try again.