|
| Test | | Portability | portable | | Stability | provisional | | Maintainer | libraries@haskell.org |
|
|
|
|
|
| Description |
| This module illustrates & tests most of the features of Haddock.
Testing references from the description: T, f, g, visible.
|
|
| Synopsis |
|
| data T a b | | = A Int (Maybe Float) | | | B (T a b, T Int Float) |
|
| | | data T2 a b | | | | | | | | | | | newtype N1 a = N1 a | | | newtype N2 a b = N2 {} | | | newtype N3 a b = N3 {} | | | data N4 a b | | | newtype N5 a b = N5 {} | | | newtype N6 a b = N6 {} | | | newtype N7 a b = N7 {} | | | data R | = C1 {| p :: Int | | q :: forall a. a -> a | | r :: Int | | s :: Int | } | | C2 {| t :: T1 -> T2 Int Int -> T3 Bool Bool -> T4 Float Float -> T5 () () | | u :: Int | | v :: Int | } |
|
| | | data R1 = C3 {} | | | p :: R -> Int | | | q :: R -> forall a. a -> a | | | u :: R -> Int | | | class D a => C a where | | | | class D a where | | | | class E a | | | class F a where | | | | a :: C a => IO a | | | f :: C a => a -> Int | | | g :: Int -> IO CInt | | | hidden :: Int -> Int | | | module Visible | | | data Ex a | | = forall b . C b => Ex1 b | | | forall b . Ex2 b | | | forall b . C a => Ex3 b | | | Ex4 (forall a. a -> a) |
|
| | | k :: T () () -> T2 Int Int -> (T3 Bool Bool -> T4 Float Float) -> T5 () () -> IO () | | | l :: (Int, Int, Float) -> Int | | | m :: R -> N1 () -> IO Int | | | o :: Float -> IO Float | | | f' :: Int |
|
|
|
| Type declarations
|
|
| Data types
|
|
| data T a b |
| This comment applies to the following declaration
and it continues until the next non-comment line
| | Constructors | | A Int (Maybe Float) | This comment describes the A constructor
| | B (T a b, T Int Float) | This comment describes the B constructor
|
|
|
|
| data T2 a b |
| An abstract data declaration
|
|
|
| data T3 a b |
| A data declaration with no documentation annotations on the constructors
| | Constructors | |
|
|
| data T4 a b |
|
|
| data T5 a b |
| Constructors | | A3 a | documents A3
| | B3 b | documents B3
|
|
|
|
| data T6 |
| Testing alternative comment styles
| | Constructors | | A4 | This is the doc for A4
| | B4 | This is the doc for B4
| | C4 | This is the doc for C4
|
|
|
|
| newtype N1 a |
|
|
| newtype N2 a b |
| A newtype with a fieldname
| | Constructors | |
|
|
| newtype N3 a b |
| A newtype with a fieldname, documentation on the field
| | Constructors | | N3 | | | n3 :: a b | this is the n3 field
|
|
|
|
|
| data N4 a b |
| 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.
|
|
|
| newtype N5 a b |
| Constructors | | N5 | | | n5 :: a b | no docs on the datatype or the constructor
|
|
|
|
|
| newtype N6 a b |
| Constructors | | N6 | docs on the constructor only
| |
|
|
|
| newtype N7 a b |
| docs on the newtype and the constructor
| | Constructors | |
|
|
| Records
|
|
| data R |
| This is the documentation for the R record, which has four fields,
p, q, r, and s.
| | Constructors | | C1 | This is the C1 record constructor, with the following fields:
| | p :: Int | This comment applies to the p field
| | q :: forall a. a -> a | This comment applies to the q field
| | r :: Int | This comment applies to both r and s
| | s :: Int | This comment applies to both r and s
|
| | C2 | This is the C2 record constructor, also with some fields:
| | t :: T1 -> T2 Int Int -> T3 Bool Bool -> T4 Float Float -> T5 () () | | | u :: Int | | | v :: Int | |
|
|
|
|
| data R1 |
| Testing different record commenting styles
| | Constructors | | C3 | This is the C3 record constructor
| | s1 :: Int | The s1 record selector
| | s2 :: Int | The s2 record selector
| | s3 :: Int | The s3 record selector
|
|
|
|
|
| test that we can export record selectors on their own:
|
|
| p :: R -> Int |
| This comment applies to the p field
|
|
| q :: R -> forall a. a -> a |
| This comment applies to the q field
|
|
| u :: R -> Int |
|
| Class declarations
|
|
| class D a => C a where |
| This comment applies to the previous declaration (the C class)
| | | Methods | | a :: IO a | | this is a description of the a method
| | | b :: [a] | | this is a description of the b method
|
|
|
|
| class D a where |
| This is a class declaration with no separate docs for the methods
| | | Methods | | | Instances | |
|
|
| class E a |
| This is a class declaration with no methods (or no methods exported)
|
|
|
| class F a where |
|
|
| Test that we can export a class method on its own:
|
|
| a :: C a => IO a |
| this is a description of the a method
|
|
| Function types
|
|
| f :: C a => a -> Int |
In a comment string we can refer to identifiers in scope with
single quotes like this: T, and we can refer to modules by
using double quotes: Foo. We can add emphasis like this.
- This is a bulleted list
- This is the next item (different kind of bullet)
- This is an ordered list
2. This is the next item (different kind of bullet)
This is a block of code, which can include other markup: R
formatting
is
significant
this is another block of code
We can also include URLs in documentation: http://www.haskell.org/.
|
|
| g :: Int -> IO CInt |
| we can export foreign declarations too
|
|
| Auxiliary stuff
|
|
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.
code block in named doc |
|
| This is some documentation that is attached to a name ($aux2)
|
|
code block on its own in named doc |
|
code block on its own in named doc (after newline) |
|
a nested, named doc comment
with a paragraph,
and a code block |
|
test
test1
test2
test3
|
|
test1
test2
|
|
test3
test4
|
|
test1
test2
test3
test4
|
|
test3
test4
test1
test2
|
|
aux11:
test3
test4
test1
test2
|
|
foo
bar
|
|
This is some inline documentation in the export list
a code block using bird-tracks
each line must begin with > (which isn't significant unless it
is at the beginning of the line).
|
|
| A hidden module
|
|
| hidden :: Int -> Int |
|
| A visible module
|
|
| module Visible |
|
| nested-style doc comments
|
|
| Existential / Universal types
|
|
| data Ex a |
| A data-type using existential/universal types
| | Constructors | | forall b . C b => Ex1 b | | | forall b . Ex2 b | | | forall b . C a => Ex3 b | | | Ex4 (forall a. a -> a) | |
|
|
|
| Type signatures with argument docs
|
|
| k |
| :: T () () | This argument has type T
| | -> T2 Int Int | This argument has type 'T2 Int Int'
| | -> T3 Bool Bool -> T4 Float Float | This argument has type T3 Bool Bool -> T4 Float Float
| | -> T5 () () | 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.
| | -> IO () | This is the result type
| | This is a function with documentation for each argument
|
|
|
| l |
| :: (Int, Int, Float) | takes a triple
| | -> Int | returns an Int
|
|
|
| m |
| :: R | | | -> N1 () | one of the arguments
| | -> IO Int | and the return value
| | This function has some arg docs
|
|
|
| o |
| :: Float | The input float
| | -> IO Float | The output float
| | A foreign import with argument docs
|
|
|
| A section
|
|
| A subsection
|
|
a literal line
$ a non literal line $
|
|
| f' :: Int |
| a function with a prime can be referred to as f'
but f' doesn't get link'd 'f\''
|
|
| Produced by Haddock version 2.4.2 |