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.

I mean, suppose I have this expression:

2 + 2

I want to get something like this:

Plus[2, 2]

as an output. I've tried FullForm, but this just evaluates 2+2 and returns 4. Is this even possible?

share|improve this question
1  
Try 2+2//Hold//FullForm –  Pickett Aug 27 at 21:44
    
Have a look at HoldForm –  mfvonh Aug 27 at 21:44
    
You can try prepending a Hold. Hold[2+2] // FullForm. You might also like TreeForm for this purpose. –  evanb Aug 27 at 21:45
    
Generally, what you are seeking is to prevent kernel evaluation. Hold and its ilk (Defer, Unevaluated, Inactive, etc.) are the mechanisms for this, depending on precisely what you want. Look at this page for more information. –  mfvonh Aug 27 at 21:49
    
Thanks, Hold works. –  Ezo Aug 27 at 21:55

1 Answer 1

up vote 7 down vote accepted
tree = Function[x, Defer @ FullForm @ x, HoldAll];

Now:

2 + 2 // tree
Plus[2, 2]

I used Defer to allow the output to be evaluated. If you do not prefer this replace it with HoldForm.

For some explanation of the mechanics of this code see: Why doesn't "Defer" work with "TableForm"?

See also my standard methods for analyzing parsing.

share|improve this answer

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.