Re: Symbol name extraction
- To: mathgroup at smc.vnet.net
- Subject: [mg73712] Re: Symbol name extraction
- From: David Bailey <dave at Remove_Thisdbailey.co.uk>
- Date: Mon, 26 Feb 2007 06:11:03 -0500 (EST)
- References: <errlbu$83p$1@smc.vnet.net>
zac wrote:
> Dear Group,
>
> I have to write a list of parameters to a file, in string format.
> In the first shot, I've tried something like this:
>
>
> a = "x";
> b = 0;
> c = {1, 2, 3};
>
> printSymbol[vars__] :=StringJoin[Map[(SymbolName[#] <> " = " <>
> FullForm[#] <>";\n") &, {vars}]];
>
> printSymbol[a, b, c]
>
>
> but it fails to recognize symbol names. Any suggestion?
> thanks in advance
>
> Istvan Zachar
>
>
You have to stop your symbols being evaluated before you can access
their names. The following code seems about the easiest:
SetAttributes[printSymbol, HoldAll];
SetAttributes[ps, HoldAll];
ps[x_] := Print[HoldForm[x], "=", x];
printSymbol[vars__] := Map[ps, Unevaluated[{vars}]]
Note that one problem with using SymbolName is that it will not 'notice'
if the symbol is in a private context.
BTW, I often use the ps function (under another name) for debugging
purposes.
David Bailey
http://www.dbaileyconsultancy.co.uk