Martin Simmons martin@lispworks.com writes:
BTW, just to clarify the l-t-v semantics: all dynamic variable bindings in the global and dynamic environments at load time are available, even though the null lexical environment has no bindings. The null lexical environment just prevents you from mixing up load time and execution time like this:
(let ((foo (print 10))) ; a lexical binding (load-time-value foo))
It's unfortunately not as easy as that because of:
It is guaranteed that the evaluation of [L-V-T's] form will take place only once when the file is loaded, but the order of evaluation with respect to the evaluation of top level forms in the file is implementation-dependent.
So L-V-T cannot portably access variables defined in other toplevel forms of the same file.
-T.