scheme - 在Racket或Scheme中,有没有办法将省略号语法对象转换为语法对象列表?

标签 scheme pattern-matching racket ellipsis syntax-object

例如:

(syntax-case #'(a b c d) ()
  ((x ...) (list #'x ...))

在示例中, (list #'x ...) 显然不起作用,但是我该怎么做才能输出 (list #'a #'b # 'c#'d)?

最佳答案

这是一种实现方法:

Welcome to Racket v5.90.0.6.
-> (syntax-case #'(a b c d) ()
     ((x ...) (syntax->list #'(x ...))))
'(#<syntax:5:16 a> #<syntax:5:18 b> #<syntax:5:20 c> #<syntax:5:22 d>)

有关更多信息,请参阅syntax object operations部分和 syntax/stx 导出的函数.

关于scheme - 在Racket或Scheme中,有没有办法将省略号语法对象转换为语法对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18255571/

相关文章:

scheme - Racket URL 调度

scheme - Racket 中的gensym

emacs - 使用 plt-r5rs 而不是 Racket 调用 Geiser?

clojure - Clojure 中的如意算盘

c# - 连续传递风格的中间值和返回值

scheme - 将多个函数一起重命名的宏

scheme - 在 Racket 中将文本显示为图像时自动换行

firefox-addon - Firefox 插件中的 URL 匹配模式

regex - 适用于COUNTIF的Google表格模式匹配/正则表达式

haskell - lambda 绑定(bind)中的模式匹配?