[Ecls-list] LOAD-TIME-VALUE and literal object externalisation.

Juan Jose Garcia-Ripoll jjgarcia at users.sourceforge.net
Sun Apr 13 08:53:57 UTC 2008


Hi Samium,

On Fri, Apr 11, 2008 at 12:27 PM, Samium Gromoff
<_deepfire at feelingofgreen.ru> wrote:
>  So, here's the test case:
>  (eval-when (:compile-toplevel :load-toplevel :execute)
>   (defparameter foo (lambda ())))
>
>  (load-time-value foo)
>
>  deepfire at canopus:~/local/mdb$ ecl -eval '(compile-file "foo.lisp")'
>  ;;; Loading #P"/usr/lib/ecl/cmp.fas"
>  ;;; Loading #P"/usr/lib/ecl/sysfun.lsp"
>  ;;; Compiling foo.lisp.
>  ;;; Compiling (DEFPARAMETER FOO ...).
>  An error occurred during initialization:
>  Object #<bytecompiled-function 08091af0> cannot be externalized.

Thanks for reporting this bug. LOAD-TIME-VALUE was unfortunately coded
so as to handle properly lists and objects other than symbols. I had
not contemplated the possibility of using global variables. That
produced all problems.

Now, as for your code, beware that LOAD-TIME-VALUE may be evaluated
_earlier_ than you expect, even before the DEFPARAMETER definition in
your code. This is not the case in ECL, but the standard I think
allows that.

Juanjo

-- 
Facultad de Fisicas, Universidad Complutense,
Ciudad Universitaria s/n Madrid 28040 (Spain)
http://juanjose.garciaripoll.googlepages.com




More information about the ecl-devel mailing list