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

Asl*_*986 9 scheme racket

我注意到人们经常表现得像Stack Overflow上的Scheme和Racket一样(以及网络上的其他地方.例如,关于Scheme的问题经常在Racket中生成解决方案.如果你看一下标记的问题,你会看到他们的答案的一半开始#lang racket.

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

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

Eli*_*lay 14

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

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


Jan*_*sen 6

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

Racket不是Scheme的超集或子集.

  • Racket是一个编译器.它将Racket代码编译为字节码,然后使用JIT编译器将字节码编译为机器代码.然而,"解释器"和"编译器"之间的区别是现在没有多大意义的. (3认同)