Skip to content
Snippets Groups Projects
Duncan Coutts's avatar
duncan.coutts@worc.ox.ac.uk authored
Like the wiki link on the contents and index page, add a source code link too.
Extend the wiki & source URL variable expansion syntax.

The original syntax was:
%F for the source file name (the .hs version only, not the .lhs or .hs.pp one)
%M for the module name (with '.' replaced by '/')

The new syntax is:
%F or %{FILE} for the original source file name
%M or %{MODULE} for the module name (no replacements)
%N or %{NAME} for the function/type export name
%K or %{KIND} for a type/value flag "t" or "v"

with these extensions:
%{MODULE/./c} to replace the '.' module seperator with any other char c

%{VAR|some text with the % char in it} which means if the VAR is not in use in
this URL context then "" else replace the given text with the '%' char
replaced by the string value of the VAR. This extension allows us to construct
URLs wit optional parts, since the module/file name is not available for the
URL in the contents/index pages and the value/type name is not available for
the URL at the top level of each module.
edd9f229
History
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
format.

Please send questions and suggestions to me:

Simon Marlow <simonmar@microsoft.com>


System Requirements
===================

Haddock currently requires GHC version 4.08 or later to compile.


[1] IDoc - A No Frills Haskell Interface Documentation System
    http://www.cse.unsw.edu.au/~chak/haskell/idoc/

[2] HDoc http://www.fmi.uni-passau.de/~groessli/hdoc/