-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Simon Peyton-Jones wrote:
> [Redirecting to ghc-bugs]
> 
> |     module A where
> |         data A = A { label :: Int }
> |
> |     module B where
> |         data B = B { label :: Int }
> |
> |         b :: B
> |         b = B { label = 0 }
> |
> |         x :: B -> ()
> |         x B { label = 0 } = ()
> |
> | GHC reports an ambiguity for both usages of label.
> 
> Are you sure?  Module B doesn't even import A!
> 
> And if you mean that B does import A, then Haskell 98 indeed says it's 
> ambiguous.
> 
> Now, it's true that in the case of both
>         a) pattern matching
>         b) record construction
> there's a lot less ambiguity, because you know which *data constructor* is 
> involved.  (Even better than knowing which module is involved.  But for
>         c) record update  (x { label = 0 })
>         d) field selection (label x)
> you have no such clues.

You may be able to infer which type it is (that should be enough) by
type inference, for c and maybe d - but that sounds fragile assuming
that record update and field selection currently _provide_ the
typechecker with information.

Isaac

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGXFo0HgcxvIWYTTURAj3aAJ4pRaEsXGwWObUs9rYDSsm1caN8JwCgmKPp
JqhY1YWCS+yPB9lhwan175U=
=8fwY
-----END PGP SIGNATURE-----
_______________________________________________
Glasgow-haskell-bugs mailing list
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to