HWEB
0. Introduction to HWEB.
HWEB is a language for literate programming. It combines a formatting language with a programming language to allow the construction of literate programs. Here is an example of such a program, based upon a blog entry by Neil Mitchell. Here is the code submitted to the compiler. Which is easier to understand?
Both files were generated by applying HWEB to the source file 
mitchell0.hweb.
HWEB allows us to program in such a way that we can automatically obtain compiler-ready code
while preserving the structure vital to understanding our programs.
1. First steps.
A HWEB program is divided into sections. 
Each section begins with @* which marks the start of the section commentary.
Immediately following @* can come an optional section title, which is terminated by a ".".
The control code @h marks the end of the commentary and the beginning of
the code, written in Haskell. 
2.  Let's look at an easy example:
@*A very easy program.  
This program is no doubt easy to write because it does nothing. 
@h 
main = return() 
Type the above into a file called easy.hweb and then after 
installing HWEB  type
hweb0 easy0.hweb 
This will produce a literate file called easy0.shtml which you view with your browser
and an illiterate file easy0.hs which is Haskell code you can compile and run.
3.  
@h is not the only control code for introducing code.
@< introduces code that is an expansion of a specific top-level
description, a description that appears between the @< and a
@>. For example: 
@*Another easy program.
This program writes a string to the console.
@<Print a greeting@>=do{putStrLn "Hello, HWEB"}
@*. Here is the main program.
@h
main = @<Print greeting@>
Save the above in a file easy1.hweb and use HWEB to see the results.
4. Installing HWEB.
- Download hweb0.zip
 - Unzip it unto a directory called "Hweb0".
 - In the "Hweb0" directory type "ghc --make Hweb0m -o hweb0" at the command prompt. (You need GHC 6.8.3 or higher.)