为什么我需要在mapcar中使用符号值来赋值?

时间:2014-09-30 03:58:34

标签: lisp common-lisp

如果我将x初始化为

(setf x 0)

然后我可以通过

直接更改值
(setf x 1)

因此,在使用mapcar时,为什么必须使用symbol-value分配给此符号?

(mapcar #'(lambda (a b) 
            (setf (symbol-value a) b)) 
         '(x) 
         '(1))

是否与报价有关?

1 个答案:

答案 0 :(得分:1)

首先,不要使用setf进行初始化,按defvardefparameter定义变量。

其次,你从'(x)而不是地方获得符号'X,与setf一起使用,所以你需要按符号值来放置,然后用setf宏设置它。