繁体   English   中英

路径依赖类型和依赖类型之间有什么区别?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM