[英]What is the difference between path-dependent types and dependent types?
Scala具有路径依赖类型,但据说Scala不支持依赖类型。 路径依赖类型和依赖类型之间有什么区别?
据我所知,路径依赖类型是一种依赖类型。
依赖类型是依赖于值的类型。 路径依赖类型是特定类型的依赖类型,其中类型取决于路径。
我不确定Scala社区之外是否存在术语“路径依赖类型”。 无论如何,问题是,路径是什么? 对于Scala,这是在语言规范中定义的:基本上它是非变量值上的选择序列abc..
路径依赖类型是具有路径的类型,例如aT
in
class A { type T; def f: T }
def f(a: A): a.T = a.f
还有其他类型的依赖类型。 例如,在Scala中,这是一个将基于文字的类型添加到语言的待定提议 ,因此您可以编写val x: 42.type = 21 + 21
。
为了键入检查使用依赖类型的程序,类型系统(和编译器)需要知道这些值及其操作的语义。 Scala编译器知道选择的语义,并可以决定两个路径是否相同。 对于使用基于文字的类型的示例,需要扩展编译器以了解整数上的+
运算意味着什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.