23

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

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

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

提前致谢。

4

1 回答 1

32
  1. 是的,#lang racket是球拍默认方言,有很多扩展名。

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

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

  4. 要遵循 SICP,请不要使用任何这些 - 有一种可用的SICP 语言(可用于#lang sicp),最初由 Neil Van Dyke 编写,但现在在 Racket 社区中维护。

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

  6. 不,Racket与 Chicken Scheme非常不同。您可能能够在两者中运行一些代码,但这些可能只是很小的玩具示例。

于 2011-08-22T19:37:14.790 回答