parenscript的宏扩展

BnM*_*cGn 5 macros common-lisp parenscript

parenscript宏是否等效于macroexpand或macroexpand-1?做(ps (some macro expression))会显示生成的javascript,但有时候在它转换为javascript之前看到parenscript会很高兴.

Ril*_*ley 6

在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
Run Code Online (Sandbox Code Playgroud)