加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

高级类型 – 为什么可能Scala但不是F#?

发布时间:2020-12-16 09:43:46 所属栏目:安全 来源:网络整理
导读:鉴于CLR泛型实现支持比JVM更多的功能,例如reification,并且JVM的泛型仅仅是Java “compiler trick”,为什么在F#中不太可能使用更高级的类型,但在Scala中可能是可能的? CLR泛型实现有什么办法妨碍了事情,而JVM缺少一个允许你进一步超出设计者的意图;有
鉴于CLR泛型实现支持比JVM更多的功能,例如reification,并且JVM的泛型仅仅是Java “compiler trick”,为什么在F#中不太可能使用更高级的类型,但在Scala中可能是可能的? CLR泛型实现有什么办法妨碍了事情,而JVM缺少一个允许你进一步超出设计者的意图;有点像动态语言,让你做一个强类型的编译器将不可能的技巧?

解决方法

原则上,我不知道有什么可以防止F#包含更高级别的类型; CLR本身不支持它们,因此需要使用更间接的编译策略,但是JVM上的Scala也是如此。在CLR的经典仿制药之上做到这一点可能不是更复杂,但我怀疑F#不包括它们的原因更具哲学意义。虽然较高种类的产品会很好,但F#的设计往往倾向于与其他.NET语言互操作的简单功能。较高种类的类型可能需要大量的努力才能添加到语言中,会使类型推断和语言的其他部分复杂化,并且绝对不会与C#和其他.NET语言互操作,因此成本(包括机会成本)可能被认为是超过好处。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读