2015-11-26 3 views
5

Esiste un equivalente a macroexpand o macroexpand-1 per macro parenscript? Fare (ps (some macro expression)) mostrerà il javascript generato, ma ci sono momenti in cui sarebbe bello vedere il parenscript appena prima che venga convertito in javascript.Macroexpand per parenscript

+1

Hm, si potrebbe definire la macro (non parenscript, lisp normale) macro e macro espanderla solito modo. Immagino che questo * dovrebbe * funzionare per molti casi, ma ovviamente è solo un trucco. –

risposta

5

In File di parenscript compiler.lisp, ci sono le funzioni ps-macroexpand-1 e ps-macroexpand. Sfortunatamente, non vengono esportati dal pacchetto Parenscript. Puoi chiamarli comunque usando un doppio colon.

Ad esempio,

(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 
Problemi correlati