Макроэкспанд для паранскрипта
Есть ли эквивалент макросов или макросов-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