[GHC] #10071: Implement warnings for class-method overriding
GHC
ghc-devs at haskell.org
Mon Feb 9 11:29:35 UTC 2015
#10071: Implement warnings for class-method overriding
-------------------------------------+-------------------------------------
Reporter: hvr | Owner:
Type: feature | Status: new
request | Milestone: 7.12.1
Priority: normal | Version: 7.8.4
Component: Compiler | Operating System: Unknown/Multiple
Keywords: AMP | Type of failure: None/Unknown
Architecture: | Blocked By:
Unknown/Multiple | Related Tickets: #8004, #4384
Test Case: |
Blocking: |
Differential Revisions: |
-------------------------------------+-------------------------------------
This would aid long-term transitions like phasing out `Monad(return)` (in
the spirit of #4834):
With the AMP, `Monad(return)` being a class method becomes an historic
artifact. The ideal long-term situation would rather be to have `return`
become a top-level definition (i.e. outside the `Monad`-class),
generalised to `Applicative` just aliasing `Applicative(pure)`, i.e.
{{{#!hs
return :: Applicative f => a -> f a
return = pure
}}}
This may be beneficial for things like ApplicativeDo which otherwise would
require a `return` to be handled is if it was `pure` in order to weaken
the type-constraint in an `do`-expression like e.g.
{{{#!hs
do { x <- f; return (fst x) }
}}}
Right now, we can attach a `DEPRECATE`-pragma to the `return`-class-
method. That however would trigger warnings on ''all'' uses of `return`,
rather than only when using `return` in a context that requires it to be a
class-method (like overriding `return` in instance definitions, or
importing/exporting it via the explicit `Monad(return)`-syntax)
Instead we need a way to warn about such uses of `return` which assume it
to be a class-method, in order to phase out such uses.
NB: This will probably require additional discussions, but we shouldn't
wait too long, if we want to integrate the AMP into a future Haskell
Report (for which we should try to clean up historic warts such as
`Monad(return)` if feasable).
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10071>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list