gpt4 book ai didi

scala - "no global type inference"对 Scala 意味着什么?

转载 作者:行者123 更新时间:2023-12-03 22:52:41 24 4
gpt4 key购买 nike

我已经读到 Scala 的类型推断不是全局的,所以这就是人们必须在方法上放置类型注释的原因。 (这会是“本地”类型推断吗?)

我只是有点明白原因是它面向对象的性质,但我不明白。是否有对“全局类型推断”的解释以及为什么 Scala 不能让初学者理解它?

最佳答案

问题在于,在具有子类型、重载或类似特征的语言中,HM 类型推断通常是不可判定的。 Ref这意味着可以将越来越多的东西添加到推理器中以使其推断出更多的特殊情况,但总会有代码会失败。

Scala 决定在方法参数和其他一些地方强制进行类型注释。这首先看起来似乎很麻烦,但考虑到这有助于记录代码并为编译器提供它可以在一个地方理解的信息。此外,具有 HM 推理的语言通常会遇到这样的问题,即有时会在远离原始错误的代码中检测到编程错误,因为 HM 算法只是顺其自然地(偶然)推断出具有错误类型的代码的其他部分它在失败之前进行了推断。

Scala 的推理基本上是从外部(方法定义)到内部(方法内部的代码)进行的,因此限制了错误类型注释的影响。

具有 HM 推理的语言从内到外工作(忽略添加类型注释的可能性),这意味着单个方法中的小代码更改有可能改变整个程序的含义。这可能是好的也可能是坏的。

引用: Lower bounds on type inference with subtypes

关于scala - "no global type inference"对 Scala 意味着什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4304003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com