Scheme和Racket有什么不同?如果是这样,怎么样?

时间:2012-04-28 11:31:39

标签: scheme racket

我注意到人们经常表现得好像Scheme和Racket在Stack Overflow(以及网络上的其他地方)也是如此。例如,有关Scheme的问题经常在Racket中生成解决方案。如果你看一下标记为的问题,您会看到答案的一半以#lang racket开头。

这两种语言真的如此相似,以至于它们可以被认为是平等的吗? Racket只是Scheme的扩展(即Scheme代码总是在Racket解释器上运行)?

我想强调一点,这不是一个论战,只是一个学习Scheme编程语言的人的问题。

2 个答案:

答案 0 :(得分:14)

Racket与Scheme非常接近,实际上直到两年前它被称为PLT Scheme。

但是,在Racket中使用的默认语言在几个地方偏离了Scheme(最值得注意的是它具有不可变对)。这不是什么新东西:它被称为PLT Scheme时有类似的差异。它也不是Racket独有的东西:Scheme标准是如此简约,以至于他们定义的语言是不切实际的,这意味着所有 Scheme实现都添加了自己的扩展。 Racket案例的另一个重点是定义新方言非常容易 - 而且Racket实现了严格的R5RS方言(严格意味着它不是非常有用)并且它还实现了R6RS方言。

答案 1 :(得分:6)

不,他们并不平等。但是,Racket实现可以运行标准的Scheme代码。方案由标准定义。球拍不是。如果您想要可移植性,可以编写R6RS代码并使用Racket执行它。

Racket不是Scheme的超集或子集。