GNU bug report logs -
#55156
[PATCH] eval.c: New functions `defvar-f` and `defconst-f`
Previous Next
Full log
View this message in rfc822 format
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>> Uhm -- are you saying that if you load an .elc file twice, the <exp>
>> parts in the defvars will be evaluated twice?
>
> Try:
>
> (let ((f (byte-compile
> '(lambda (x)
> (defvar sm-x (progn (message "hello %S" x) x))))))
> (funcall f 5)
> (funcall f 6))
>
> and check *Messages* :-(
Oh, if we call a function containing the defvar... Yes, that's probably
rare enough that nobody's noticed.
I tried to byte-compile a file and just load the .elc a few times, and
the message was only done once:
(defvar this-thing (message "hello"))
> If we prefer keeping the behavior we currently promise, we can of course
> do that (just change `defvar-f` so it takes a function of no argument as
> second arg, it makes the generated code (and the C code) a bit less
> simple, but it's no worse than what we currently have).
I think I'd prefer keeping the behaviour we currently promise, but I
don't have a strong opinion.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
This bug report was last modified 2 years and 364 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.