Почему Scala имеет зависимые от пути типы?

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

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

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

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

Ответ 2

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

Ответ 3

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