Re: How to localize a symbol when using Manipulate?
- To: mathgroup at smc.vnet.net
- Subject: [mg112622] Re: How to localize a symbol when using Manipulate?
- From: Bill Rowe <readnews at sbcglobal.net>
- Date: Thu, 23 Sep 2010 04:22:41 -0400 (EDT)
On 9/22/10 at 1:58 AM, nma at 12000.org (Nasser M. Abbasi) wrote: >I want to make a call to a lower level function which makes an >expression (say build a polynomial in s) and returns it back to be >displayed. >I want this function to use a symbol, say s, to build the >polynomial. >The problem is how to localize the symbol itself so it is not >global. >Since one dose not declare things in Mathematica, (sometime I wish I >could) I can't declare the s to be a symbol, but must just use it. >Here is a simple example to show the problem: >If one does not pass a symbol for a lower level function during the >call to be used in constructing an expression, then the expression >will have $nnnn added to it. >Manipulate[process[n], {n, 2, 10}, >Initialization :> >(process[n_] := Module[{s}, s^n]) >] >If you run the above, the result shown will be s$nnn^2 where nnn is >some number. The simplest way I know to not get the s$nnn form created by using Module is to use Block instead. That is Manipulate[process[n], {n, 2, 10}, Initialization :> (process[n_] := Block[{s}, s^n]) ] will have display power of s rather than a power of s$nnn