我注意到人们经常表现得好像Scheme和Racket在Stack Overflow(以及网络上的其他地方)也是如此。例如,有关Scheme的问题经常在Racket中生成解决方案。如果你看一下标记为scheme的问题,您会看到答案的一半以#lang racket
开头。
这两种语言真的如此相似,以至于它们可以被认为是平等的吗? Racket只是Scheme的扩展(即Scheme代码总是在Racket解释器上运行)?
我想强调一点,这不是一个论战,只是一个学习Scheme编程语言的人的问题。
答案 0 :(得分:14)
Racket与Scheme非常接近,实际上直到两年前它被称为PLT Scheme。
但是,在Racket中使用的默认语言在几个地方偏离了Scheme(最值得注意的是它具有不可变对)。这不是什么新东西:它被称为PLT Scheme时有类似的差异。它也不是Racket独有的东西:Scheme标准是如此简约,以至于他们定义的语言是不切实际的,这意味着所有 Scheme实现都添加了自己的扩展。 Racket案例的另一个重点是定义新方言非常容易 - 而且Racket实现了严格的R5RS方言(严格意味着它不是非常有用)并且它还实现了R6RS方言。
答案 1 :(得分:6)
Racket不是Scheme的超集或子集。