Fix POP
authorOwen Rodley <Strigoides@gmail.com>
Sat, 27 Apr 2013 12:33:31 +0000 (00:33 +1200)
committerOwen Rodley <Strigoides@gmail.com>
Sat, 27 Apr 2013 12:33:31 +0000 (00:33 +1200)
src/list.lisp

index 0f95f42..15a433f 100644 (file)
 (defmacro pop (place)
   (multiple-value-bind (dummies vals newval setter getter)
     (get-setf-expansion place)
-    (let ((car-symbol (gensym)))
+    (let ((head (gensym)))
       `(let* (,@(mapcar #'list dummies vals) 
-              (,car-symbol (car ,getter))
-              (,(car newval) (cdr ,getter)))
+              (,head ,getter)
+              (,(car newval) (cdr ,head))
+              ,@(cdr newval)) 
          ,setter
-         ,car-symbol))))
+         (car ,head)))))