如何评估传递给`parenscript:ps`宏的代码?

问题描述

如何评估Parenscript中传递给ps宏的代码

(let ((x 1))
  (format nil "~a" (parenscript:ps x))) 
;; => "x;" but I would like "1;"

我知道ps一个宏,是不进行评估的原因,但是如何评估传递给ps宏的代码

解决方法

您使用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;"

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...