(defmacro setter (V) (let ((X (gensym "X"))) `(lambda (,X) (setf ,V ,X)))) (defmacro getter (V) `(lambda () ,V)) (let ((last nil)) (mapcar (setter last) '(1 2 3 4 5 6 7)) last)