Drop "and" in "where type" constraints

From Successor ML

Jump to: navigation, search

Contents

Introduction

Simplify the syntax of "where" constraints by abolishing useless and troublesome sugar.

Motivation

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.

Assumptions

None.

Syntax

Defined by the following modifications to the Definition:

  • In Appendix A, Figure 19, remove the box for signature expressions.

Static Semantics

Unaffected.

Dynamic Semantics

Unaffected.

Interactions

None.

Compatibility

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.

Implementation

Significantly simplifes parsing.

Personal tools