## MLton 20241230

# Identifier

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