> Interesting!  Phil, Mark, and Jeff all have a different interpretation of
> how contexts on how data type declarations work than I did.  So unless 
> some other people chime in, I will therefore adopt their interpretation,
> since (a) I'm in the minority and (b) it's not a big deal at all.

I agree with Phil, Mark, and Jeff. Here is another explanation. The "meaning" of an 
overloaded function f :: P a => F a -> G a is the set of functions { f :: F a -> T a | 
P a}, now if we take the inverse of these functions we get the set { g :: T a -> F a | 
P a } which is the meaning of the qualified type g :: P a => T a -> F a. Selectors 
form "the inverse" of constructors (you know what I mean :-) hence they should be 
overloaded as well.

Erik



Reply via email to