"Stefan-W. Hahn" <stefan.h...@s-hahn.de> writes: > What I don't understand is, if I expand the pcase with (macrostep-expand) I > get the following: > > ,---- > | (let (res) > | (dolist (pair (buffer-local-variables)) > | (if > | (consp pair) > | (let* > | ((x > | (car pair)) > | (x > | (cdr pair))) > | (let > | ((val x) > | (var x)) > | (push > | (list 'set var val) > | res))) > | nil)) > | res) > `---- > > And this is obviously wrong.
This is not obviously wrong. You may be thinking that both `x' symbols are the same, but they are not. E.g., (let ((s1 (make-symbol "x")) (s2 (make-symbol "x"))) (list (list s1 s2) (eq s1 s2))) => ((x x) nil) Regards,