I think you are looking for nconc?
[Function] nconc &rest lists
nconc takes lists as arguments. It returns a list that is the
arguments concatenated together. The arguments are changed rather than
copied. (Compare this with append, which copies arguments rather than
destroying them.) For example:
(setq x '(a b c)) (setq y '(d e f)) (nconc x y) => (a b c d e f) x
=> (a b c d e f)
You could use nconc to define a pushlist macro, to have an interface analogous to push:
(defmacro pushlist (lst place)
`(setf ,place (nconc ,lst ,place)))
And test it:
CL-USER>
(defparameter *v* (list 3))
*V*
(pushlist (list 1 2) *v*)
CL-USER>
(1 2 3)
CL-USER>
*v*
(1 2 3)
CL-USER>
Also note that I'm using (list 3), instead of '(3), after reading sigjuice's comment.