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
5
A
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
- 1. Qual è la differenza tra macroexpand e macroexpand-1 in Clojure
- 2. Perché le funzioni di Parenscript sono state modificate in lettere minuscole?
- 3. C'è qualche strumento per tradurre il codice Lisp in Python?
- 4. Test unità flash per convenzioni macro e best practice
- 5. Problemi con clojure quote-paren `(...) macro
- 6. In Common Lisp perché la macro O usa un gensym, ma non AND?
- 7. Clojure defmacro perde metadati
- 8. (gensym) è sempre univoco, `(symb #) non lo è - perché?
- 9. Come acquisire in ambito lessicale in una macro Clojure?
- 10. differenza tra l'utilizzo lista e segno di spunta di nuovo nelle macro
- 11. Riflessione di avvertimento in codice generato da Clojure macro
- 12. Clojure - parziale in `->` macro
- 13. Spiega il triangolo pigro di Pascal in Clojure
- 14. In clojure, come eseguire la modellazione del codice durante l'implementazione di una macro mediante ricorsione
- 15. macro clojure utilizzando gen-class non crea annotazioni
- 16. Alternative per loop per R?
- 17. Ordina per COUNT per valore
- 18. Tutorial per OpenGL per iPhone
- 19. scorciatoia per 'aggiornamento per HEAD'
- 20. Equivalente rubino per Python per/
- 21. Java per loop per valore o per riferimento
- 22. Linq ordina per, raggruppa per e ordina per ogni gruppo?
- 23. Layout diversi per orizzontale e verticale per un'app per Android?
- 24. Clojure doseq genera un codice enorme?
- 25. Controllo della generazione di simboli in macro Clojure
- 26. Come ricorsive definizioni di macro vengono valutati
- 27. Simboli simboli non integrati
- 28. GUI per tastiera personalizzata per iPad
- 29. fseek() per riga, non per byte?
- 30. Per mutex o non per mutex?
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. –