Alas no....  Haskell doesn't have kind polymorphism!

Simon

From: [email protected] [mailto:[email protected]] On 
Behalf Of Jean Yang
Sent: 05 May 2009 05:28
To: Simon Peyton-Jones
Cc: [email protected]
Subject: Re: Question about typechecker renaming of tyvars

Thanks for the e-mail.  Things make a lot more sense now!!

I had another question: is there a (relatively) easy way to programmatically 
derive Typeable for types with more than 7 parameters?

Thanks,
Jean
On Mon, May 4, 2009 at 5:05 AM, Simon Peyton-Jones 
<[email protected]<mailto:[email protected]>> wrote:

I might just be very confused about how instance definitions are stored, but 
what is the difference between the type variables stored with a specific 
instance (that one can get with is_tvs) and the type variables stored with the 
class?

They are utterly un-connected!  Eg

              class C a where ...

              instance (Eq p, Ord q) => C (p,q) where ...

There is no need for the type variables of the class ('a' in this case) to 
match, either in name or number, the type variables of the instance ('p', 'q' 
in this case).

If you want the signatures of the instances, just get the DFunID of the 
instance (use InstEnv.instanceDFunId). The type of that Id gives you the 
signature of the instance.  Eg. for the above instance, the dfunid has type

              forall p,q. (Eq p, Ord q) => C (p,q)

Also, the error messages seem to be coming from trying to do this for type 
class instances that involve type variables in some context.  (For example, 
(Show a, Show b, Show c) => Show ((,,) a b c).)  Any suggestions about what to 
watch out for when dealing with these?

I'm sorry I just can't figure out what you are asking here.

Simon



--
Jean Yang
http://web.mit.edu/jeanyang/www/
Save us!  Think before you print.
*^^`
_______________________________________________
Cvs-ghc mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to