washing machine
	       speed=4 washing machine
	       speed=3 washing machine
	       speed=2 washing machine

Web Authoring System Haskell (WASH)

WASH is a family of embedded domain specific languages (EDSL) for programming Web applications. Each language is embedded in the functional language Haskell, which means that it is implemented as a combinator library.

Currently, WASH has the following components which are described in more detail below.

Version History

CGI Programming

WASH/CGI is an EDSL for server-side Web scripting with Sessions, Compositional Forms, and Graphics. It features


Installation (WASH AND GO)

(tested with GHC-6.6). WARNING: the graphics part has not been updated for a long time and is likely to have problems

If you want graphics (module CGIGraphics) and you have the same setup as my machine (not that unlikely), all you have to do is create two directories /tmp/REGISTRY and /tmp/Images. If the graphics part still does not work, then consider the following hints.

Wash Server Pages

An extended version of Simon Marlow's webserver (hws) that runs WASH modules as servlets. WASH modules are compiled transparently and dynamically loaded into the running server. Each servlet runs in one of three modes: LogOnly (using a log to reconstruct the current state like WASH's CGI implementation), StateIDOnly (running a thread for each session and continuing in the same thread with each form submission), LogAndState (use a thread for efficiency and keep the log for robustness).



Wash Transactional Database Access

WASHDB provides an API for accessing a relational database using a transactional interface (inspired by Software Transactional Memory). It relies on HDBC to provide database connectivity. It is currently tested only with HDBC's PostgreSQL binding. See the Reservation programs in the main directory for example uses.


Dynamic Generation of HTML

WASH/HTML is an EDSL for generating dynamic HTML documents. WASH/HTML combines flexibility and safety in a unique way. On the one hand, the potential for generation and parameterization of documents is virtually unlimited due to the underlying functional programming language Haskell, which provides programming and abstraction facilities. On the other hand, the library guarantees well-formed and valid HTML, even with higher-order templates. These programs have been tested with Hugs98 using the Jan2001 beta release, compiled with setting NUM_INSTS to 10000 (in src/prelude.h).

Mail Programming

WASHMail is a collection of modules for reading and processing Email. It is bundled with WashNGo.

DB Programming

DBconnect is a collection of modules for using PostgreSql from Haskell programs. It is bundled with WashNGo.
Installation of DBCONNECT requires a number of prerequisites. If all this is properly installed, then the configure script of WashNGo will find everything automatically.
Peter Thiemann
Last modified: Wed Aug 30 17:57:11 CEST 2006