> (setq x '(1 2 3)) (1 2 3) > (rplaca x 'a) (A 2 3) > x (A 2 3) > (rplacd x 'a) (A . A) > x (A . A)Xlispの内部では以下の処理がなされています.
#define rplaca(x,y) ((x)->n_car = (y)) #define rplacd(x,y) ((x)->n_cdr = (y)) LVAL xrplca() { LVAL list,newcar; list = xlgacons(); newcar = xlgetarg(); xllastarg(); rplaca(list,newcar); return (list); } LVAL xrplcd() { LVAL list,newcdr; list = xlgacons(); newcdr = xlgetarg(); xllastarg(); rplacd(list,newcdr); return (list); }