On Thu, Apr 24, 2008 at 10:21:03PM +0200, Wolfgang Jeltsch wrote: > Am Donnerstag, 24. April 2008 21:27 schrieb John Meacham: > > On Thu, Apr 24, 2008 at 08:48:15PM +0200, Wolfgang Jeltsch wrote: > > […] > > > > I also have some remark: Why not write > > > > > > > class Eq a => Num a = (Additive a, Multiplicative a) > > > > > > instead of > > > > > > > class Num a = Eq a => (Additive a, Multiplicative a) > > > > Well, because you can think of 'Num a' as an alias for 'Eq a => > > (Additive a, Multiplicative a)', not that Eq is a superclass of Num > > which the class declaration syntax implies. > > Hmm, in what way is Num a an alias for Eq a => (Additive a, Multiplicative > a)? > You cannot write this: > > > square :: (Eq a => (Additive a, Multiplicative a)) => a -> a > > I would say: “Under the condition that Eq a holds, Num a is an alias for > (Additive a, Multiplicative a). And this seems to be perfectly expressed by > my above proposal.
Hmm... I guess it depends on how you think about it. I tend to think about them in terms of what they are rewritten to rather than a proposition about classes. but perhaps that makes more sense. Will mull on it some.. John -- John Meacham - ⑆repetae.net⑆john⑈ _______________________________________________ Haskell-prime mailing list Haskell-prime@haskell.org http://www.haskell.org/mailman/listinfo/haskell-prime