Как оценить код, переданный макросу `parenscript:ps`?
Как я могу оценить код, переданный в
ps
макрос в паренскрипте?
(let ((x 1))
(format nil "~a" (parenscript:ps x)))
;; => "x;" but I would like "1;"
я знаю это
ps
является макросом и является причиной не оценивать, но как я могу оценить код для перехода к
ps
макрос?
2 ответа
Решение
Ваш пример с использованием
ps:lisp
:
(let ((x 1))
(format nil "~a" (ps:ps (ps:lisp x))))
"1;"
Он представлен в первом разделе документации: https://common-lisp.net/project/parenscript/reference.html#section-ps-compiler
Я понял:
(defmacro lisp-to-js (lisp)
(eval ``(parenscript:ps ,,lisp)))
(let ((x 1))
(format nil "~a" (lisp-to-js x)))
;; => "1;"