Mathematica Stack Exchange is a question and answer site for users of Mathematica. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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
Try 2+2//Hold//FullForm – C. E. Aug 27 '14 at 21:44
Have a look at HoldForm – mfvonh Aug 27 '14 at 21:44
You can try prepending a Hold. Hold[2+2] // FullForm. You might also like TreeForm for this purpose. – evanb Aug 27 '14 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 '14 at 21:49
Thanks, Hold works. – Ezo Aug 27 '14 at 21:55
up vote 7 down vote accepted
tree = Function[x, Defer @ FullForm @ x, HoldAll];


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


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.