Ticket #5676 (closed feature request: fixed)
Typeclass instance function type declarations
| Reported by: | drb226 | Owned by: | simonpj |
|---|---|---|---|
| Priority: | normal | Milestone: | 7.6.1 |
| Component: | Compiler (Type checker) | Version: | |
| Keywords: | typeclass instance function type declaration | Cc: | fuzxxl@… |
| Operating System: | Unknown/Multiple | Architecture: | Unknown/Multiple |
| Type of failure: | GHC rejects valid program | Difficulty: | Unknown |
| Test Case: | typecheck/should_compile/T5676 | Blocked By: | |
| Blocking: | Related Tickets: |
Description
See discussion at http://stackoverflow.com/questions/8367426/why-cant-one-put-type-signatures-in-instance-declarations-in-haskell
Basically, it would be nice to be able to do something like this:
instance Functor Maybe where fmap :: (a -> b) -> Maybe a -> Maybe b fmap = undefined
This currently produces a "misplaced type signature" error.
It seems like a simple enough extension (we could call it SuperfluousTypeclassSignatures?, because "Superfluous" is a cool word). It might be a good idea for Haskell Prime, but let's test it out as a Glasgow extension first.
We (a few of us on #haskell irc right now) think it best that only the precisely correct type signatures be accepted (reject signatures that are too lose or too strong), and it would be nice if, given an incorrect type signature, a custom error message were displayed stating the correct type signature.
