On Sun, Apr 11, 2010 at 10:53 PM, Gour <gour@gour-nitai.com> wrote:
Hello!

Many/Some RoR folks swear at Haml/Sass (http://haml-lang.com/) and I
see there is Hamlet project at Github
(http://github.com/snoyberg/hamlet)

saying "Haml-like template files that are compile-time checked", so
I'm curious if it targets to be Haml-compatible or just "haml-like" ?


Sincerely,
Gour

Funny to see this mentioned right now; I'm in the middle of incorporating it into Yesod. It's most definitely haml-like: haml itself allows embedding of arbitrary Ruby code, so that's not really something I'm interested in here.

I'll put up a mini tutorial on it when it's polished, but there's really not much to the syntax. Just to give an idea of the niche it's trying to fill:

* Quasi-quoted templates are embeddable directly in your Haskell files and included in the binary.
* All variables are compile-time checked.
* Allows for on-demand loading of IO values, eg you can have conditionals in the template and only load data from a database if needed.
* It uses enumerators for looping, so it should fit nicely in memory.
* Deals with the string problem by having a very simple datatype: data Html = Encoded Text | Unencoded Text (Html will probably be renamed to something else).
* Has a monadic interface so you can use the nice features of the Hamlet monad without using the Hamlet syntax and quasi-quoter.
* Allows embedding of other templates.

The code for integration into Yesod is literally being written right now (just took a break to check my e-mail), so I should have more to say soon. If anyone's dying to know the details, send me an e-mail and I'll try to put together a blog post.

MichaelĀ