[Template-haskell] Re: Documentation Template Haskell

Jim Apple japple at freeshell.org
Tue Nov 15 23:42:06 EST 2005


Simon Peyton-Jones wrote:
> The reason I have not done anything about it is that
> there's very little traffic on the Template Haskell list (or any other,
> about TH), and that has de-motivated me so far as improving TH is
> concerned.

I WANT to use TH, but I don't. Here are several reasons:

1. The documentation is poor, and writing my own documentation to a 
changing API is frustrating.

2. Haskell is making very quick progress - many people have shown how 
GADTs and existential types overlap, and perhaps we could have hacked up 
some sort of GADTs in TH, but we didn't have to.
    Someone has hacked up TH versions of Generic Haskell and PolyP (or 
Starfunski), but those tools already exist in the wild.
    In addition, some analysis I might use TH for can be done in other 
ways, like the projects that end up parsing Haskell in Haskell, or 
Programmatica, or GHC as a package.

3. TH is ugly by comparison. Those splices break my concentration. When 
I write a utility or library, I want it to be transparent to the user: I 
want it to look built-in. SYB is a great example of a beautiful utility.

4. For the things that #2 doesn't take care of, I don't know if TH can 
do. Chameleon and System CT are quite interesting, but can TH simulate 
that kind of behavior?

I want impredicativity NOW (especially for type classes), and SPJ is 
working on it already -- why should I hack it up in TH only to create 
some weak or ugly syntax months after GHC has boxy types built-in?

I know that #3 is my own issue to get over - a decision was made that 
Haskell metaprogramming would be more explicit than regular Haskell, and 
if I want it to be different, I can use Lisp or roll my own.

But I thought I would (a) Offer some praise - TH is unused partially 
because GHC is so great (b) Explain that part of the reason I don't use 
TH is that there is no good documentation, and that's only because more 
people don't use TH, which may be only because there is no good 
documentation . . .

Jim



More information about the template-haskell mailing list