
On 21 August 2011 21:03, Alexey Khudyakov
I don't completely understant how does it work. Does client need to enable language extension to get default instances?
I think that the extension would only be required to *define them*, not for them to be generated. The more conservative choice would indeed be to require the extension for both, though.
Also proposal cannot fix Functor/Applicative/Monad problem without breaking client code. It requires explicit opt-out but client may define Applicative instance. And unless "hiding" is added it will result in compile error.
I think the intention (at least as I understand it) is that a superclass default is only used to generate an instance if there is not already some suitable instance in scope, just like a default method is only used if there is not some explicit definition for the method in the instance. So the "hiding" mechanism would only be required to work around tricky edge cases with orphan instances. Max