@@ -77,7 +77,7 @@ And `type` gets an extra production:
- An ambiguous reference defaults to the locally-defined one. (If we did this we should do so consistently, including for unqualified names in the text of a module. I think this'd be a Good Thing. A warning flag could warn if you used it. It's just like shadowing.)
- If the two `(+)` things are not both locally defined, you can disambiguate with a qualified name `Prelude.(+)` or `M.(+)`. That does not help if you define *both* in `M`.
- Use a keyword to distinguish; eg `module M( data (+) ) where`. There are design issues here (e.g. distinguish `data` and `newtype`?).
- Use a keyword to distinguish; eg `module M( type (+) ) where`. There are design issues here (e.g. distinguish `data` and `newtype`?).
- Can you set the fixity of a type constructor `T` differently than the data constructor `T`? This is a similar ambiguity to the one in export lists. Except that in this case it is very common to have a type constructor and data constructor with the same name.