MathGroup Archive 2011

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

Search the Archive

Re: Why does Manipulate leak global symbols? (Potential bug here?)

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123902] Re: Why does Manipulate leak global symbols? (Potential bug here?)
  • From: Szabolcs Horvát <szhorvat at gmail.com>
  • Date: Thu, 29 Dec 2011 02:53:29 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <jd71p5$140$1@smc.vnet.net> <jdeqc2$8op$1@smc.vnet.net>

It appears these symbols are created during the formatting (display) of 
the Manipulate object, and not while the Manipulate function runs.

On 2011.12.28. 11:17, David Reiss wrote:
> This is presumably a bug in that what otherwise should be System
> context (or some other Context) symbols are being placed into the
> Global Context when they are being defined at the first instance of
> the use of a Manipulate.   One also comes across this as one uses
> Mathematica -- not all symbols have been properly contextified: given
> how many symbols exist, it's amazing that it doesn't happen more
> often.
>
> --David
>
>
>
>
> On Dec 25, 6:35 am, Bill Rowe<readn... at sbcglobal.net>  wrote:
>> On 12/24/11 at 7:08 AM, szhor... at gmail.com (Szabolcs) wrote:
>>
>>> It appears that in Mathematica 8, using Manipulate will create some
>>> symbols in the global context.  Let me illustrate:
>>> First, I use this to monitor the contents of Global` in real time:
>>> Dynamic@Refresh[Sort@Names["Global`*"], UpdateInterval ->  2]
>>> Then I evaluate Manipulate[n, {n, 1, 10}]
>>> Note that the following unexpected symbols have been added to the
>>> Global` context: BitDepth, FullScreenArea, Resolution, ScreenArea
>>
>>> Why does this happen?  Is it a bug?  Can it cause any problems (e.g.
>>> if I have defined BitDepth before using Manipulate, in the belief
>>> that there's no such builtin)?
>>
>> I can't answer as to why this happens. But I doubt that it is a
>> bug and it seems to have no conflict with things you define.
>> That is, if I first do
>>
>> BitDepth=2;
>>
>> then execute the code you posted in a fresh session, the value I
>> assigned to BitDepth is unchanged. Alternatively, if I start a
>> fresh session, execute the code above then type BitDepth in a
>> new cell, I see BitDepth is colored consistent as any undefined
>> symbol would be.
>>
>>> This makes me feel a bit insecure.  I am not sure if I might
>>> inadvertently break something by defining those symbols, thinking
>>> that they're not used by Mathematica (since they're syntax-coloured
>>> blue).
>>
>> It seems the best way to ensure no conflicts could occur is to
>> simply use a lower case letter as the first letter of the name
>> of anything you create.
>
>


-- 
Szabolcs Horvát
Mathematica QA site proposal: http://area51.stackexchange.com/proposals/37304



  • Prev by Date: Re: Retrieving pasteable function definition without contexts preprended
  • Next by Date: Re: DeleteCases
  • Previous by thread: Re: Why does Manipulate leak global symbols? (Potential bug here?)
  • Next by thread: Re: Why does Manipulate leak global symbols? (Potential bug here?)