MathGroup Archive 2006

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

Search the Archive

Re: Re: variable "K"? (Really strange behavior . . . )

  • To: mathgroup at smc.vnet.net
  • Subject: [mg69253] Re: Re: variable "K"? (Really strange behavior . . . )
  • From: albert <awnl at arcor.de>
  • Date: Sun, 3 Sep 2006 23:46:57 -0400 (EDT)
  • References: <ed6918$jho$1@smc.vnet.net> <200609011041.GAA25571@smc.vnet.net> <acbec1a40609010800w611c1bc2h322f089ea527b535@mail.gmail.com> <edae60$qdh$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Hi AES,

> The problem arises if it's your practice (as it is mine) to start
> your notebooks with Remove["Global`*"] as the first Input cell, and
> then define various functions and modules in the immediately
> following cells, carefully avoiding assigning any numerical values to
> any symbols or parameters in those functions and modules until after
> all those definitions have all been completed.
> 
> Many of the symbols or parameters in those functions or modules will,
> of course be given numerical values further down in the notebook,
> when you run specific cases, but starting the notebook with
> Remove["Global`*"]  means (or *should* mean) that if you run the
> notebook once, then re-run it from the top, the initial functions and
> modules will not be contaminated by numerical values assigned in the
> previous run.
> 
> The problem is, K is apparently *not* cleared out by
> Remove["Global`*"], and no warning of this is given; and hence if
> you've used K as a variable in these initial definitions, the value
> of K from the previous run is "hard-wired" into the initial
> definitions on the following run -- whether that's what you intended
> or not.

I think it should be obvious that Remove["Global`*"] is only doing almost
what you want, and only by chance. As the documentation will tell it
removes all symbols in the context "Global`". If you define (own)values for
symbols in other contexts, may that be "System`" as in the case you
mentioned or in any other context, e.g. mycontext`var = 5, these will not
be removed, and there is no reason to believe they should. Nothing wrong
with Mathematica, I think. 

The fact that variable names starting with uppercase letters can conflict
with internal names is well known and documented. If for readability you
want to use short uppercase letters for variable names, I would suggest to
use the script-Letters. These you can input from a palette or with
Esc-scA-Esc for a script capital A. I use this all the time and have never
had problems with it.

For cleanup of the kernel you should check the package CleanSlate`, because
that AFAIK has been made to provide the functionality you are "misusing"
Remove["Globals*"] for. If CleanSlate` will not cleanup System`-Variables
that have been changed, than you could ask the author of that package (Todd
Gayley I think) to include such a functionality or provide it yourself.

hth, 

albert


  • Prev by Date: Variable-level outlines? (of notebooks, in the notebooks themselves)
  • Next by Date: Re: Errors in Mathematica
  • Previous by thread: Re: Re: variable "K"? (Really strange behavior . . . )
  • Next by thread: Re: variable "K"? (Really strange behavior . . . )