
Niklas Broberg wrote:
Ben Rudiak-Gould wrote:
Are there uses of overlapping instances for which this isn't flexible enough?
Certainly!
Hmm... well, what about at least permitting intra-module overlap in Haskell' (and in GHC without -foverlapping-instances)? It's good enough for many things, and it's relatively well-behaved.
instance (Show a) => IsXML a where toXML = toXML . show
The intention of the latter is to be a default instance unless another instance is specified.
I can see how this is useful, but I'm surprised that it's robust. None of the extensions people have suggested to avoid overlap would help here, clearly. Are there uses of overlapping instances for which the single-module restriction isn't flexible enough, but extensions that avoid overlap are flexible enough? -- Ben