Re: memory release problem in mathematica6.0
- To: mathgroup at smc.vnet.net
- Subject: [mg83439] Re: memory release problem in mathematica6.0
- From: "Jean-Marc Gulliet" <jeanmarc.gulliet at gmail.com>
- Date: Tue, 20 Nov 2007 03:57:15 -0500 (EST)
- References: <fhegac$m08$1@smc.vnet.net> <fhh71o$8h2$1@smc.vnet.net>
Yaroslav Bulatov wrote: > Like several posters pointed out, it's saved in Out[]. > > It's a bit confusing because documentation for "CompoundExpression" > says that for expression of the form expr1;expr2; it's the value of > expr2 that's saved > > so if I do > "A = RandomInteger[{1}, 100000000]; Clear[A];" > > It should save value of Clear[A], which is null, but instead it saves > value of AA = RandomInteger[{1}, 100000000] Yes, the documentation is misleading, indeed. The last paragraph of the "More Information" section of the help page about "CompoundExpression (;)" reads, "expr1; expr2; returns value Null. If it is given as input, the resulting output will not be printed. *Out[n] will nevertheless be assigned to be the value of expr2.* [emphasize added]" The last sentence implies that whatever the value of expr2 is, this value is saved into Out[n] regardless of its display (display that is controlled by the presence or absence of a semicolon). Now, as you pointed out, Clear[] returns Null, and this Null from Clear is not store in Out[n]. This behavior is not specific to Clear, however, but applies to any expression that returns Null (like Print[] and Do[] in the example below). ----------------------------------------------------------------- Indeed, the documentation should clearly explain that this is the _last-non-null value_ of a compound expression that is stored in Out[n], as illustrated by the following example. In[1]:= a = 1; Table[a += 1, {10}]; Print[a]; Do[a += 1, {10}] During evaluation of In[1]:= 11 In[2]:= % Out[2]= {2, 3, 4, 5, 6, 7, 8, 9, 10, 11} ----------------------------------------------------------------- Regards, -- Jean-Marc