lisp - 如何在 Common Lisp 中返回变量的值和名称

标签 lisp common-lisp

我正在尝试编写一个宏以在普通 lisp 中返回变量的名称和值。如何在 LISP 宏中返回变量的名称和值?

类似的东西

(返回值(x))

会回来

x 的值为 5

最佳答案

(defmacro returnval (x)
  `(format t "~a has value ~a." ',x ,x))

CL-USER> (defparameter *forty-two* 42)
*FORTY-TWO*
CL-USER> (returnval *forty-two*)
*FORTY-TWO* has value 42.
NIL
CL-USER> (let ((x 5))
           (returnval x))
X has value 5.
NIL

如果你真的想要在表单周围添加一组额外的括号,你也可以这样做:

(defmacro returnval ((x))
  `(format t "~a has value ~a." ',x ,x))

CL-USER> (returnval (*forty-two*))
*FORTY-TWO* has value 42.
NIL
CL-USER> (let ((x 5))
           (returnval (x)))
X has value 5.
NIL

关于lisp - 如何在 Common Lisp 中返回变量的值和名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28553932/

相关文章:

xml - 有什么东西是用于 s 表达式的,就像 XPATH 用于 XML 一样吗?

lisp - 符号和名称不同吗?

loops - 在循环宏中使用照应绑定(bind)

programming-languages - 当我想编写视频处理应用程序时,是否有合适的 C++ 替代品?

lisp - Common Lisp 中 WAR 文件的等价物

c - 有没有办法在C预处理器中执行任意代码?

lisp - 获取列表中 elt 的 cdr

lisp:如何在范围内创建临时方法特化

emacs - 如何在 Emacs 中将方括号与括号一样缩进?

lisp - 如何让文本在 LISP 中执行?