Hi Adam,
If you are willing to replace the Set with SetDelayed in the definition of
GrassType (which you said you
want to change from operation to operation), then there is a fairly simple
solution:
In[6]:=
GrassA = 1
GrassB = 2
Out[6]= 1
Out[7]= 2
In[8]:= GrassType := GrassA
And this is all you need to do:
In[9]:= Hold[GrassType] /. OwnValues[GrassType]
Out[9]= Hold[GrassA]
You can of course use HoldForm instead of Hold, or generally any head with
some Hold* attribute. If you want to convert to string, use something like
ToString[HoldForm[GrassType] /. OwnValues[GrassType]].
Hope this helps.
Regards,
Leonid
On Tue, May 4, 2010 at 2:29 PM, Adam <juneappal at gmail.com> wrote:
> Hello -
>
> Supposing I have declared:
> x = 1
> y = x
>
> Is there a function that can take y as an argument and return "x"?
>
> I would like to use it like this:
>
>
> ***
> GrassA = 1
> GrassB = 2
> GrassType = GrassA (*<---- I will toggle this for different model
> runs*)
>
> (*Lots of code and calculations, followed by summary printout *)
>
> Print[Row[{"GrassType = ", HOLDLIKEFUNCTION[GrassType], "\tDepth = ",
> h}]]
>
>
> *****
> HoldForm[GrassType] returns "GrassType," instead of the desired
> "GrassA."
>
> For now, I am using:
> ******
> Clear[GrassA, GrassB]
> Print[Row[{"GrassType = ", HOLDLIKEFUNCTION[GrassType], "\tDepth = ",
> h}]]
> ******
>
> Which has the desired effect, so I am not desparate for a solution -
> just wonder how other people would approach this.
>
>
>
>