More strange questions on what should/shouldn't happen when hiding Prelude:
Assume that (appropriate parts of) the Prelude is hidden using
import Prelude ()
or
import Prelude hiding (...something that hides (+) and/or (-)...)
or
import Prelude (...something that doesn't include (+) or/nor (-)...)
or
import Prelude renaming ((+) to (++++), (-) to (+++-), ...)
...
Then what happens to (+) and (binary) (-)? Are they
1. special syntax that is always imported anyway (as is unary minus), or
2. not special syntax, but their fixity is always "infixl 6" anyway, or
3. just as any other operator, including that a new fixity can be given?
Alternative 1 seems to make (-) and (+) hard to rebind/overload further.
(At least there would be lots of changes to the official syntax.)
Alternative 2 could be made more general in that when importing a module, the
fixities (including implicit fixities) are always imported, even for operators
exported by the module but hidden or renamed by the import declaration.
This may be problematic if the same operator is defined in two imported
modules, using different fixities. One or both must then be hidden or renamed,
but the fixities would still collide.
Alternative 3 is inconsistent (syntaxwise) with unary minus and n+k-patterns.
My choice would be alternative "1.5", where (+) and (-) are not special
syntax, but are reexported by the unhidable (and as yet unseen) special
syntax module (see my previous message) anyway.
/kent k