MathGroup Archive 2002

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

Search the Archive

RE: function mySet[], Strings to Symbols

  • To: mathgroup at smc.vnet.net
  • Subject: [mg36120] RE: [mg36096] function mySet[], Strings to Symbols
  • From: "David Park" <djmp at earthlink.net>
  • Date: Thu, 22 Aug 2002 04:32:57 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

Jan,

My first choice would be to simply write

a = {2,3,4,5,6}

However, let's assume that you have a good reason to start with strings. The
way to prevent Symbol[s] from immediately evaluating to a previously set
value is to first Clear it. Fortunately, Clear allows strings as arguments.
So, I might use the following method.

mySet[s_String, value_] := (Clear[s]; Evaluate[Symbol[s]] = value)

a = {1, 2, 3, 4, 5};

"a" ~mySet~ {2, 3, 4, 5, 6};
a
{2, 3, 4, 5, 6}

Note that ~mySet~ is the Mathematica method for using mySet as an infix
operator.

David Park
djmp at earthlink.net
http://home.earthlink.net/~djmp/

From: Prof. Korvink [mailto:korvink at informatik.uni-freiburg.de]
To: mathgroup at smc.vnet.net

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.

What sometimes works (but circumstances is erratic!) is to do a:

mySet[ s_String ] :=
   Evaluate[ToExpression[StringJoin[s,"={2,3,4,5,6}"]]]

I do not find this a clean way to do things. Can anyone offer some
insight and perhaps a solution?

Jan Korvink




  • Prev by Date: Re: An interesting math problem
  • Next by Date: Re: function mySet[]
  • Previous by thread: AW: Choose one solution in Mathematica
  • Next by thread: Mathematica 4.2: Problem with online help.