2015-11-26 19 views
5

Makroekstro makroları için makroekst veya makroexpand-1 eşdeğer var mı? Oluşturulan javascript (ps (some macro expression)) yapacaktır, ancak javascript dönüştürülür önce parenscript görmek güzel olurdu zamanlar vardır.Makale için makroeksti

+1

Hm, makro olarak makro (non parenscript normal lisp) tanımlayabilir ve makro ve olağan şekilde genişletin. Sanırım bu * pek çok vaka için çalışmalı, ama elbette sadece bir saldırı. –

cevap

5

parenscript en compiler.lisp dosyasında, fonksiyonlar ps-macroexpand-1 ve ps-macroexpand vardır. Ne yazık ki, parenscript paketi tarafından ihraç edilmez. Onları bir çift kolon kullanarak yine de arayabilirsiniz. Örneğin

,

(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