【问题标题】:Differences between #lang scheme and #lang racket#lang 方案和#lang 球拍之间的区别
【发布时间】:2011-11-01 10:02:09
【问题描述】:

我猜#lang 球拍是一种方案方言,具有更多开箱即用的结构和通用功能,也许更具教学性。 #lang 球拍反对 #lang 方案有什么好处?

最好(甚至可能)在球拍中使用#lang 方案来遵循“计算机程序的结构和解释”甚至“如何设计程序”的所有内容。 HtDP 是特定于#lang 球拍的吗?

用#lang 方案编写的任何代码,只要不包含库,都可以在鸡方案或任何主解释器中使用?

提前致谢。

【问题讨论】:

标签: scheme racket htdp


【解决方案1】:
  1. 是的,#lang racket 是球拍默认方言,有很多扩展名。

  2. 它不是扩展的两个地方:if 必须有一个 else 分支,并且对是不可变的(没有 set-car!set-cdr!)。

  3. #lang scheme 在名称更改之前使用了一段时间,现在#lang racket 一直使用。但是我们保留了#lang scheme 以保持兼容性(以及保留的各种scheme/--- 库,有时可能与racket/--- 对应的库不同)。没有理由在新代码中使用#lang scheme

  4. 要关注 SICP,请不要使用任何这些 - 有一个 SICP language 可用(可与 #lang sicp 一起使用),最初由 Neil Van Dyke 编写,但现在由 Racket 社区维护。

  5. 要遵循 HtDP,不要使用任何这些,使用学生语言。还有新的基于#lang 的变体,例如#lang htdp/bsl,但它们的形状还不完整。 (而且 HtDP 不是 #lang racket 特定的。)

  6. 不,球拍非常与小鸡计划不同。您也许可以在两者中运行一些代码,但这些可能只是很小的玩具示例。

【讨论】:

  • 非常感谢 Eli 提供的信息,出于教学目的,我将完全使用球拍,鸡计划非常酷的是编译为 C 部分。
  • 有了 Racket,就不需要编译成 C 语言了——它使用了一个执行良好的即时编译器。如果您关心的是创建独立的可执行文件而不是速度,那么也有办法做到这一点——参见raco exeraco distribute
  • 这里只强调一件事:#lang scheme#lang racket 几乎完全相同——它与鸡计划、SICP 或 HtDP 的相似性并不比#lang racket 的相似。
猜你喜欢
  • 2021-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-17
  • 1970-01-01
  • 2019-04-19
  • 2010-10-30
相关资源
最近更新 更多