[Haskell-cafe] Re: Template haskell instance checking

heatsink kyz7tnt02 at sneakemail.com
Thu Mar 2 14:00:26 EST 2006


>>Is there a way, in template haskell, to find out what instance 
>>declarations
>>exist?
>Not at the moment, I'm afraid, but it's the kind of question that TH
>ought to be able to answer.  I could offer guidance if someone wanted to
>implement it.

I have a concern about how computed class memberships would work.  Class 
membership is global, so creating a class instance is a globally visible 
side effect of TH code.  Once you add the ability for TH code to inspect 
instances, the side effects mean that the order in which different splices 
get executed affects the compiler output.  This is probably a bad thing.  
I'm not sure how it could be designed to work nicely; the only approach I 
can think of at the moment is to give splice evaluation a dataflow execution 
semantics that causes splices to execute and possibly reexecute at the 
"appropriate" times.  I'd like to hear if anyone else has ideas on how to 
solve this problem.

.....tian: I think that's a good point in general about conditional code 
generation.  I wasn't thinking about conditional generation based on 
compile-time settings, but rather reusable TH library functions that inspect 
the class memberships of their arguments.  Of course, this can be used for 
good or evil :)

--heatsink




More information about the Haskell-Cafe mailing list