---------- Forwarded message ----------
From: Vyacheslav Akhmechet <[EMAIL PROTECTED]>
Date: Aug 24, 2006 5:35 PM
Subject: Re: Data.Generics vs. Template Haskell
To: Bulat Ziganshin <[EMAIL PROTECTED]>


Ok, so there are two aspects that I can see here. One such aspect is
ability to "reflect" on types (at runtime or compile time). An example
of that is creating an automatic mapping from relational databases to
haskell newtypes.

Another aspect is being able to get an a representation of Haskell
code AST in terms of Haskell datatypes in order to be able to process
Haskell ASTs in Haskell.

As far as I can see the first aspect is a subset of the second because
all Haskell types are known at compile time. If this is the case, why
the need for two libraries (I am not counting DriFT because it looks
like it hasn't been maintained for a long time)? Or am I missing
something?

Additionally, which one is more maintained and has the most potential
to become standard (whether de facto or real) in the future?

On 8/24/06, Bulat Ziganshin <[EMAIL PROTECTED]> wrote:
Hello Vyacheslav,

Thursday, August 24, 2006, 11:51:46 PM, you wrote:

> I am trying to figure out where these two libraries stand in relation
> to each other and which one is preferred to do generic programming in
> Haskell. I understand that their goals often intersect but couldn't
> find any good comparisons. Could someone point me in the right
> direction?

search for "generics" on hswiki, you should find a lot of papers. in
particular, there is a new paper that compares many different
approaches to generic programming. in particular, TH is not g.p.
tools, it's just a universal Haskell code generator whcih can be used
to solve particular tasks in this area. but to solve general problem
of defining traversal function what has some general case and a nu,ber
of type-specific cases TH is not very appropriate

TH (and DriFT) are widely used to generate instances like the haskell
compiler itself generates instances for Eq/Show/... and TH,
unlike many g.p. tools does it at compile-time. using TH, you also get
access to field/constructor names

summary: if your task fits into the features provided by g.p. tools,
you will gain a much time using them. if your task need compile-time
code generation (so that generic program will be no slower than
hand-written one) or you need some advanced features which your g.p.
tool doesn't provide - welcome to TH with all its programming
oddities. development of TH routines for g.p. is an order of magnitude
slower (at least!) than doing the same with specialized tool


--
Best regards,
 Bulat                            mailto:[EMAIL PROTECTED]


_______________________________________________
Glasgow-haskell-users mailing list
Glasgow-haskell-users@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users

Reply via email to