Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 路径依赖类型和依赖类型之间有什么区别?_Scala_Dependent Type_Path Dependent Type - Fatal编程技术网

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

Scala 路径依赖类型和依赖类型之间有什么区别?,scala,dependent-type,path-dependent-type,Scala,Dependent Type,Path Dependent Type,Scala有路径依赖类型,但据说Scala不支持依赖类型。路径依赖类型和依赖类型之间有什么区别 据我所知,路径依赖类型是一种依赖类型。依赖类型是一种依赖于值的类型。路径依赖类型是一种特定类型的依赖类型,其中该类型依赖于路径 我不确定术语“路径依赖类型”是否存在于Scala社区之外。无论如何,问题是,路径是什么?对于Scala,这是在中定义的:基本上,这是一系列对非变量值的选择a.b.c. 路径相关类型是一种具有路径的类型,例如中的A.T class A { type T; def f: T }

Scala有路径依赖类型,但据说Scala不支持依赖类型。路径依赖类型和依赖类型之间有什么区别


据我所知,路径依赖类型是一种依赖类型。

依赖类型是一种依赖于值的类型。路径依赖类型是一种特定类型的依赖类型,其中该类型依赖于路径

我不确定术语“路径依赖类型”是否存在于Scala社区之外。无论如何,问题是,路径是什么?对于Scala,这是在中定义的:基本上,这是一系列对非变量值的选择
a.b.c.

路径相关类型是一种具有路径的类型,例如中的
A.T

class A { type T; def f: T }
def f(a: A): a.T = a.f
还有其他类型的依赖类型。例如,在Scala中,是一种将基于文本的类型添加到语言中的方法,这样您就可以编写
valx:42.type=21+21

为了对使用依赖类型的程序进行类型检查,类型系统(和编译器)需要了解这些值的语义及其操作。Scala编译器知道选择的语义,可以决定两条路径是否相同。对于使用基于文本的类型的示例,需要对编译器进行扩展,以了解整数上的
+
操作意味着什么。

请参阅Miles Sabin对类似问题的回答(您的问题要好得多,因此我不会将其标记为重复)。