5
對於parenscript宏,是否有等價於宏觀展開或宏展開-1?做(ps (some macro expression))
將顯示生成的JavaScript,但有時候在將它轉換爲javascript之前查看parenscript會更好。對於parenscript宏的宏展開
對於parenscript宏,是否有等價於宏觀展開或宏展開-1?做(ps (some macro expression))
將顯示生成的JavaScript,但有時候在將它轉換爲javascript之前查看parenscript會更好。對於parenscript宏的宏展開
在parenscript的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
嗯,你可以定義宏宏作爲(非parenscript,正常LISP)和宏展開它通常的方式。我猜這個*應該*適用於很多情況,但它當然只是一個黑客。 –