GNU Guile没有向量->字符串函数吗?

问题描述 投票:0回答:1

根据 scheme.org 实现 GNU Guile 支持 Scheme 的 R6 和 R7 版本。 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 和 eager-eol-escapes(请参阅与 R6RS 的不兼容性), r7rs-symbols 阅读器功能需要显式启用。

scheme.org 上的索引显示 向量->字符串是 R7RS 小的一部分。但是,当我使用 --r7rs 选项运行 Guile 时,它无法识别向量->字符串。

“未绑定变量:向量->字符串”

相同的代码适用于 MIT/GNU 方案

(display (vector->string #(#\H #\i #\!)))  ; => "Hi!"
scheme guile
1个回答
0
投票

他们的缺席似乎确实是 R7RS 支持方面的疏忽,是的。考虑提交有关它的错误报告吗?

与此同时,这里有 Guile 的

string->vector
vector->string
版本。

(use-modules (srfi srfi-43))

(define* (string->vector s #:optional (start 0) (end (string-length s)))
  (vector-unfold
   (lambda (i) (string-ref s (+ start i))) (- end start)))

(define* (vector->string v #:optional (start 0) (end (vector-length v)))
  (string-tabulate (lambda (i) (vector-ref v (+ start i))) (- end start)))
© www.soinside.com 2019 - 2024. All rights reserved.