Redundant constraints
Simon Peyton Jones
simonpj at microsoft.com
Thu Jan 8 09:32:24 UTC 2015
Ha ha ha. Very good, yes!
| -----Original Message-----
| From: Michael Sloan [mailto:mgsloan at gmail.com]
| Sent: 08 January 2015 00:06
| To: Johan Tibell
| Cc: Simon Peyton Jones; Milan Straka; Bill Mitchell
| (Bill.Mitchell at hq.bcs.org.uk); Ross Paterson; ghc-devs at haskell.org
| Subject: Re: Redundant constraints
|
| One option for avoiding the warning without runtime overhead would be
| to do something like this:
|
| f :: Ord a => a -> a -> Bool
| f x y = True
| where
| _ = x < y
|
|
| On Wed, Jan 7, 2015 at 7:27 AM, Johan Tibell <johan.tibell at gmail.com>
| wrote:
| > 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
| > <simonpj at microsoft.com>
| > wrote:
| >>
| >> 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 at haskell.org
| >> http://www.haskell.org/mailman/listinfo/ghc-devs
| >>
| >
| >
| > _______________________________________________
| > ghc-devs mailing list
| > ghc-devs at haskell.org
| > http://www.haskell.org/mailman/listinfo/ghc-devs
| >
More information about the ghc-devs
mailing list