I have done real production web applications in Haskell. Here is the stack I used:
- PostgreSQL database backend
- HDBC Postgres to connect to it
- XHTML to generate Html. It is a bit of a funny syntax, but at least you have lambda-abstraction.
- Fastcgi to connect the backend to the lighttpd, doing the web serving.
The whole web application is a single haskell program, compiled to native code ghc. I wrote the code to do request routing (and reverse routing) by hand.