Почему у Scala есть пути-зависимые типы? - PullRequest
13 голосов
/ 07 апреля 2011

Я проводил некоторые исследования по типам, зависящим от пути.Лучшее описание, которое я мог найти для него, было:

Если L является меткой типа, тогда xL и yL имеют одинаковый тип, если только x и y могут быть показаны для ссылки на один и тот же объект.

Это иногда не тот тип подтипа, который можно было бы ожидать.Я ожидал бы, что если L в приведенном выше примере действительно будет идентичным, то этого будет достаточно, чтобы сделать xL и yL одинаковыми.

Есть ли какая-то конкретная причина, по которой Scala был разработан таким образом?

Ответы [ 3 ]

9 голосов
/ 07 апреля 2011

В статье Масштабируемые абстракции компонентов есть хорошее объяснение типов, зависящих от пути, а также хороший пример в Разделе 3: "Пример из практики: субъект / наблюдатель".

4 голосов
/ 07 апреля 2011

Эта бумага объясняет это хорошо.По сути, они используются для поддержки программирования и модуляции на основе абстрактных типов данных.

0 голосов
/ 07 апреля 2011

Думайте о L как о аргументе типа обобщенного класса. Scala гордится своими типами-членами, но базовая JVM по-прежнему имеет те же ограничения.

...