Happstack is a flexible Haskell Web Framework with many supporting optional components.

Heist is an XML templating engine. The static portions of your templates are written in XML files which are loaded by the server at runtime. This makes it easy to modify the templates without having to recompile and restart the server. It also makes it easy to work with template designers who do not know Haskell.

The dynamic portions of the templates are generated in Haskell and are spliced into the templates. This means you have the full expressive power of Haskell at your disposal for the generated portions of the templates. That is a lot nicer than trying to using something like XSLT (though Happstack does support that as well).

Happstack offers a wide variety of templating solutions including BlazeHtml, HSP, Hamlet, and HStringTemplate. But Heist fills a nice hole in the spectrum, and we are pleased to be able to offer it now.

It is available in darcs and on hackage. It has been tested against Happstack from darcs, but should work against Happstack stable as well.

If there are any bugs or improvements you would like to see, let us know!

3 comments:

It really is a great pleasure to see people able to pick up some good technology where it is, without poor ego war. If only everybody could be like you guys, this world would be a much nicer place to work in :)

@Paul haha, thanks! We try not to reinvent things that already work well. For example, that's why this blog is hosted at blogspot instead of being written in Happstack. Blogspot/Blogger already does everything I need.

In 2011, we plan to migrate happstack-server to an iteratee-based backend. But, writing our own from scratch is definitely not on the table. Right now I have my fingers crossed for hyena, because hyena's raison d'être is to provide a fast low-level HTTP backend that high-level frameworks (like Happstack) can use. Fixing bugs or increasing performance in the current happstack backend only benefits Happstack. It would be a lot nicer if it benefited a wider audience.