26

鉴于 CLR 泛型实现支持比 JVM 更多的功能,例如具体化,而 JVM 的泛型只是 Java “编译器技巧”,为什么高级类型在 F# 中不可能,但在 Scala 中可能?CLR 泛型实现是否会以某种方式妨碍事情,而 JVM 的缺乏使您可以比设计者的意图走得更远;有点像动态语言让你做强类型编译器不可能做到的技巧?

4

2 回答 2

24

原则上,我不确定是否有任何东西阻止 F# 包含更高种类的类型。CLR 本身并不支持它们,因此需要使用更间接的编译策略,但 JVM 上的 Scala 也是如此。在 CLR 的具体化泛型之上执行此操作可能更复杂,也可能不会更复杂,但我怀疑 F# 不包含它们的原因更具哲学性。虽然更高种类的类型会很好,但 F# 的设计倾向于支持与其他 .NET 语言良好互操作的简单功能;更高种类的类型可能需要大量的努力才能添加到语言中,会使类型推断和语言的其他部分复杂化,并且肯定不会与 C# 和其他 .NET 语言很好地互操作,

于 2013-02-26T12:11:24.937 回答
-6

更好的?可以想象。

我知道的唯一区别是泛型的一个特性,称为“专业化”。它可以在 Scala 的程序员控制下使用。所以......我不得不说人们可以证明 Scala 是“更好的”。

于 2013-02-26T04:58:12.480 回答