2007年发布的新方案标准R6RS与较旧的R5RS向后兼容吗?如果没有,R6RS中是否存在兼容模式?
发布于 2013-07-21 23:17:42
恐怕不能向后兼容。R6RS文件将从导入库开始。如果您的文件以以下内容开头:
#!r6rs
(import (rnrs))大部分R6RS都是可用的。R5RS不会识别这两行,所以在R5RS版本中,您需要跳过这两行或注释掉它们。使用标准命令行工具可以这样做,因此您可以编写一个源文件作为另一个源文件的生成。您将无法从load中使用R6RS,因此您的代码必须驻留(或最终)在一个文件中。
但是,有些实现(例如,ikarus )允许在不使用#!r6rs和初始导入表单的情况下运行代码,即使它是R6RS实现,但标准要求它们在顶级R6RS程序中运行。
在附录E of R6RS标准中,您可以看到已经更改的内容,并且应该避免使用新特性。也就是说,您应该使用R5RS规范并编写小写,因为R6RS是区分大小写的。
较新的R7RS草案规范主要基于R5RS,它们的导入形式与R6RS相同。然而,它们的库实现虽然类似,但与R6RS不兼容,因为它们故意使用不同的形式。无论如何,要与R5RS兼容,就不能创建库而不需要做大量的处理才能创建兼容的R5RS版本。
https://softwareengineering.stackexchange.com/questions/205381
复制相似问题