
26 Apr
2008
26 Apr
'08
2:49 a.m.
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] allbery@kf8nh.com system administrator [openafs,heimdal,too many hats] allbery@ece.cmu.edu electrical and computer engineering, carnegie mellon university KF8NH