Mirko Rahn wrote:
In ghc-6.4.2 this works as expected, but ghc-6.5.20061001 says
B.hs:40:44:
A pattern type signature cannot bind scoped type variables `s'
unless the pattern has a rigid type context
Why are the rules for lexically scoped type variables so complicated?
Could we not just have a very simple rule like the following:
1) Any type variable not explicitly introduced by a forall is implicitly
scoped over the entire top level decl that contains the expression/pattern
that contains the type variable
By "entire top level decl" I mean the highest level decl that makes sense
eg:
foo :: MonadIO m => a -> m a
foo x = let
bar :: forall b. b -> m b -- 'm' bound by foo's
sig
bar y = return y
in
bar x
zap :: a -> Int
zap _ = let
yup = sizeOf (undefined :: a)
in
yup
Regards, Brian.
--
Logic empowers us and Love gives us purpose.
Yet still phantoms restless for eras long past,
congealed in the present in unthought forms,
strive mightily unseen to destroy us.
http://www.metamilk.com
_______________________________________________
Glasgow-haskell-users mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-users