WebHome
-
Releases
-
Documentation
-
Source code
Center
Center
Home
Courses
People
Projects
Page
Edit Page
Rename Page
Attach File
Printable
Wiki Source
More ...
Web
Recent Changes
Notify Service
News
Page Index
Search
More ...
Wiki
About TWiki
Text Formatting
Registration
Change Password
Reset Password
Users
Groups
Log In
or
Register
Web Home
WebFunctions
<!-- * Set PREV_SKIN = customtitle * Set CUSTOMHEADTITLE = Home page of the <nowiki>WebFunctions</wiki> Project * Set CUSTOMTOPICTITLE = <it><nowiki>WebFunctions</wiki></it> * Set WEBTITLE = --> %TOC% ---+++ Project Overview <nowiki>WebFunctions</nowiki> is a domain specific embedded language for web authoring, implemented in Haskell. The functionality of the <nowiki>WebFunctions</nowiki> framework was inspired by Apple's [[http://www.apple.com/WebObjects][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 <nowiki>WebFunctions</nowiki> 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, [[http://www.informatik.uni-freiburg.de/~thiemann/haskell/WASH/][WASH/HTML]] is used. [[http://haskelldb.sourceforge.net/][HaskellDB]] is used for database interaction. An important difference from some other Haskell software in the same field is that a <nowiki>WebFunctions</nowiki> 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. ---+++ Using <nowiki>WebFunctions</nowiki> You can download <nowiki>WebFunctions</wiki> from the [[Releases]] topic. Source code is available from [[SourceCode]]. You need a new version of the [[http://www.haskell.org/ghc][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. ---+++ <nowiki>WebFunctions</wiki> is based upon * The ideas used in the (object oriented) Apple's [[http://www.apple.com/WebObjects][WebObjects]] * [[http://www.haskell.org/~simonmar/bib/webserverjfp_abstract.html][Simon Marlow's ideas]] about writing a web server in Haskell. ---+++ <nowiki>WebFunctions</wiki> reuses * The HTML generation monad [[http://www.informatik.uni-freiburg.de/~thiemann/haskell/WASH/][defined in WASH]] * [[http://haskelldb.sourceforge.net/][HaskellDB]], for database interaction ---+++ People * Main.RobertVanHerk, for whom the development was his master thesis project * Main.DoaitseSwierstra, who supervised Robert * Main.AtzeDijkstra, who is one of our local <nowiki>WebObjects</nowiki> experts