Ian Lynagh wrote:
I'm not sure if defaulting actually makes this worse, but regardless, I
think we should seriously consider removing defaulting anyway:
http://hackage.haskell.org/trac/haskell-prime/wiki/Defaulting#Proposal4-removedefaulting
Oh, actually, I agree with that proposal to remove
defaulting. Maybe we should try implementing that and see
how much things break. I imagine most uses can be solved
by, if nothing else, adding local functions with
more-constrained types, a bit similar to the (^) change.
I noticed that depending on the resolution of
http://hackage.haskell.org/trac/haskell-prime/wiki/KindInference
, we might have a different sort of defaulting that examines
exactly a whole module (which could also make it harder for
my cyclic-module proposal to avoid recompilation? not sure)
If we remove defaulting and the monomorphism restriction
*and* don't add any other per-module semantics, then we get
the module system out of the way of the semantics, which
would make me very happy! There are a few GHC extensions
that are still unfortunately per-module -- e.g.
OverlappingInstances perhaps ought to be a notation or
pragma on a class, rather than affecting all classes that
happen to be defined in the module. (Pragmas aren't
supposed to have an effect if they're not recognized; but
sometimes people put OverlappingInstances on a class not
because they're planning to make any such instances, but to
allow users to define such instances; in which case the
class and stock instances really can compile even in
compilers that don't support overlapping instances)
-Isaac
_______________________________________________
Haskell-prime mailing list
Haskell-prime@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-prime