Макроэкспанд для паранскрипта

Есть ли эквивалент макросов или макросов-1 для макросов parenscript? дела (ps (some macro expression)) будет отображать сгенерированный javascript, но бывают случаи, когда было бы неплохо увидеть parenscript непосредственно перед его преобразованием в javascript.

1 ответ

Решение

В паранскрипте compiler.lisp файл, есть функции ps-macroexpand-1 а также ps-macroexpand, К сожалению, они не экспортируются пакетом parenscript. Вы можете позвонить им в любом случае, используя двойное двоеточие.

Например,

(defpsmacro aif (test true &rest false)
  `(let ((it ,test))
     (if it ,true ,@false)))

(ps::ps-macroexpand-1 '(aif 3 it))
;;=>
(LET ((IT 3))
  (IF IT
      IT))
T
Другие вопросы по тегам