В Racket или Scheme, есть ли способ преобразовать объект синтаксиса с многоточием в список объектов синтаксиса?

Например:

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

В примере (list #'x ...) очевидно не работает, но что я могу сделать, чтобы вывести эквивалент (list #'a #'b #'c #'d)?

1 ответ

Решение

Вот один из способов сделать это:

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/stx,

Другие вопросы по тегам