help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Lexical binding and macros.


From: Stefan Monnier
Subject: Re: Lexical binding and macros.
Date: Wed, 15 Dec 2010 10:40:08 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux)

> Do they still leak memory?  From http://c2.com/cgi/wiki?EmacsLisp :

> "Note that variables bound with lexical-let are never released, even
> if they are never used. Try

>  (loop for i from 1 to 100000 collect (lexical-let ((x i)) '()))

> and watch it eat memory. So making infinity (ZeroOneInfinity) lexical
> variables is out of the question except for very small values of
> infinity."

Additionally to what Pascal already explained, I'll add that,
lexical-let, like `loop' are relatively heavy macros, so you definitely
don't want to run them interpreted (where the macro is re-expanded each
time).  If you byte-compile the code above, the memory use will
be identical to what you get with

  (loop for i from 1 to 100000 collect (let ((x i)) '()))

  
        Stefan


reply via email to

[Prev in Thread] Current Thread [Next in Thread]