|
|
|
|
|
Description |
Implementation of fixed-size hash tables, with a type
- class for constructing hash values for structured types.
- |
|
Synopsis |
|
|
|
|
The HashTable type
- |
|
data HashTable key val |
A hash table with keys of type key and values of type val.
- The type key should be an instance of Eq.
- |
|
|
Operations on HashTables
- |
|
new :: (Eq key, Hash key) => Int -> IO (HashTable key val) |
Builds a new hash table with a given size
- |
|
insert :: (Eq key, Hash key) => key -> val -> IO () |
Inserts a new element into the hash table
- |
|
lookup :: Hash key => key -> IO (Maybe val) |
Looks up a key in the hash table, returns Just val if the key
- was found, or Nothing otherwise.
- |
|
The Hash class
- |
|
class Hash a where |
A class of types which can be hashed.
- | | Methods | hash :: a -> Int | hashes the value of type a into an Int
- |
| | Instances | |
|
|
Produced by Haddock version 2.4.2 |
rmfile ./tests/output/Hash.html
hunk ./tests/output/NoLayout.html 1
-
-
- |
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 |
rmfile ./tests/output/Test.html
hunk ./tests/output/TypeOperators.html 1
-
-
-