lob*_*ism 24 f# scala typeclass higher-kinded-types
鉴于CLR泛型实现支持比JVM更多的功能,例如具体化,而JVM的泛型仅仅是Java "编译器技巧",为什么在F#中不可能使用更高级的类型但在Scala中可能?CLR泛型实现是否会以某种方式阻碍事物的发生,而JVM缺少一个允许您进一步超出设计者的意图; 有点像动态语言让你做一个强类型编译器不可能的技巧?
kvb*_*kvb 22
原则上,我不确定是否有任何阻止F#包含更高级别的类型的东西; CLR本身并不支持它们,因此需要使用更间接的编译策略,但JVM上的Scala也是如此.在CLR的具体化仿制药之上执行此操作可能会或可能不会更复杂,但我怀疑F#不包含它们的原因更具哲学性.虽然更高级的kinded类型会很好,但F#的设计倾向于支持与其他.NET语言良好互操作的简单功能; 更高级的类型可能需要花费大量精力来添加到语言中,会使类型推断和语言的其他部分复杂化并且肯定不能与C#和其他.NET语言很好地互操作,因此成本(包括机会成本)可能被认为是超过了好处.