根据scheme.org 实现, GNU Guile 支持 R6 和 R7 版本的 Scheme。并且 guile 可执行文件具有“--r6rs”和“--r7rs”命令行参数。Guile网站称
由于 R7RS 的标准远不如 R6RS 雄心勃勃(参见 Guile 和 Scheme),因此 Guile 很容易支持它。因此,Guile 是 R7RS 的完全符合要求的实现,除了偶尔出现的错误和几个未实现的功能:
- R7RS 指定了使用数据标签读取循环数据结构的语法,例如 #0=(1 2 3 . #0#)。Guile 的阅读器目前不支持此语法;https://bugs.gnu.org/38236。
- 与 R6RS 一样,R7RS 的许多词汇功能与 Guile 的历史语法相冲突。除了 r6rs-hex-escapes 和 hungry-eol-escapes(请参阅与 R6RS 的不兼容性)之外,还需要明确启用 r7rs-symbols 阅读器功能。
并且 scheme.org 上的索引显示vector->string 是 R7RS small 的一部分。但是,当我使用 --r7rs 选项运行 Guile 时,它无法识别 vector->string。
“未绑定变量:向量->字符串”
相同的代码适用于 MIT/GNU Scheme
(display (vector->string #(#\H #\i #\!))) ; => "Hi!"
是的,他们的缺席似乎是 R7RS 支持的一个疏忽。考虑提交有关它的错误报告吗?
与此同时,这里有Guile
string->vector
的版本。vector->string