【问题标题】:Advantages of "typed Racket" over Racket“typed Racket”相对于 Racket 的优势
【发布时间】:2017-02-28 03:24:19
【问题描述】:

使用“#lang typed/racket”而不是“#lang racket”可以得到哪些主要优势?我在参考文献 https://docs.racket-lang.org/ts-reference/index.html 中找不到它。优势是否与任何其他静态类型编程语言 https://en.wikipedia.org/wiki/Type_system#STATIC 一样?期望编译程序的速度提高是否合理?程序的安全性是否也得到了改善?感谢您的洞察力。

【问题讨论】:

  • 许多数值库声称使用typed racket 会显着提高速度。一般来说,我编写代码的经验是,typed racket 在比较静态类型语言和动态类型语言时发现了类似的权衡——但需要注意的是,racket 的动态类型和静态类型版本都是强类型的。静态类型会增加一些 lisp 习语的摩擦,有时值得,有时则不然。
  • 对我来说似乎是一个相当不错的答案。您应该将此作为答案发布,而不仅仅是评论。另外,安全是否也受到影响?
  • 谢谢。老实说,我不是这个问题的真正粉丝。并不是说我标记了它,但它似乎主要基于意见,我的回答同样不是那么有用......我的意思是,对于typed racket,没有什么比它静态类型和相当好的实现要多说的了。任何想要使用数字库的人都会看到他们声称使用 Typed Racket 运行得更快。

标签: scheme racket typed


【解决方案1】:

在Typed Racket Guide

7 优化 Typed Racket

Typed Racket 提供了一个类型驱动的优化器,可以重写类型良好的 可能使它们更快的程序。它绝不应该使 您的程序速度较慢或不安全。

因此类型提示可以使您的程序更快,但它也保证程序不会比#lang racket 慢。

请注意,当您使用 raco make 编译它或使用 DrRacket 生成可执行文件时,这是正确的。在 IDE 中运行代码可能会更慢,因为编译器为此做了额外的工作。

【讨论】:

    【解决方案2】:

    一些库声称在 Typed Racket 中非常受欢迎。

    来自 Racket 文档:

    7 矩阵和线性代数

    性能警告:矩阵值是数组,由数学/数组导出。 相同的性能警告适用:操作当前为 25-50 次 无类型的球拍比有类型的球拍慢,因为开销 检查高阶合约。我们正在努力。

    https://docs.racket-lang.org/math/matrices.html?q=matrix

    【讨论】:

      猜你喜欢
      • 2015-02-19
      • 2017-04-01
      • 1970-01-01
      • 1970-01-01
      • 2016-12-25
      • 2012-10-14
      • 2014-05-27
      • 2015-06-28
      • 1970-01-01
      相关资源
      最近更新 更多