[Template-haskell] RE: Question regarding template Haskell

Simon Peyton-Jones simonpj at microsoft.com
Wed Sep 17 11:45:59 EDT 2003


[I'm redirecting this to the Template Haskell mailing list, where it
more properly belongs.]

Interesting question.

Tim and I are working on revising the 'reifyType' story, but even in our
revised version, your program will be rejected with a staging error.
reifyType gives a way to consult the compiler's type environment, at the
moment when the ExpQ is run.  But at that moment 'x' isn't in scope any
more.  

[Tim: this might make a good example for the design notes you're working
on.]

You might instead wonder if you can write
	getup :: ExpQ -> ExpQ
which asks what the type of the expression passed to it is.  This one
has come up before, and I don't think we have a good answer yet.
Trouble is (a) although quoted code is type-checked, there's not enough
info to do a full type-check (b) it's not obvious how to record whatever
the type checker does discover. Still an open question, then.

Simon

| -----Original Message-----
| From: libraries-bounces at haskell.org
[mailto:libraries-bounces at haskell.org] On Behalf Of Yu Di
| Sent: 12 September 2003 03:33
| To: libraries at haskell.org
| Subject: Question regarding template Haskell
| 
| Hi, I have a question regarding template Haskell: from
| the documentation, I have the impression that it is
| impossible to reify the type of the variable passed to
| the template function, is this true? Or, in other
| words, can I write a function like:
| 
| getTupleCount :: a -> ExpQ
| 
| getTupleCount x=
|   do
|      t <- (reifyType x)
|      --work on t
|      ...
| 
| which returns an expression that is an integer for any
| tuple input, but reduces to error for any input that
| is not a tuple?
| 
| Thanks!
| 
| Di, Yu
| 9.11
| 
| __________________________________
| Do you Yahoo!?
| Yahoo! SiteBuilder - Free, easy-to-use web site design software
| http://sitebuilder.yahoo.com
| _______________________________________________
| Libraries mailing list
| Libraries at haskell.org
| http://www.haskell.org/mailman/listinfo/libraries




More information about the template-haskell mailing list