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

Mat*_*att 3 scheme ellipsis pattern-matching racket syntax-object

例如:

(syntax-case #'(a b c d) ()
  ((x ...) (list #'x ...))
Run Code Online (Sandbox Code Playgroud)

在示例中,(list #'x ...)显然不起作用,但我可以做什么来输出相当于(list #'a #'b #'c #'d)

Asu*_*awa 5

这是一种方法:

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>)
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅语法对象操作部分和导出的函数syntax/stx.