我猜#lang 球拍是一种方案方言,具有更多开箱即用的结构和常见功能,也许更具教学性。反对#lang 计划的#lang 球拍有什么好处?
最好(甚至可能)在球拍中使用#lang 方案来遵循“计算机程序的结构和解释”甚至“如何设计程序”的所有内容。HtDP 是#lang 球拍特定的吗?
无论用#lang 方案编写的任何代码,只要不包含库,都可以在鸡方案或任何主解释器中使用吗?
提前致谢。
是的,#lang racket
是球拍默认方言,有很多扩展名。
它不是扩展的两个地方:if
必须有一个 else 分支,并且对是不可变的(noset-car!
和set-cdr!
)。
#lang scheme
在更名之前使用了一段时间,现在#lang racket
一直使用。但是我们保留#lang scheme
了兼容性(以及scheme/---
保留的各种库,有时可能与racket/---
对应的库不同)。没有理由#lang scheme
在新代码中使用。
要遵循 SICP,请不要使用任何这些 - 有一种可用的SICP 语言(可用于#lang sicp
),最初由 Neil Van Dyke 编写,但现在在 Racket 社区中维护。
要遵循 HtDP,请不要使用任何这些,使用学生语言。还有一些#lang
基于新的变体,#lang htdp/bsl
但它们还不是完整的形状。(而且 HtDP并不 #lang racket
具体。)
不,Racket与 Chicken Scheme非常不同。您可能能够在两者中运行一些代码,但这些可能只是很小的玩具示例。