2015-11-26 65 views
5

對於parenscript宏,是否有等價於宏觀展開或宏展開-1?做(ps (some macro expression))將顯示生成的JavaScript,但有時候在將它轉換爲javascript之前查看parenscript會更好。對於parenscript宏的宏展開

+1

嗯,你可以定義宏宏作爲(非parenscript,正常LISP)和宏展開它通常的方式。我猜這個*應該*適用於很多情況,但它當然只是一個黑客。 –

回答

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