如何 return Common Lisp 中变量的值和名称
How to return the value and name of a variable in Common Lisp
我正在尝试为 return 普通 lisp 中变量的名称和值编写一个宏。我如何 return LISP 宏中变量的名称和值?
所以像
(返回值 (x))
会return
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
我正在尝试为 return 普通 lisp 中变量的名称和值编写一个宏。我如何 return LISP 宏中变量的名称和值?
所以像
(返回值 (x))
会return
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