MathGroup Archive 2002

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

Search the Archive

Re: function mySet[]

  • To: mathgroup at smc.vnet.net
  • Subject: [mg36121] Re: [mg36096] function mySet[]
  • From: Omega Consulting <omega_consulting at yahoo.com>
  • Date: Thu, 22 Aug 2002 04:32:58 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

At 04:52 AM 8/21/2002, Prof. Korvink wrote:
>I am struggling with a problem:
>
>I would like to have a function mySet[] that takes a string argument
>that is the correct string name of a "variable" and is able to
>make assignments to that variable. Naively:
>
>a = { 1, 2, 3, 4, 5 };
>mySet[ s_String ] :=
>    Symbol[ s ] = { 2, 3, 4, 5, 6 }; (* ERRONEOUS! *)
>mySet[ SymbolName[ a ] ];
>a
>
>should give:
>
>{ 2, 3, 4, 5, 6 }
>
>The problem is that Symbol[ s ] immediately evaluates to a List
>and I cannot for the love of anything generate an expression that
>evaluates to the actual unevaluated symbol.
>I have tried many variants with HoldAll and so on, with no luck,
>hopefully only out of ignorance.

There is a much simpler way to do this if you want to use the symbol. Just 
have the function Hold to argument.

Attributes[mySet] = {HoldFirst};
mySet[s_Symbol] := (s = {2, 3, 4, 5, 6})

If you insist on using a string, then it can be done by using a 
little-known form of ToExpression.

mySet[s_String] :=
   ReleaseHold[
     Map[mySet, (* uses definition above *)
       ToExpression[s, InputForm, Hold]
     ]
   ]

--------------------------------------------------------------
Omega Consulting
"The final answer to your Mathematica needs"

Spend less time searching and more time finding.
http://www.wz.com/internet/Mathematica.html



  • Prev by Date: RE: Choose one solution in Mathematica
  • Next by Date: Re: An interesting math problem
  • Previous by thread: Re: function mySet[]
  • Next by thread: Re: function mySet[]