Take the 2-minute tour ×
Mathematica Stack Exchange is a question and answer site for users of Mathematica. It's 100% free, no registration required.

Suppose that I have an arbitrary variable myVariable. Is there some function fun -- either built-in or one that I can define -- that will return a string "myVariable" when I pass it myVariable?

I would like the output...

myVariable = 123456;
fun[myVariable]

...to give the output...

"myVariable"

... (a string output) for some function fun. Do you have any suggestions? Thanks so much.

share|improve this question
11  
Looks like you need SymbolName[Unevaluated[myvar]]. –  Leonid Shifrin Sep 13 '13 at 2:05
add comment

2 Answers 2

up vote 13 down vote accepted

You can give the function one of the Hold Attributes.

SetAttributes[fun, HoldFirst]

Then as Leonid suggested

fun[var_] := SymbolName[Unevaluated@var] 

Without the hold attribute, this will not work.

share|improve this answer
add comment

Any of these could be a start:

ToString@((Trace@myVariable)[[1]])

Or:

StringCases[ToString[Hold[myVariable]],RegularExpression["Hold\\[([[:print:]]+)\\]"] -> "$1"][[1]]
share|improve this answer
    
You don't need to use StringCases/regex if you use HoldForm instead of Hold –  rm -rf Sep 13 '13 at 2:38
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.