
I think this probably makes sense, especially since you can silence the
warning when you intend to add an unnecessary constraint.
I had one thought though: consider an abstract data type with functions
that operates over it. I might want to require e.g Ord in the definition of
a function so I have freedom to change my implementation later, even though
the current implementation doesn't need Ord. Think of it as separating
specification and implementation. An example is 'nub'. I initially might
implement it as a O(n^2) algorithm using only Eq, but I might want to leave
the door open to using Ord to create something better, without later having
to break backwards compatibility.
On Wed, Jan 7, 2015 at 4:19 PM, Simon Peyton Jones
Friends
I’ve pushed a big patch that adds –fwarn-redundant-constraints (on by default). It tells you when a constraint in a signature is unnecessary, e.g.
f :: Ord a => a -> a -> Bool
f x y = True
I think I have done all the necessary library updates etc, so everything should build fine.
Four libraries which we don’t maintain have such warnings (MANY of them in transformers) so I’m ccing the maintainers:
o containers
o haskeline
o transformers
o binary
Enjoy!
Simon
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://www.haskell.org/mailman/listinfo/ghc-devs