#lang scheme和#lang racket的区别



我猜#lang racket是一种方案方言,具有更多开箱即用的结构和常见的功能,可能会更有教育意义。#lang诈骗对#lang骗局有什么好处?

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

只要不包含库,用#lang模式编写的任何代码都可以在chicken模式或任何主解释器中使用。

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

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

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

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

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

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