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

_______________________________________________
Haskell mailing list
Haskell@haskell.org
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to