In article <5.1.0.14.2.20030501153714.00b77c40@127.0.0.1>, Graham Klyne <gk@ninebynine.org> wrote:
It appears that it is not possible for a subclass to define a default for one of its superclass functions.
Correct. This is a common desire I think especially among people used to OOP, but there doesn't seem to be a clean way of doing it. For instance: module M where class C a where foo :: a -> a class (C a) => D a where foo = id instance C Char module N where import M instance D Char When compiling M, the compiler doesn't know instance D Char, so would presumably complain (warning) that foo is not defined in C and give it an undefined default. Perhaps it could work if it were a condition that instances of C and D be defined in the same module, and also if missing members in instances were errors rather than warnings (a good idea anyway IMO). -- Ashley Yakeley, Seattle WA