Третий манифест Кристофера Дейта и Хью Дарвена


Положительные RM-утверждения - часть 2


Прочие скалярные операции - операции только чтения.

  • Скалярные операции только чтения возвращают результат, операции обновления - нет.

  • В определении скалярной операции только чтения должна содержаться спецификация типа результата (объявленного типа);

  • В определении скалярного типа должна включаться спецификация аргументов, являющихся предметом обновления. Параметры, соответствующие таким аргументам, должны передаваться по ссылке. Все остальные аргументы операций обновления и все параметры операций только чтения должны передаваться по значению.

  • Результат вычисления скалярного выражения SX имеет объявленный тип, рекурсивно порождаемый из объявленных типов операндов SX и объявленных типов результатов подвыражений, содержащихся в SX.

  • Если T - это скалярный тип, а v - появление (в некотором контексте) значения этого типа, то по определению у v имеется в точности одно реальное представление и одно или более возможных представлений. Реальное представление, связанное с типом T, должно определяться средствами некоторого языка определения структуры хранения и не должно быть видимо в языке D (см. RM-утверждение 6). То же касается возможных представлений. Для каждого объявленного возможного представления PR типа T должна автоматически определяться операция selector S со следующими свойствами:

    1. Если представить, что компоненты PR (см. RM-утверждение 5) и параметры S представлены в виде упорядоченных списков, то эти два списка должны содержать одно и то же число элементов n, и объявленные типы i-тых элементов списков (i = 1, 2, …, n) должны быть одинаковы.

    2. Каждое значение типа T должно производиться путем некоторого вызова S.

    3. Каждый (успешный) вызов S должен производить некоторое значение типа T.

  • Если некоторое объявленное возможное представление PR для скалярного типа T определено в терминах компонентов C1, C2, …, Cn (у каждого компонента имеются имя и объявленный тип), v - значение типа T, а PR(v) - его возможное представление, то PV(v) должно демонстрироваться, т.е.


    Начало  Назад  Вперед