Как оценить код, переданный макросу `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;"
Другие вопросы по тегам