In Standard ML, there are syntactically two kinds of identifiers.

  • Alphanumeric: starts with a letter or prime (') and is followed by letters, digits, primes and underbars (_).

    Examples: abc, ABC123, Abc_123, 'a.

  • Symbolic: a sequence of the following

     ! % & $ # + - / : < = > ? @ | ~ ` ^ | *

    Examples: +=, <=, >>, $.

With the exception of =, reserved words can not be identifiers.

There are a number of different classes of identifiers, some of which have additional syntactic rules.

  • Identifiers not starting with a prime.

    • value identifier (includes variables and constructors)

    • type constructor

    • structure identifier

    • signature identifier

    • functor identifier

  • Identifiers starting with a prime.

    • type variable

  • Identifiers not starting with a prime and numeric labels (1, 2, …).

    • record label