
On 4 August 2010 03:45, Ryan Ingram
So I believe the "final" way to do this, which is not yet implemented, works something like this:
type family LeftToRight a type family RightToLeft b
class (LeftToRight a ~ b, RightToLeft b ~ a) => Bijection a b where ...
I agree, the fact that this doesn't work is really dumb.
The reason Manuel Chakravarty gave me (if I recall correctly) that this doesn't work is as follows: Type classes are stored in dictionaries. To be able to have superclass constraints like this requires that type information also be stored in those dictionaries, which currently isn't done. They could have added this functionality in, but SPJ was going to be working on a new type-checker anyway (which I believe is now done) so this was postponed until after the new type-checker was finished. As we should hopefully be seeing 6.14 out in a few months time, there isn't time to be able to get superclass constraints in for it, so we probably won't have them until 6.16 next year. So, I wouldn't say that it's "dumb". Unfortunate, a pity, etc., but not "dumb". Don't forget, GHC is open source: if this lack really was "dumb" and annoying you, there was nothing stopping you from rectifying this situation up until now. -- Ivan Lazar Miljenovic Ivan.Miljenovic@gmail.com IvanMiljenovic.wordpress.com