Re: Extracting the name of a variable
- To: mathgroup at smc.vnet.net
- Subject: [mg26963] Re: Extracting the name of a variable
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Tue, 30 Jan 2001 03:38:16 -0500 (EST)
- References: <94tl4s$lck@smc.vnet.net> <94vrdo$o8i@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Mike, > So passing a predeclared list is a different story, and Ted pointed that out. I > think I can live with the restriction, though. Here's a way to get round the restriction - the ideas are more generally applicable. list1 := {q, z, w}; q = {1, 2, 3}; Attributes[ExtractNames] = {HoldAll}; ExtractNames[x_] := ReleaseHold[ Map[ToString[Unevaluated[#]] &, Hold[x] /. OwnValues[x], {2}] ] ExtractNames[x_] := ReleaseHold[ Map[ Function[t, ToString[Unevaluated[t]], HoldAll], Hold[x] /. OwnValues[x], {2}] ] ExtractNames[list1] {"q", "z", "w"} -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "Mike Yukish" <may106 at psu.edu> wrote in message news:94vrdo$o8i at smc.vnet.net... > "Ersek, Ted R" wrote: > > > Mike Yukish asked how one can take a variable which has a value assigned and > > convert it to a string without letting it evaluate. > > > > I provide the solution in the section for (ToString) on my web site. The > > URL is > > http://www.verbeia.com/mathematica/tips/Tricks.html > > Many thanks to all who replied. I posed my problem as a subpart of a more > complex problem, which still defeats me. I had hoped to Map[ ] the function > extractName over a list, and extract the names of all the variables in the list. > Ted has identified its difficulties, which I offer up here. > > Problem: Create a function that takes a list of variables, and extracts the > symbol name of each. This is an added level over the initial problem. > > q=4 > z=5 > > list1={q,z,w} > > extractNamesFromList[list1] > > out[]:= > > {"q","z","w"} > > Ted Ersek and Bob Hanlon have both shown me how to create a function that will > work with > > extractNamesFromList[{q,z,w}] > > out[]:= > {"q","z","w"} > > > but extractNamesFromList[list1] > out[]:= > "list1" > > So passing a predeclared list is a different story, and Ted pointed that out. I > think I can live with the restriction, though. > > > >