12
$\begingroup$

Bug introduced in 10.0.1 and fixed in 10.0.2


In Mathematica 10, the documentation still states that a symbol with attribute Temporary will automatically be removed when it is no longer needed. Now consider

Module[{a}, Information[a]]

=> (* Global\`a$105933 Attributes[a$105933]={Temporary} *)

This a$ variable is not exported from the Module and therefore not needed any more. However, in Mathematica 10 it is not removed:

Names["Global`a$*"]

=> (* {a$105933} *)

This looks like a minor bug to me.

$\endgroup$
9
  • 2
    $\begingroup$ According to this post (see the accepted answer) : "One problem with local functions created by Module is that these symbols won't be automatically garbage-collected when Module finishes (if they have DownValues, SubValues or UpValues. OwnValues are fine), and so may lead to memory leaks. To avoid that, one can Clear these symbols inside Module before returning the result." $\endgroup$
    – SquareOne
    Commented Oct 29, 2014 at 11:42
  • $\begingroup$ @SquareOne Yes, that is a very good post on localization. But it does not apply here, I did not make a local function. Clearing the variable in the Module should be (and is in earlier versions) superfluous. $\endgroup$ Commented Oct 29, 2014 at 12:02
  • $\begingroup$ Concerning the post, I understood that the problem concerned Symbols in general, not only functions. Anyway, this post dates back to January 2012, so it corresponds to version 8 ?? When you say "earlier versions", what versions are included ? $\endgroup$
    – SquareOne
    Commented Oct 29, 2014 at 14:20
  • $\begingroup$ Anyway, OK, I have reproduced your "bug" in version 10.0.1. and not in version 9. However, it seems to be related to the function Ìnformation only (?). If you try the example given in the Doc for Temporary, i.e :Module[{b}, Print[b]; Attributes[b]], and Names["Globalb$*"], the symbol b` was removed ... $\endgroup$
    – SquareOne
    Commented Oct 29, 2014 at 14:28
  • $\begingroup$ By the way, just try to enable the Suggestion Bar and do the tests again ... Whether you use Information or no, a new symbol is created in the global context : in your example it is a$, in mine b$. This is true for v9 or v10 ! (This is related to the already reported "Suggestion Bar bug"). $\endgroup$
    – SquareOne
    Commented Oct 29, 2014 at 14:42

1 Answer 1

9
$\begingroup$

I have checked it in versions 7.0.1, 8.0.4 and 10.0.1 (the Suggestion bar is turned off). The bug is present only in v.10.0.1, both v.7.0.1 and 8.0.4 return {"a"} after evaluating Names["Global`*"]:

screenshot

Moreover, if one adds a definition to the symbol a, the definition is not removed in v.10.0.1:

Remove["Global`*"]
Module[{a}, Information[a]; a = 1];
Symbol /@ Names["Global`*"]
Module[{a = 2}, Information[a];];
Symbol /@ Names["Global`*"]
{a, 1}

{a, 1, 2}

So it seems to be another v10 Module bug.

$\endgroup$
1
  • 2
    $\begingroup$ The behaviour has changed for me with v.10.0.2 (OS X 10.9.5) : when adding the defintions, now only {a} is returned (instead of {a, 1} or {a, 1, 2}. $\endgroup$
    – SquareOne
    Commented Jan 15, 2015 at 1:12

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.