
On Fri, Oct 22, 2010 at 4:20 AM, Simon Peyton-Jones
Does anyone listening to this thread have an opinion? Just to summarise, Sebastian's proposal is that Haskell's implicit quantification (adding foralls) would occur *only* right at the top of a type signature.
Before this discussion, I thought things already worked the way you
describe in your proposal.
On a related note, these are also apparently allowed (in 6.10.4):
f :: forall a. (Eq a => a -> a) -> a -> a
-- the Eq context prevents the function from ever being called.
g :: forall a. Ord a => (Eq a => a -> a) -> a -> a
-- the Eq context is effectively ignored
Up until now, I thought contexts were only allowed after a forall
(explicit or implicit), and I can't really think of a reason to have
one anywhere else.
My suggestion would be either
(1) forbid contexts, except after foralls, and only implicitly add
foralls at the top of the type
(2) add implicit foralls before any context, even if the variables are
already in scope
--
Dave Menendez