5

parenscript 宏是否有等效于 macroexpand 或 macroexpand-1 的方法?Doing(ps (some macro expression))将显示生成的 javascript,但有时最好在 parenscript 转换为 javascript 之前看到它。

4

1 回答 1

5

在 parenscript 的compiler.lisp文件中,有函数 ps-macroexpand-1ps-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
于 2015-11-26T13:04:03.783 回答