Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2007

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: memory release problem in mathematica6.0

  • To: mathgroup at smc.vnet.net
  • Subject: [mg83381] Re: memory release problem in mathematica6.0
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Mon, 19 Nov 2007 06:09:50 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <fhegac$m08$1@smc.vnet.net> <fhh71o$8h2$1@smc.vnet.net> <fhp5s9$3ak$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

<snip>


  • Prev by Date: Re: Basic Question about Mathematica
  • Next by Date: Re: Symbolic vector handling
  • Previous by thread: Re: memory release problem in mathematica6.0
  • Next by thread: Re: memory release problem in mathematica6.0