Why does Scala have path-dependent types?

2020-02-09 09:04发布

I've been doing some research on path-dependent types. The best description I could find for it was:

If L is a type label, then x.L and y.L are the same type iff x and y can be shown to refer to the same object.

This sometimes isn't the subtyping behaviour one would expect. I would expect that if L in the above example was indeed identical then that would be enough to make x.L and y.L indentical.

Is there any particular reason why Scala was designed this way?

3条回答
戒情不戒烟
2楼-- · 2020-02-09 09:04

This paper explains it nicely. Basically, they're used to support abstract data type based programming and modularization.

查看更多
太酷不给撩
3楼-- · 2020-02-09 09:05

Think about L as about type argument of generic class. Scala boasts about its type members but underlying JVM still has the same limitations.

查看更多
▲ chillily
4楼-- · 2020-02-09 09:06

The Scalable Component Abstractions paper has a good explanation on path dependent types and also a good example in Section 3: "Case study: subject/observer".

查看更多
登录 后发表回答