On Fri Oct 7 2016 Stefan Monnier wrote: > The first solution binds the <varN> variables lexically rather than > dynamically. That means that if those <varN> appear lexically inside > the <form> things will work correctly, but if <form> calls a function > which then refers to <varN> this reference will fail.
Thank you for the clarification. The code in bbdb-anniv binds the variables lexcially via let which also contains the call of eval. So this is fine. > This note about lexical binding is talking about a chunk of code like > > (let ((x 1)) > ... > (defvar x 5) > ...) > > if run in lexical-binding mode, the let will bind `x` statically, but > `defvar` always refers to the dynamically-bound variable `x`, just like > (set 'x 5) would. > > > This suggests to me that in your second approach the defvar's could > > also go inside the let, which appears rather odd to me. > > No, that wouldn't work: the (defvar <varN>) is there to declare that > subsequent uses of <varN> should use dynamic scoping. Again thanks for the clarification. I'll stay with the first approach you suggested. Roland ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ bbdb-info@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bbdb-info BBDB Home Page: http://bbdb.sourceforge.net/