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