Difference between revisions of "DocTest"
From HaskellWiki
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]. 

−  == 
+  ==Tutorial== 
−  Bellow is a small Haskell module 
+  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 
+  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 
+  ''result'' of that expression. Result is defined by what a [http://en.wikipedia.org/wiki/Readevalprint_loop REPL] 
−  +  (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
What is DocTest
DocTest is a small program, that checks examples in Haskell comments. It is modeled after doctest for Python.
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
Lines starting with  >
denote expressions.
All comment lines following an expression denote the
result of that expression. Result is defined by what a REPL
(e.g. ghci) prints to stdout
and stderror
when
evaluating that expression.
DocTest on Hackage
http://hackage.haskell.org/cgibin/hackagescripts/package/DocTest