Racket 是 Scheme 的后代。Racket 与 R6RS 有何不同?它增加了什么,带走了什么,或者只是不同?
我知道 Racket 不仅仅是一种语言,它还是一个语言平台。但我指的是主要的球拍方言。
Racket 最终基于 R5RS,而不是 R6RS,也不是两者的严格超集。我不认为它可以被称为“方案”,因为它不向后兼容任何方案标准。
大多数实现都提供扩展,但在其他方面向后兼容,当然,Racket 附带的编译器也可以在 R5RS 或 R6RS 模式下运行。在球拍模式下运行的有效 R5/6RS 方案可能会被拒绝、导致运行时错误或行为与应有的不同。话虽如此,它不向后兼容的要点是:
set-cdr!
set-car!
set-mcar!
letrec
letrec*
( ... )
[ ... ]
可能还有更多,但在大多数其他部分上,球拍是 Scheme 的超集。