球拍是Scheme的后代。球拍和R6RS有什么不同?它增加了什么,拿走了什么,还是只是不同?
我知道球拍不仅仅是一门语言,它还是一个语言平台。但我指的是球拍族的主要方言。
球拍是Scheme的后代。球拍和R6RS有什么不同?它增加了什么,拿走了什么,还是只是不同?
我知道球拍不仅仅是一门语言,它还是一个语言平台。但我指的是球拍族的主要方言。
当前回答
球拍包含了很多R6RS方案中不包含的非常好的语言结构,比如“match”。
其他回答
从PLT计划更名为球拍的理由在球拍网站上进行了讨论。
举个大例子,球拍列表在默认情况下是不可变的,而Scheme列表是可变的。球拍还包括许多其他方案没有的标准库(例如Web Server)。
球拍包含了很多R6RS方案中不包含的非常好的语言结构,比如“match”。
如上所述,它包含不可变列表。它还包含一个结构系统,比R6RS记录系统更清晰一些。它有一个面向对象的类和对象系统。它具有契约式设计的本机支持。它有一个类似ML模块系统的单元系统,也有一个类似R6RS模块系统的模块系统。我肯定我忘记了我提到的很多事情。
我不确定这个名字除了营销噱头之外还有什么用处,但球拍绝对是一种独特的方案方言。
Scheme编程语言的语言规范R5RS基于多个Scheme实现者之间的共识。这意味着语言是非常稳定的。这也意味着许多有用的特性不是R5RS标准的一部分。
球拍在R5RS的基础上进行了很大的扩展。有些扩展被定义为宏,但有些特性需要运行时系统的支持。
球拍中不能单独通过宏实现的特性:
带分隔符的延续(比call/cc更通用) 延续标记 线程 的地方 ffi
模块和宏系统比RnRS规范更通用。 与#lang阅读器/语言规范一起,可以定义自定义语言(使用自定义语法),并将它们用于正常的球拍程序。
在少数情况下,球拍有行为偏离R5RS的构造。最明显的一个是让cons构造一个不可变对(mcons构造一个可变对)。拥有不可变对的一个好处是,长度现在在O(1)平摊时间内运行。