No, but functionality similar to this has been proposed several times, under the name "Class Aliases" [1].
The big problem is in the definition of B: class (A a) => B a where ... In this case, you must make something an instance of A before it can be an instance of B, and, in order to make something an instance of A, you must provide an implementation of "foo". Not providing an implementation is the same as providing the default. With the class alias proposal you would write > class B a = A a where > foo a = 7.0 In this case, (B a) and (A a) are the same class, but provide different default implementations for the methods. So you *cannot* declare something an instance of both B and A. But if you declare something an instance of B without providing an implementation of "foo", it would use B's default, whereas instances of A would use A's default. Unfortunately, I don't believe anyone is working on implementing this proposal. It's high on my list of "desired features", but I think that not all the details have been figured out with how it interacts with other features of the language. -- ryan [1] http://repetae.net/recent/out/classalias.html, http://haskell.org/haskellwiki/Class_alias On Mon, Apr 27, 2009 at 2:00 PM, siki <ga...@karamaan.com> wrote: > > I'm not sure if this is possible at all. I'd like to do something like this: > > class A a where > foo :: a -> Double > > foo a = 5.0 > > > class (A a) => B a where > foo a = 7.0 > > data Blah = Blah > data Bar = Bar > > instance A Blah > instance B Bar > > let blah = Blah > bar = Bar > > foo blah -- should print out 5 > foo bar -- should print out 7 > > Basically, I have a bunch of instances that have a common functionality but > I'd like to be able to group those instances and give each group a different > default implementation of that functionality. It's so easy to do this in > Java, for example, but I have no idea how to do it in Haskell. The above > example will not compile, btw. > > Thanks a lot > -- > View this message in context: > http://www.nabble.com/Can-subclass-override-its-super-class%27-default-implementation-of-a-function--tp23264975p23264975.html > Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com. > > _______________________________________________ > Haskell-Cafe mailing list > Haskell-Cafe@haskell.org > http://www.haskell.org/mailman/listinfo/haskell-cafe > _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe