经过一番试验&错误,我已设法编写宏mashup来打印名称&几个变量的值(用于调试)。它似乎有效,但我想看看如何更“专业”地编码?
(defmacro prt1 (var)
;Print a single variable and its value.
`(progn (princ (symbol-name ',var)) (princ " = ") (princ ,var) (terpri)))
(defmacro prt (&rest vars)
;Print the values of a number of variable names.
(eval `(append (list 'progn)
(map 'list #'(lambda (x) (list 'prt1 x)) ',vars)
(list (list 'terpri))
(list t)))) ;need to return t
调用(prt A B C)
然后打印当前绑定 - 例如:
A = 1
B = 2
C = 3
T
答案 0 :(得分:5)
(defmacro prt1 (var)
"Print a single variable and its value."
`(format t "~a = ~a~%" ',var ,var))
(defmacro prt (&rest vars)
"Print the values of variables."
`(progn ,@(loop for var in vars collect `(prt1 ,var))))