# DocTest

### From HaskellWiki

(Difference between revisions)

SimonHengel (Talk | contribs) |
SimonHengel (Talk | contribs) |
||

Line 4: | Line 4: | ||

[http://docs.python.org/library/doctest.html doctest for Python]. |
[http://docs.python.org/library/doctest.html doctest for Python]. |
||

− | ==Usage== |
+ | ==Tutorial== |

− | Bellow is a small Haskell module with DocTest examples: |
+ | Bellow is a small Haskell module. The module contains source code comments. |

+ | Those comments are examples from an interactive Haskell session and demonstrate how the module is used. |
||

<haskell> |
<haskell> |
||

Line 23: | Line 23: | ||

</haskell> |
</haskell> |
||

− | DocTest checks if the implementation of <hask>fib</hask> |
+ | With DocTest you may checks if the implementation satisfies the given examples, by typing (on your Unix shell): |

− | satisfies the given examples: |
||

<pre> |
<pre> |
||

Line 32: | Line 32: | ||

Lines starting with <hask>-- ></hask> denote ''expressions''. |
Lines starting with <hask>-- ></hask> denote ''expressions''. |
||

All comment lines following an expression denote the |
All comment lines following an expression denote the |
||

− | ''result'' of that expression, where result is defined by what a |
+ | ''result'' of that expression. Result is defined by what a [http://en.wikipedia.org/wiki/Read-eval-print_loop REPL] |

− | REPL prints to standard output when evaluating that expression. |
+ | (e.g. ghci) prints to <hask>stdout</hask> and <hask>stderror</hask> when |

+ | evaluating that expression. |
||

==DocTest on Hackage== |
==DocTest on Hackage== |

## Revision as of 12:00, 22 March 2009

## Contents |

## 1 What is DocTest

DocTest is a small program, that checks examples in Haskell comments. It is modeled after doctest for Python.

## 2 Tutorial

Bellow is a small Haskell module. The module contains source code comments. Those comments are examples from an interactive Haskell session and demonstrate how the module is used.

module Fib where -- Examples: -- -- > fib 10 -- 55 -- > fib 5 -- 5 fib 0 = 0 fib 1 = 1 fib n = fib (n - 1) + fib (n - 2)

With DocTest you may checks if the implementation satisfies the given examples, by typing (on your Unix shell):

$ doctest Fib.hs

-- >

*expressions*.

All comment lines following an expression denote the
*result* of that expression. Result is defined by what a REPL

stdout

stderror

evaluating that expression.

## 3 DocTest on Hackage

http://hackage.haskell.org/cgi-bin/hackage-scripts/package/DocTest