| Version 3 (modified by ross@…, 7 years ago) |
|---|
Eliminate . as an operator
In early Haskell, . was used as function composition. In later versions of Haskell, it also became used as a name qualifier.
These two uses do not fit well together, leading to special lexical rules (P11 of the report). As a test, before reading the report, can you lex the following: "f.g", "F.g", "F . g", "f..", "F..", and "F.". I couldn't. (See QualifiedIdentifiers for a related problem.)
Proposed syntaxes for RankNTypes and ExistentialQuantification also use . as a special symbol.
Proposal
Reserve . for use as a qualifier in names. Do not permit . as an operator symbol (or as a symbol character?). (Also continue to permit it as a decimal point in floats).
Pros
- Much much simpler. Not impossible to remember.
Cons
- We lose . as composition. Mostly this doesn't matter as $ is probably more common in reality anyway. Perhaps use `o` as infix composition instead if it is really important. Note that `o` is three characters - it would be nicer to use plain o infix, but that would require another special lexical rule.
- We need to make a special case of .. in the [m .. n] case.
