The monomorphism restriction and monomorphic pattern
bindings
Sittampalam, Ganesh
ganesh.sittampalam at credit-suisse.com
Fri Apr 25 03:46:30 EDT 2008
Simon Peyton Jones wrote:
> 3. I'm more concerned about the programmer than the implementation.
> Consider
> (f,g) = (negate, show)
> What type do you expect 'f' to have? A straightforward answer might
be
> f :: (Num a, Show b) => a -> a
> If you don't want that, you need to explain a more complicated typing
> rule for pattern bindings. I'll ask the same about
> (f,g) = (reverse, length)
> A simple and consistent story is that all the pattern bound variables
> are generalised over all the class constraints and all the type
> variables of the RHS. But I bet that is not what you want.
I think this is reasonable. In general, something of type (Num a, Show
b) => (a -> a, b -> String), might have an occurrence of b hidden inside
a -> a. I
wouldn't expect specific expressions of this type to be given special
treatment.
Cheers,
Ganesh
==============================================================================
Please access the attached hyperlink for an important electronic communications disclaimer:
http://www.credit-suisse.com/legal/en/disclaimer_email_ib.html
==============================================================================
More information about the Haskell-prime
mailing list