Я пытаюсь понять, как создать макрос ракетки, который просто преобразует в строку все содержимое, кроме s-выражений, которые он оставит в покое.
Я дошел до того, что выяснил, как это сделать преобразовать все в строку
#+begin_src racket
(define-syntax (stringify-all stx)
(syntax-case stx ()
[(_ args ...)
#'(begin
(~s 'args)
...)]))
(stringify-all one 2 (add1 2))
#+end_src
#+RESULTS:
: "one"
: "2"
: "(add1 2)"
Но понятия не имею, как проверить, является ли что-то s-выражением или нет.
Как мне это сделать?