... | ... | @@ -58,7 +58,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.
|
|
|
|
... | ... | |