[Haskell] ANNOUNCE: HStringTemplate -- An Elegant, Functional, Nifty Templating Engine for Haskell

Chris Kuklewicz haskell at list.mightyreason.com
Mon Jan 14 16:29:17 EST 2008


Sterling Clover wrote:
> HStringTemplate is a port of Terrence Parr’s lovely StringTemplate 
> (http://www.stringtemplate.org) engine to Haskell.

Reading Terrence Parr describe StringTemplate, at 
http://www.stringtemplate.org/about.html is amusing:

> The fact that StringTemplate does not allow such things as assignments (no
> side-effects) should make you suspicious of engines that do allow it.

and

> Another distinctive StringTemplate language feature lacking in other engines is
> lazy-evaluation. StringTemplate's attributes are lazily evaluated in the sense
> that referencing attribute "a" does not actually invoke the data lookup
> mechanism until the template is asked to render itself to text. Lazy evaluation
> is surprising useful in both the web and code generation worlds because such
> order decoupling allows code to set attributes when it is convenient or
> efficient not necessarily before a template that references those attributes is
> create

and

> Just so you know, I've never been a big fan of functional languages and I
> laughed really hard when I realized (while writing the academic paper) that I
> had implemented a functional language. The nature of the problem simply dictated
> a particular solution. We are generating sentences in an output language so we
> should use something akin to a grammar. Output grammars are inconvenient so tool
> builders created template engines. Restricted template engines that enforce the
> universally-agreed-upon goal of strict model-view separation also look
> remarkably like output grammars as I have shown. So, the very nature of the
> language generation problem dictates the solution: a template engine that is
> restricted to support a mutually-recursive set of templates with
> side-effect-free and order-independent attribute references.

-- 
Chris



More information about the Haskell mailing list