Перечислимые типы определяют упорядоченные множества значе-
ний через перечисление идентификаторов, которые обозначают эти
значения. Упорядочение множеств выполняется в соответствии с пос-
ледовательностью, в которой перечисляются идентификаторы.
┌───┐ ┌───────────────┐ ┌───┐
перечислимый ──>│ ( ├───>│ список ├───>│ ) ├───>
тип └───┘ │идентификаторов│ └───┘
└───────────────┘
список ┌─────────────┐
идентификаторов ────────>│идентификатор├───┬────>
^ └─────────────┘ │
│ ┌───┐ │
└──────┤ , │<───────────┘
└───┘
При указании идентификатора в списке идентификаторов пере-
числимого типа он описывается как константа для блока, в котором
указано описание перечислимого типа. Типом этой константы являет-
ся описанный перечислимый тип.
Порядковый номер перечислимой константы определяется ее по-
зицией в списке идентификаторов при описании. Перечислимый тип, в
котором описывается константа, становится ее типом. Первая пере-
числимая константа в списке имеет порядковый номер 0.
Приведем пример перечислимого типа:
type
suit = (club, diamond, heart, spade);
Согласно этим описаниям diamond является константой типа
suit.
При применении функции Ord к значению перечислимого типа Ord
возвращает целое число, которое показывает, какое положение зани-
мает это значение в отношении других значений этого перечислимого
типа. Согласно предшествующим описаниям, Ord(club) возвращает 0,
Ord(diamond) возвращает 1 и так далее.