Drop "and" in "where type" constraints
From Successor ML
Simplify the syntax of "where" constraints by abolishing useless and troublesome sugar.
The SML syntax allows several type constraints on a signature to be connected with "and", as in
sigexp where type t1 = ty1 and type t2 = ty2
This syntax is (1) a nightmare to parse (being LR(2)), and only few implementations bother to do it correctly, (2) at odds with the rest of the language, where "and" is always followed by a binding immediately instead of an additional keyword, and (3) completely useless, because writing another "where" instead of "and" has the very same effect. The syntax does not seem to be widely used either, we hence suggest abolishing it.
Defined by the following modifications to the Definition:
- In Appendix A, Figure 19, remove the box for signature expressions.
The change breaks all programs using the derived form. However, due to the weak support by most implementations, it does not seem to be widely used. Adapting affected programs is trivial.
Significantly simplifes parsing.