On Apr 26, 2008, at 2:36 , Ken Takusagawa wrote:

But this does not:

 foo::IO a;
 foo = do{
   (x::a) <- bar;
   return x;};

Error message: A pattern type signature cannot bind scoped type
variables `a' unless the pattern has a rigid type context.

This works for me (in a slightly out of date HEAD) if I explicitly forall the declaration as per the ghc manual (see section 8.7.6.3):

> bar :: forall b. IO b
> bar =  return undefined -- just want a type for now
> foo :: forall a. IO a
> foo =  do { (x :: a) <- bar; return x; }

--
brandon s. allbery [solaris,freebsd,perl,pugs,haskell] [EMAIL PROTECTED]
system administrator [openafs,heimdal,too many hats] [EMAIL PROTECTED]
electrical and computer engineering, carnegie mellon university    KF8NH


_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to