Re: SymbolName question

*To*: mathgroup at smc.vnet.net*Subject*: [mg61810] Re: [mg61794] SymbolName question*From*: "David Park" <djmp at earthlink.net>*Date*: Mon, 31 Oct 2005 01:17:04 -0500 (EST)*Sender*: owner-wri-mathgroup at wolfram.com

Matt, If you want to eat your cake and have it too, that is be able to use symbols and also have the symbols take on values, then use rules instead of definitions. a1rule = a1 -> Array[r, {2, 2, 2}]; Print["The symbol ", SymbolName[a1], " has a value of ", a1 /. a1rule]; David Park djmp at earthlink.net http://home.earthlink.net/~djmp/ From: Matt [mailto:anonmous69 at netscape.net] To: mathgroup at smc.vnet.net Hello, It seems that if I want to print the 'name' of a symbol, that I need to save it in a variable before I actually use it. Is this expected behaviour? It would be imminently more useful if I could give any symbol to SymbolName and it would give me a string representation of the variable name. e.g. a1Name = SymbolName[a1]; a1 = Array[r, {2, 2, 2}]; Print["The symbol ", a1Name, " has a value of ", a1]; works, but if I try this: a1 = Array[r, {2, 2, 2}]; Print["The symbol ", SymbolName[a1], " has a value of ", a1]; it doesn't, and I get the following error: SymbolName::sym : Argument {nested list} at position 1 is expected to be a symbol. More... The online help states the following: "Once you have made an assignment such as x = 2, then whenever x is evaluated, it is replaced by 2. Sometimes, however, you may want to continue to refer to x itself, without immediately getting the value of x. You can do this by referring to x by name. The name of the symbol x is the string "x", and even though x itself may be replaced by a value, the string "x" will always stay the same." This seems to indicate that what I want to accomplish should in fact work without the need to first save the string representation of a symbol name before any value is assigned to it. $Version 5.1 for Microsoft Windows (October 25, 2004) Thanks, Matt