the point about overlapping instances is that they shouldn't,
so we are looking for ways to resolve what looks like overlaps unambiguously, so that there are no overlapping instances left.

we don't want overlapping instances in the language definition,
but we do want more expressive means of defining non-
overlapping instances.

1. resolving overlaps in favour of the most specific declaration
   does so, so why is that approach slated as "adopt: probably no"?

http://hackage.haskell.org/trac/haskell-prime/ticket/54 2. FDs can help to make types in instance declarations more specific, thus avoiding some overlaps or at least helping the "best-match" to resolve overlaps. defaults resolve some of the simplest overlaps (which instance of Num did you mean?),
   but not others, because their overloading is not expressed in
   terms of classes (which empty list did you mean?).

3. in this context, could someone please remind me what exactly
   is the reason that class constraints in instance declarations are
   ignored when deciding whether two instances overlap?

we have two worlds to consider, the unconstrained world of
semi-decidable type class programming, and the restricted world which guarantees termination of type class inference.

in the first world, it seems there is no reason not to look at
the constraints, because there are no termination guarantees
anyway. and in the second world, it seems there is no reason
not to look at the constraints, because we know that doing
so will terminate nicely, thank you.

so why are some instance declarations still rejected as overlapping even if their constraints clearly say they don't?

cheers,
claus

_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://haskell.org/mailman/listinfo/haskell-prime

Reply via email to