Re: writing a function that would print the name of a
- To: mathgroup at smc.vnet.net
- Subject: [mg97673] Re: [mg97609] writing a function that would print the name of a
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Wed, 18 Mar 2009 04:55:47 -0500 (EST)
- Reply-to: hanlonr at cox.net
f1[x_String] := "The variable " <> x <> " contains the value " <> ToString[ToExpression[x]] x = 10 10 f1["x"] The variable x contains the value 10 SetAttributes[f2, HoldFirst] f2[x_Symbol] := "The variable " <> ToString[HoldForm[x]] <> " contains the value " <> ToString[x] f2[x] The variable x contains the value 10 Bob Hanlon On Tue, Mar 17, 2009 at 8:49 AM , johnclin at hss.caltech.edu wrote: > I have a question that seems simple but I just could not figure out > how to do it. > > I am trying to write a mathematica function that will print the *name* > of the variable that I pass to the function as well as the value > itself. > > For example, let's say that I define a variable x = 10. > > Now, I want to write a function that will print: > "The variable x contains the value 10". > > I tried something like: > displayOutput [varToPrint_] := ( > Print["The variable "]; > Print[ToString[varToPrint]]; (* <-- this is the problematic line*) > Print["contains the value "]; > Print[x]; > ) > > BTW, I do realize that the following works: > x = 10; > Print["The symbol ", HoldForm[x], " has a value of ", x]; > > So there is something about how Mathematica evaluates expression > inside a function that I am not understanding. Any suggestions?