Mail von Nicolas Goaziou, Sun, 04 Jun 2017 at 11:35:34 +0200: Hello,
> "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) This I understand, but cannot see it in the macrostep-expanded code. I will try learn more to understand this. So it is obvoius now that you are a lisp magician of 8th grade. :-) Thanks and kind regards, Stefan -- Stefan-W. Hahn It is easy to make things. It is hard to make things simple.