<html xmlns="http://www.w3.org/1999/xhtml"
><head
><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"
/><meta name="viewport" content="width=device-width, initial-scale=1"
/><title
>Test</title
><link href="#" rel="stylesheet" type="text/css" title="NewOcean"
/><link rel="stylesheet" type="text/css" href="#"
/><link rel="stylesheet" type="text/css" href="#"
/><script src="haddock-bundle.min.js" async="async" type="text/javascript"
></script
><script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS-MML_HTMLorMML" type="text/javascript"
></script
></head
><body
><div id="package-header"
><span class="caption empty"
></span
><ul class="links" id="page-menu"
><li
><a href="#"
>Contents</a
></li
><li
><a href="#"
>Index</a
></li
></ul
></div
><div id="content"
><div id="module-header"
><table class="info"
><tr
><th valign="top"
>Copyright</th
><td
>(c) Simon Marlow 2002</td
></tr
><tr
><th
>License</th
><td
>BSD-style</td
></tr
><tr
><th
>Maintainer</th
><td
>libraries@haskell.org</td
></tr
><tr
><th
>Stability</th
><td
>provisional</td
></tr
><tr
><th
>Portability</th
><td
>portable</td
></tr
><tr
><th
>Safe Haskell</th
><td
>Safe</td
></tr
></table
><p class="caption"
>Test</p
></div
><div id="table-of-contents"
><p class="caption"
>Contents</p
><ul
><li
><a href="#"
>Type declarations</a
><ul
><li
><a href="#"
>Data types</a
></li
><li
><a href="#"
>Records</a
></li
></ul
></li
><li
><a href="#"
>Class declarations</a
></li
><li
><a href="#"
>Function types</a
></li
><li
><a href="#"
>Auxiliary stuff</a
></li
><li
><a href="#"
>A hidden module</a
></li
><li
><a href="#"
>A visible module</a
></li
><li
><a href="#"
>Existential / Universal types</a
></li
><li
><a href="#"
>Type signatures with argument docs</a
></li
><li
><a href="#"
>A section</a
><ul
><li
><a href="#"
>A subsection</a
></li
></ul
></li
></ul
></div
><div id="description"
><p class="caption"
>Description</p
><div class="doc"
><p
>This module illustrates & tests most of the features of Haddock.
Testing references from the description: <code
><a href="#" title="Test"
>T</a
></code
>, <code
><a href="#" title="Test"
>f</a
></code
>, <code
><a href="#" title="Test"
>g</a
></code
>, <code
><a href="#" title="Visible"
>visible</a
></code
>.</p
></div
></div
><div id="synopsis"
><details id="syn"
><summary
>Synopsis</summary
><ul class="details-toggle" data-details-id="syn"
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>T</a
> a b<ul class="subs"
><li
>= <a href="#"
>A</a
> <a href="#" title="Data.Int"
>Int</a
> (<a href="#" title="GHC.Maybe"
>Maybe</a
> <a href="#" title="Prelude"
>Float</a
>)</li
><li
>| <a href="#"
>B</a
> (<a href="#" title="Test"
>T</a
> a b, <a href="#" title="Test"
>T</a
> <a href="#" title="Data.Int"
>Int</a
> <a href="#" title="Prelude"
>Float</a
>)</li
></ul
></li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>T2</a
> a b</li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>T3</a
> a b<ul class="subs"
><li
>= <a href="#"
>A1</a
> a</li
><li
>| <a href="#"
>B1</a
> b</li
></ul
></li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>T4</a
> a b<ul class="subs"
><li
>= <a href="#"
>A2</a
> a</li
><li
>| <a href="#"
>B2</a
> b</li
></ul
></li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>T5</a
> a b<ul class="subs"
><li
>= <a href="#"
>A3</a
> a</li
><li
>| <a href="#"
>B3</a
> b</li
></ul
></li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>T6</a
><ul class="subs"
><li
>= <a href="#"
>A4</a
></li
><li
>| <a href="#"
>B4</a
></li
><li
>| <a href="#"
>C4</a
></li
></ul
></li
><li class="src short"
><span class="keyword"
>newtype</span
> <a href="#"
>N1</a
> a = <a href="#"
>N1</a
> a</li
><li class="src short"
><span class="keyword"
>newtype</span
> <a href="#"
>N2</a
> a b = <a href="#"
>N2</a
> {<ul class="subs"
><li
><a href="#"
>n</a
> :: a b</li
></ul
>}</li
><li class="src short"
><span class="keyword"
>newtype</span
> <a href="#"
>N3</a
> a b = <a href="#"
>N3</a
> {<ul class="subs"
><li
><a href="#"
>n3</a
> :: a b</li
></ul
>}</li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>N4</a
> a b</li
><li class="src short"
><span class="keyword"
>newtype</span
> <a href="#"
>N5</a
> a b = <a href="#"
>N5</a
> {<ul class="subs"
><li
><a href="#"
>n5</a
> :: a b</li
></ul
>}</li
><li class="src short"
><span class="keyword"
>newtype</span
> <a href="#"
>N6</a
> a b = <a href="#"
>N6</a
> {<ul class="subs"
><li
><a href="#"
>n6</a
> :: a b</li
></ul
>}</li
><li class="src short"
><span class="keyword"
>newtype</span
> <a href="#"
>N7</a
> a b = <a href="#"
>N7</a
> {<ul class="subs"
><li
><a href="#"
>n7</a
> :: a b</li
></ul
>}</li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>R</a
><ul class="subs"
><li
>= <a href="#"
>C1</a
> { <ul class="subs"
><li
><a href="#"
>p</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
><li
><a href="#"
>q</a
> :: <span class="keyword"
>forall</span
> a. a -> a</li
><li
><a href="#"
>r</a
>, <a href="#"
>s</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
></ul
> }</li
><li
>| <a href="#"
>C2</a
> { <ul class="subs"
><li
><a href="#"
>t</a
> :: T1 -> <a href="#" title="Test"
>T2</a
> <a href="#" title="Data.Int"
>Int</a
> <a href="#" title="Data.Int"
>Int</a
> -> <a href="#" title="Test"
>T3</a
> <a href="#" title="Data.Bool"
>Bool</a
> <a href="#" title="Data.Bool"
>Bool</a
> -> <a href="#" title="Test"
>T4</a
> <a href="#" title="Prelude"
>Float</a
> <a href="#" title="Prelude"
>Float</a
> -> <a href="#" title="Test"
>T5</a
> () ()</li
><li
><a href="#"
>u</a
>, <a href="#"
>v</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
></ul
> }</li
></ul
></li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>R1</a
> = <a href="#"
>C3</a
> {<ul class="subs"
><li
><a href="#"
>s1</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
><li
><a href="#"
>s2</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
><li
><a href="#"
>s3</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
></ul
>}</li
><li class="src short"
><a href="#"
>p</a
> :: <a href="#" title="Test"
>R</a
> -> <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
><a href="#"
>q</a
> :: <a href="#" title="Test"
>R</a
> -> <span class="keyword"
>forall</span
> a. a -> a</li
><li class="src short"
><a href="#"
>u</a
> :: <a href="#" title="Test"
>R</a
> -> <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
><span class="keyword"
>class</span
> <a href="#" title="Test"
>D</a
> a => <a href="#"
>C</a
> a <span class="keyword"
>where</span
><ul class="subs"
><li
><a href="#"
>a</a
> :: <a href="#" title="System.IO"
>IO</a
> a</li
><li
><a href="#"
>b</a
> :: [a]</li
></ul
></li
><li class="src short"
><span class="keyword"
>class</span
> <a href="#"
>D</a
> a <span class="keyword"
>where</span
><ul class="subs"
><li
><a href="#"
>d</a
> :: <a href="#" title="Test"
>T</a
> a b</li
><li
><a href="#"
>e</a
> :: (a, a)</li
></ul
></li
><li class="src short"
><span class="keyword"
>class</span
> <a href="#"
>E</a
> a</li
><li class="src short"
><span class="keyword"
>class</span
> <a href="#"
>F</a
> a <span class="keyword"
>where</span
><ul class="subs"
><li
><a href="#"
>ff</a
> :: a</li
></ul
></li
><li class="src short"
><a href="#"
>a</a
> :: <a href="#" title="Test"
>C</a
> a => <a href="#" title="System.IO"
>IO</a
> a</li
><li class="src short"
><a href="#"
>f</a
> :: <a href="#" title="Test"
>C</a
> a => a -> <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
><a href="#"
>g</a
> :: <a href="#" title="Data.Int"
>Int</a
> -> <a href="#" title="System.IO"
>IO</a
> CInt</li
><li class="src short"
><a href="#"
>hidden</a
> :: <a href="#" title="Data.Int"
>Int</a
> -> <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
>module <a href="#"
>Visible</a
></li
><li class="src short"
><span class="keyword"
>data</span
> <a href="#"
>Ex</a
> a<ul class="subs"
><li
>= <a href="#" title="Test"
>C</a
> b => <a href="#"
>Ex1</a
> b</li
><li
>| <a href="#"
>Ex2</a
> b</li
><li
>| <a href="#" title="Test"
>C</a
> a => <a href="#"
>Ex3</a
> b</li
><li
>| <a href="#"
>Ex4</a
> (<span class="keyword"
>forall</span
> a. a -> a)</li
></ul
></li
><li class="src short"
><a href="#"
>k</a
> :: <a href="#" title="Test"
>T</a
> () () -> <a href="#" title="Test"
>T2</a
> <a href="#" title="Data.Int"
>Int</a
> <a href="#" title="Data.Int"
>Int</a
> -> (<a href="#" title="Test"
>T3</a
> <a href="#" title="Data.Bool"
>Bool</a
> <a href="#" title="Data.Bool"
>Bool</a
> -> <a href="#" title="Test"
>T4</a
> <a href="#" title="Prelude"
>Float</a
> <a href="#" title="Prelude"
>Float</a
>) -> <a href="#" title="Test"
>T5</a
> () () -> <a href="#" title="System.IO"
>IO</a
> ()</li
><li class="src short"
><a href="#"
>l</a
> :: (<a href="#" title="Data.Int"
>Int</a
>, <a href="#" title="Data.Int"
>Int</a
>, <a href="#" title="Prelude"
>Float</a
>) -> <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
><a href="#"
>m</a
> :: <a href="#" title="Test"
>R</a
> -> <a href="#" title="Test"
>N1</a
> () -> <a href="#" title="System.IO"
>IO</a
> <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
><a href="#"
>o</a
> :: <a href="#" title="Prelude"
>Float</a
> -> <a href="#" title="System.IO"
>IO</a
> <a href="#" title="Prelude"
>Float</a
></li
><li class="src short"
><a href="#"
>f'</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
><a href="#"
>withType</a
> :: <a href="#" title="Data.Int"
>Int</a
></li
><li class="src short"
><a href="#"
>withoutType</a
> :: a</li
></ul
></details
></div
><div id="interface"
><a href="#" id="g:1"
><h1
>Type declarations</h1
></a
><a href="#" id="g:2"
><h2
>Data types</h2
></a
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:T" class="def"
>T</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>This comment applies to the <em
>following</em
> declaration
and it continues until the next non-comment line</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:A" class="def"
>A</a
> <a href="#" title="Data.Int"
>Int</a
> (<a href="#" title="GHC.Maybe"
>Maybe</a
> <a href="#" title="Prelude"
>Float</a
>)</td
><td class="doc"
><p
>This comment describes the <code
><a href="#" title="Test"
>A</a
></code
> constructor</p
></td
></tr
><tr
><td class="src"
><a id="v:B" class="def"
>B</a
> (<a href="#" title="Test"
>T</a
> a b, <a href="#" title="Test"
>T</a
> <a href="#" title="Data.Int"
>Int</a
> <a href="#" title="Prelude"
>Float</a
>)</td
><td class="doc"
><p
>This comment describes the <code
><a href="#" title="Test"
>B</a
></code
> constructor</p
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:T2" class="def"
>T2</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>An abstract data declaration</p
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:T3" class="def"
>T3</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>A data declaration with no documentation annotations on the constructors</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:A1" class="def"
>A1</a
> a</td
><td class="doc empty"
></td
></tr
><tr
><td class="src"
><a id="v:B1" class="def"
>B1</a
> b</td
><td class="doc empty"
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:T4" class="def"
>T4</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:A2" class="def"
>A2</a
> a</td
><td class="doc empty"
></td
></tr
><tr
><td class="src"
><a id="v:B2" class="def"
>B2</a
> b</td
><td class="doc empty"
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:T5" class="def"
>T5</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:A3" class="def"
>A3</a
> a</td
><td class="doc"
><p
>documents <code
><a href="#" title="Test"
>A3</a
></code
></p
></td
></tr
><tr
><td class="src"
><a id="v:B3" class="def"
>B3</a
> b</td
><td class="doc"
><p
>documents <code
><a href="#" title="Test"
>B3</a
></code
></p
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:T6" class="def"
>T6</a
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>Testing alternative comment styles</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:A4" class="def"
>A4</a
></td
><td class="doc"
><p
>This is the doc for <code
><a href="#" title="Test"
>A4</a
></code
></p
></td
></tr
><tr
><td class="src"
><a id="v:B4" class="def"
>B4</a
></td
><td class="doc"
><p
>This is the doc for <code
><a href="#" title="Test"
>B4</a
></code
></p
></td
></tr
><tr
><td class="src"
><a id="v:C4" class="def"
>C4</a
></td
><td class="doc"
><p
>This is the doc for <code
><a href="#" title="Test"
>C4</a
></code
></p
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>newtype</span
> <a id="t:N1" class="def"
>N1</a
> a <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>A newtype</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:N1" class="def"
>N1</a
> a</td
><td class="doc empty"
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>newtype</span
> <a id="t:N2" class="def"
>N2</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>A newtype with a fieldname</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:N2" class="def"
>N2</a
></td
><td class="doc empty"
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:n" class="def"
>n</a
> :: a b</dfn
><div class="doc empty"
></div
></li
></ul
></div
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>newtype</span
> <a id="t:N3" class="def"
>N3</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>A newtype with a fieldname, documentation on the field</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:N3" class="def"
>N3</a
></td
><td class="doc empty"
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:n3" class="def"
>n3</a
> :: a b</dfn
><div class="doc"
><p
>this is the <code
><a href="#" title="Test"
>n3</a
></code
> field</p
></div
></li
></ul
></div
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:N4" class="def"
>N4</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>An abstract newtype - we show this one as data rather than newtype because
the difference isn't visible to the programmer for an abstract type.</p
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>newtype</span
> <a id="t:N5" class="def"
>N5</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:N5" class="def"
>N5</a
></td
><td class="doc empty"
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:n5" class="def"
>n5</a
> :: a b</dfn
><div class="doc"
><p
>no docs on the datatype or the constructor</p
></div
></li
></ul
></div
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>newtype</span
> <a id="t:N6" class="def"
>N6</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:N6" class="def"
>N6</a
></td
><td class="doc"
><p
>docs on the constructor only</p
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:n6" class="def"
>n6</a
> :: a b</dfn
><div class="doc empty"
></div
></li
></ul
></div
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>newtype</span
> <a id="t:N7" class="def"
>N7</a
> a b <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>docs on the newtype and the constructor</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:N7" class="def"
>N7</a
></td
><td class="doc"
><p
>The <code
><a href="#" title="Test"
>N7</a
></code
> constructor</p
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:n7" class="def"
>n7</a
> :: a b</dfn
><div class="doc empty"
></div
></li
></ul
></div
></td
></tr
></table
></div
></div
><a href="#" id="g:3"
><h2
>Records</h2
></a
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:R" class="def"
>R</a
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>This is the documentation for the <code
><a href="#" title="Test"
>R</a
></code
> record, which has four fields,
<code
><a href="#" title="Test"
>p</a
></code
>, <code
><a href="#" title="Test"
>q</a
></code
>, <code
><a href="#" title="Test"
>r</a
></code
>, and <code
><a href="#" title="Test"
>s</a
></code
>.</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:C1" class="def"
>C1</a
></td
><td class="doc"
><p
>This is the <code
><a href="#" title="Test"
>C1</a
></code
> record constructor, with the following fields:</p
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:p" class="def"
>p</a
> :: <a href="#" title="Data.Int"
>Int</a
></dfn
><div class="doc"
><p
>This comment applies to the <code
><a href="#" title="Test"
>p</a
></code
> field</p
></div
></li
><li
><dfn class="src"
><a id="v:q" class="def"
>q</a
> :: <span class="keyword"
>forall</span
> a. a -> a</dfn
><div class="doc"
><p
>This comment applies to the <code
><a href="#" title="Test"
>q</a
></code
> field</p
></div
></li
><li
><dfn class="src"
><a id="v:r" class="def"
>r</a
>, <a id="v:s" class="def"
>s</a
> :: <a href="#" title="Data.Int"
>Int</a
></dfn
><div class="doc"
><p
>This comment applies to both <code
><a href="#" title="Test"
>r</a
></code
> and <code
><a href="#" title="Test"
>s</a
></code
></p
></div
></li
></ul
></div
></td
></tr
><tr
><td class="src"
><a id="v:C2" class="def"
>C2</a
></td
><td class="doc"
><p
>This is the <code
><a href="#" title="Test"
>C2</a
></code
> record constructor, also with some fields:</p
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:t" class="def"
>t</a
> :: T1 -> <a href="#" title="Test"
>T2</a
> <a href="#" title="Data.Int"
>Int</a
> <a href="#" title="Data.Int"
>Int</a
> -> <a href="#" title="Test"
>T3</a
> <a href="#" title="Data.Bool"
>Bool</a
> <a href="#" title="Data.Bool"
>Bool</a
> -> <a href="#" title="Test"
>T4</a
> <a href="#" title="Prelude"
>Float</a
> <a href="#" title="Prelude"
>Float</a
> -> <a href="#" title="Test"
>T5</a
> () ()</dfn
><div class="doc empty"
></div
></li
><li
><dfn class="src"
><a id="v:u" class="def"
>u</a
>, <a id="v:v" class="def"
>v</a
> :: <a href="#" title="Data.Int"
>Int</a
></dfn
><div class="doc empty"
></div
></li
></ul
></div
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:R1" class="def"
>R1</a
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>Testing different record commenting styles</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a id="v:C3" class="def"
>C3</a
></td
><td class="doc"
><p
>This is the <code
><a href="#" title="Test"
>C3</a
></code
> record constructor</p
></td
></tr
><tr
><td colspan="2"
><div class="subs fields"
><p class="caption"
>Fields</p
><ul
><li
><dfn class="src"
><a id="v:s1" class="def"
>s1</a
> :: <a href="#" title="Data.Int"
>Int</a
></dfn
><div class="doc"
><p
>The <code
><a href="#" title="Test"
>s1</a
></code
> record selector</p
></div
></li
><li
><dfn class="src"
><a id="v:s2" class="def"
>s2</a
> :: <a href="#" title="Data.Int"
>Int</a
></dfn
><div class="doc"
><p
>The <code
><a href="#" title="Test"
>s2</a
></code
> record selector</p
></div
></li
><li
><dfn class="src"
><a id="v:s3" class="def"
>s3</a
> :: <a href="#" title="Data.Int"
>Int</a
></dfn
><div class="doc"
><p
>The <code
><a href="#" title="Test"
>s3</a
></code
> record selector</p
></div
></li
></ul
></div
></td
></tr
></table
></div
></div
><div class="doc"
><p
>test that we can export record selectors on their own:</p
></div
><div class="top"
><p class="src"
><a id="v:p" class="def"
>p</a
> :: <a href="#" title="Test"
>R</a
> -> <a href="#" title="Data.Int"
>Int</a
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>This comment applies to the <code
><a href="#" title="Test"
>p</a
></code
> field</p
></div
></div
><div class="top"
><p class="src"
><a id="v:q" class="def"
>q</a
> :: <a href="#" title="Test"
>R</a
> -> <span class="keyword"
>forall</span
> a. a -> a <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>This comment applies to the <code
><a href="#" title="Test"
>q</a
></code
> field</p
></div
></div
><div class="top"
><p class="src"
><a id="v:u" class="def"
>u</a
> :: <a href="#" title="Test"
>R</a
> -> <a href="#" title="Data.Int"
>Int</a
> <a href="#" class="selflink"
>#</a
></p
></div
><a href="#" id="g:4"
><h1
>Class declarations</h1
></a
><div class="top"
><p class="src"
><span class="keyword"
>class</span
> <a href="#" title="Test"
>D</a
> a => <a id="t:C" class="def"
>C</a
> a <span class="keyword"
>where</span
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>This comment applies to the <em
>previous</em
> declaration (the <code
><a href="#" title="Test"
>C</a
></code
> class)</p
></div
><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
><a id="v:a" class="def"
>a</a
> :: <a href="#" title="System.IO"
>IO</a
> a <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>this is a description of the <code
><a href="#" title="Test"
>a</a
></code
> method</p
></div
><p class="src"
><a id="v:b" class="def"
>b</a
> :: [a] <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>this is a description of the <code
><a href="#" title="Test"
>b</a
></code
> method</p
></div
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>class</span
> <a id="t:D" class="def"
>D</a
> a <span class="keyword"
>where</span
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>This is a class declaration with no separate docs for the methods</p
></div
><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
><a id="v:d" class="def"
>d</a
> :: <a href="#" title="Test"
>T</a
> a b <a href="#" class="selflink"
>#</a
></p
><p class="src"
><a id="v:e" class="def"
>e</a
> :: (a, a) <a href="#" class="selflink"
>#</a
></p
></div
><div class="subs instances"
><details id="i:D" open="open"
><summary
>Instances</summary
><table
><tr
><td class="src clearfix"
><span class="inst-left"
><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:D:D:1"
></span
> <a href="#" title="Test"
>D</a
> <a href="#" title="Prelude"
>Float</a
></span
> <a href="#" class="selflink"
>#</a
></td
><td class="doc empty"
></td
></tr
><tr
><td colspan="2"
><details id="i:ic:D:D:1"
><summary class="hide-when-js-enabled"
>Instance details</summary
><p
>Defined in <a href="#"
>Test</a
></p
> <div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
><a href="#"
>d</a
> :: <a href="#" title="Test"
>T</a
> <a href="#" title="Prelude"
>Float</a
> b <a href="#" class="selflink"
>#</a
></p
><p class="src"
><a href="#"
>e</a
> :: (<a href="#" title="Prelude"
>Float</a
>, <a href="#" title="Prelude"
>Float</a
>) <a href="#" class="selflink"
>#</a
></p
></div
></details
></td
></tr
><tr
><td class="src clearfix"
><span class="inst-left"
><span class="instance details-toggle-control details-toggle" data-details-id="i:ic:D:D:2"
></span
> <a href="#" title="Test"
>D</a
> <a href="#" title="Data.Int"
>Int</a
></span
> <a href="#" class="selflink"
>#</a
></td
><td class="doc empty"
></td
></tr
><tr
><td colspan="2"
><details id="i:ic:D:D:2"
><summary class="hide-when-js-enabled"
>Instance details</summary
><p
>Defined in <a href="#"
>Test</a
></p
> <div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
><a href="#"
>d</a
> :: <a href="#" title="Test"
>T</a
> <a href="#" title="Data.Int"
>Int</a
> b <a href="#" class="selflink"
>#</a
></p
><p class="src"
><a href="#"
>e</a
> :: (<a href="#" title="Data.Int"
>Int</a
>, <a href="#" title="Data.Int"
>Int</a
>) <a href="#" class="selflink"
>#</a
></p
></div
></details
></td
></tr
></table
></details
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>class</span
> <a id="t:E" class="def"
>E</a
> a <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>This is a class declaration with no methods (or no methods exported)</p
></div
><div class="subs minimal"
><p class="caption"
>Minimal complete definition</p
><p class="src"
>ee</p
></div
></div
><div class="top"
><p class="src"
><span class="keyword"
>class</span
> <a id="t:F" class="def"
>F</a
> a <span class="keyword"
>where</span
> <a href="#" class="selflink"
>#</a
></p
><div class="subs methods"
><p class="caption"
>Methods</p
><p class="src"
><a id="v:ff" class="def"
>ff</a
> :: a <a href="#" class="selflink"
>#</a
></p
></div
></div
><div class="doc"
><p
>Test that we can export a class method on its own:</p
></div
><div class="top"
><p class="src"
><a id="v:a" class="def"
>a</a
> :: <a href="#" title="Test"
>C</a
> a => <a href="#" title="System.IO"
>IO</a
> a <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>this is a description of the <code
><a href="#" title="Test"
>a</a
></code
> method</p
></div
></div
><a href="#" id="g:5"
><h1
>Function types</h1
></a
><div class="top"
><p class="src"
><a id="v:f" class="def"
>f</a
> :: <a href="#" title="Test"
>C</a
> a => a -> <a href="#" title="Data.Int"
>Int</a
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>In a comment string we can refer to identifiers in scope with
single quotes like this: <code
><a href="#" title="Test"
>T</a
></code
>, and we can refer to modules by
using double quotes: <a href="#"
>Foo</a
>. We can add emphasis <em
>like this</em
>.</p
><ul
><li
>This is a bulleted list</li
><li
>This is the next item (different kind of bullet)</li
></ul
><ol
><li
>This is an ordered list</li
><li
>This is the next item (different kind of bullet)</li
></ol
><dl
><dt
>cat</dt
><dd
>a small, furry, domesticated mammal</dd
><dt
>pineapple</dt
><dd
>a fruit grown in the tropics</dd
></dl
><pre
> This is a block of code, which can include other markup: <code
><a href="#" title="Test"
>R</a
></code
>
formatting
is
significant
</pre
><pre
>this is another block of code</pre
><p
>We can also include URLs in documentation: <a href="#"
>http://www.haskell.org/</a
>.</p
></div
></div
><div class="top"
><p class="src"
><a id="v:g" class="def"
>g</a
> :: <a href="#" title="Data.Int"
>Int</a
> -> <a href="#" title="System.IO"
>IO</a
> CInt <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>we can export foreign declarations too</p
></div
></div
><a href="#" id="g:6"
><h1
>Auxiliary stuff</h1
></a
><div class="doc"
><p
>This is some documentation that is attached to a name ($aux1)
rather than a source declaration. The documentation may be
referred to in the export list using its name.</p
><pre
> code block in named doc</pre
></div
><div class="doc"
><p
>This is some documentation that is attached to a name ($aux2)</p
></div
><div class="doc"
><pre
> code block on its own in named doc</pre
></div
><div class="doc"
><pre
> code block on its own in named doc (after newline)</pre
></div
><div class="doc"
><p
>a nested, named doc comment</p
><p
>with a paragraph,</p
><pre
> and a code block</pre
></div
><div class="doc"
><pre
>test
test1</pre
><pre
> test2
test3
</pre
></div
><div class="doc"
><pre
>test1
test2
</pre
></div
><div class="doc"
><pre
>test3
test4</pre
></div
><div class="doc"
><pre
>test1
test2
</pre
><pre
>test3
test4</pre
></div
><div class="doc"
><pre
>test3
test4</pre
><pre
>test1
test2
</pre
></div
><div class="doc"
><p
>aux11:</p
><pre
>test3
test4</pre
><pre
>test1
test2
</pre
></div
><div class="doc"
><pre
>foo</pre
><pre
>bar</pre
></div
><div class="doc"
><p
>This is some inline documentation in the export list</p
><pre
>a code block using bird-tracks
each line must begin with > (which isn't significant unless it
is at the beginning of the line).</pre
></div
><a href="#" id="g:7"
><h1
>A hidden module</h1
></a
><div class="top"
><p class="src"
><a id="v:hidden" class="def"
>hidden</a
> :: <a href="#" title="Data.Int"
>Int</a
> -> <a href="#" title="Data.Int"
>Int</a
> <a href="#" class="selflink"
>#</a
></p
></div
><a href="#" id="g:8"
><h1
>A visible module</h1
></a
><div class="top"
><p class="src"
>module <a href="#"
>Visible</a
></p
></div
><div class="doc"
><p
>nested-style doc comments </p
></div
><a href="#" id="g:9"
><h1
>Existential / Universal types</h1
></a
><div class="top"
><p class="src"
><span class="keyword"
>data</span
> <a id="t:Ex" class="def"
>Ex</a
> a <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>A data-type using existential/universal types</p
></div
><div class="subs constructors"
><p class="caption"
>Constructors</p
><table
><tr
><td class="src"
><a href="#" title="Test"
>C</a
> b => <a id="v:Ex1" class="def"
>Ex1</a
> b</td
><td class="doc empty"
></td
></tr
><tr
><td class="src"
><a id="v:Ex2" class="def"
>Ex2</a
> b</td
><td class="doc empty"
></td
></tr
><tr
><td class="src"
><a href="#" title="Test"
>C</a
> a => <a id="v:Ex3" class="def"
>Ex3</a
> b</td
><td class="doc empty"
></td
></tr
><tr
><td class="src"
><a id="v:Ex4" class="def"
>Ex4</a
> (<span class="keyword"
>forall</span
> a. a -> a)</td
><td class="doc empty"
></td
></tr
></table
></div
></div
><a href="#" id="g:10"
><h1
>Type signatures with argument docs</h1
></a
><div class="top"
><p class="src"
><a id="v:k" class="def"
>k</a
> <a href="#" class="selflink"
>#</a
></p
><div class="subs arguments"
><p class="caption"
>Arguments</p
><table
><tr
><td class="src"
>:: <a href="#" title="Test"
>T</a
> () ()</td
><td class="doc"
><p
>This argument has type <code
><a href="#" title="Test"
>T</a
></code
></p
></td
></tr
><tr
><td class="src"
>-> <a href="#" title="Test"
>T2</a
> <a href="#" title="Data.Int"
>Int</a
> <a href="#" title="Data.Int"
>Int</a
></td
><td class="doc"
><p
>This argument has type 'T2 Int Int'</p
></td
></tr
><tr
><td class="src"
>-> (<a href="#" title="Test"
>T3</a
> <a href="#" title="Data.Bool"
>Bool</a
> <a href="#" title="Data.Bool"
>Bool</a
> -> <a href="#" title="Test"
>T4</a
> <a href="#" title="Prelude"
>Float</a
> <a href="#" title="Prelude"
>Float</a
>)</td
><td class="doc"
><p
>This argument has type <code
>T3 Bool Bool -> T4 Float Float</code
></p
></td
></tr
><tr
><td class="src"
>-> <a href="#" title="Test"
>T5</a
> () ()</td
><td class="doc"
><p
>This argument has a very long description that should
hopefully cause some wrapping to happen when it is finally
rendered by Haddock in the generated HTML page.</p
></td
></tr
><tr
><td class="src"
>-> <a href="#" title="System.IO"
>IO</a
> ()</td
><td class="doc"
><p
>This is the result type</p
></td
></tr
></table
></div
><div class="doc"
><p
>This is a function with documentation for each argument</p
></div
></div
><div class="top"
><p class="src"
><a id="v:l" class="def"
>l</a
> <a href="#" class="selflink"
>#</a
></p
><div class="subs arguments"
><p class="caption"
>Arguments</p
><table
><tr
><td class="src"
>:: (<a href="#" title="Data.Int"
>Int</a
>, <a href="#" title="Data.Int"
>Int</a
>, <a href="#" title="Prelude"
>Float</a
>)</td
><td class="doc"
><p
>takes a triple</p
></td
></tr
><tr
><td class="src"
>-> <a href="#" title="Data.Int"
>Int</a
></td
><td class="doc"
><p
>returns an <code
><a href="#" title="Data.Int"
>Int</a
></code
></p
></td
></tr
></table
></div
></div
><div class="top"
><p class="src"
><a id="v:m" class="def"
>m</a
> <a href="#" class="selflink"
>#</a
></p
><div class="subs arguments"
><p class="caption"
>Arguments</p
><table
><tr
><td class="src"
>:: <a href="#" title="Test"
>R</a
></td
><td class="doc empty"
></td
></tr
><tr
><td class="src"
>-> <a href="#" title="Test"
>N1</a
> ()</td
><td class="doc"
><p
>one of the arguments</p
></td
></tr
><tr
><td class="src"
>-> <a href="#" title="System.IO"
>IO</a
> <a href="#" title="Data.Int"
>Int</a
></td
><td class="doc"
><p
>and the return value</p
></td
></tr
></table
></div
><div class="doc"
><p
>This function has some arg docs</p
></div
></div
><div class="top"
><p class="src"
><a id="v:o" class="def"
>o</a
> <a href="#" class="selflink"
>#</a
></p
><div class="subs arguments"
><p class="caption"
>Arguments</p
><table
><tr
><td class="src"
>:: <a href="#" title="Prelude"
>Float</a
></td
><td class="doc"
><p
>The input float</p
></td
></tr
><tr
><td class="src"
>-> <a href="#" title="System.IO"
>IO</a
> <a href="#" title="Prelude"
>Float</a
></td
><td class="doc"
><p
>The output float</p
></td
></tr
></table
></div
><div class="doc"
><p
>A foreign import with argument docs</p
></div
></div
><a href="#" id="g:11"
><h1
>A section</h1
></a
><a href="#" id="g:12"
><h2
>A subsection</h2
></a
><div class="doc"
><pre
>a literal line</pre
><p
>$ a non <em
>literal</em
> line $</p
></div
><div class="top"
><p class="src"
><a id="v:f-39-" class="def"
>f'</a
> :: <a href="#" title="Data.Int"
>Int</a
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>a function with a prime can be referred to as <code
><a href="#" title="Test"
>f'</a
></code
>
but f' doesn't get link'd 'f\''</p
></div
></div
><div class="top"
><p class="src"
><a id="v:withType" class="def"
>withType</a
> :: <a href="#" title="Data.Int"
>Int</a
> <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>Comment on a definition with type signature</p
></div
></div
><div class="top"
><p class="src"
><a id="v:withoutType" class="def"
>withoutType</a
> :: a <a href="#" class="selflink"
>#</a
></p
><div class="doc"
><p
>Comment on a definition without type signature</p
></div
></div
></div
></div
><div id="footer"
></div
></body
></html
>