Add-binding was previously used only via make-binding-internal. Your patch bypasses all the checks that the make-* functions do, and the functionality they provide. Is that clearer?
yep, please find the new version of the patch attached.
Maybe a make-shared-binding is what's missing? Indeed something seems missing, e.g. "create only if not existing already, but I don't know the name of the possibly existing binding".
for now i simply used make-accum-var-binding as you suggested in a few mails before. some doc fragmants: FIRST-TIME-P evaluates to true for the first time it is evaluated, otherwise to nil. It works like that even inside conditionals, only the first evaluation counts. Example: (iter (for el in '("a" 1 2 3 "b")) (when (numberp el) (unless (first-time-p) (princ ", ")) (princ el))) prints "1, 2, 3" FIRST-ITERATION-P evaluates to true inside the loop body in the first loop cycle, otherwise to nil. hope it helps, - attila (alias 101 on irc &no 'its not lisp code :)