is a domain specific embedded language for web authoring, implemented in Haskell. The functionality of the WebFunctions
framework was inspired by Apple's WebObjects
. We claim it is easier to use since the Haskell type checker makes a lot of extra checks, that are absent from the Apple framework. Unfortunately we do not yet have all the nice tooling and special editors, but we are working on this.
Some important features of the WebFunctions
system are: loose coupling between model, view and controller code, transparent handling of session and application state, the ability to run the whole web application inside a single process, type safe HTML generation and database interaction and abstracted database interaction.
For HTML generation, WASH/HTML
is used. HaskellDB
is used for database interaction.
An important difference from some other Haskell software in the same field is that a WebFunctions
application comes with a built-in web server. Because of this, no CGI is used to handle the request and the state is persistent at the server. This also means no serialization/deserialization of the state is needed.
Furthermore, a database abstraction mechanism is implemented that provides the programmer with concurrency support, caching, and transaction management per session.
You can download WebFunctions from the Releases topic. Source code is available from SourceCode.
You need a new version of the Glasgow Haskell Compiler (6.4 or newer). Cd into the
src directory and do
make. This will compile an example web application you can start by doing
./example. See Documentation for more details.
WebFunctions is based upon