Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Macroexpand for parenscript

Is there an equivalent to macroexpand or macroexpand-1 for parenscript macros? Doing (ps (some macro expression)) will display the generated javascript, but there are times when it would be nice to see the parenscript just before it gets converted to javascript.

like image 262
BnMcGn Avatar asked Nov 26 '15 01:11

BnMcGn


1 Answers

In parenscript's compiler.lisp file, there are the functions ps-macroexpand-1 and ps-macroexpand. Unfortunately, they are not exported by the parenscript package. You can call them anyway using a double colon.

For example,

(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
like image 97
Riley Avatar answered Oct 20 '22 01:10

Riley