As already mentioned in the comment: FullForm
is a function that evaluates in the standard way because it has no attribute saying otherwise. One consequence is that before FullForm
acts on your input, it evaluates it, which leave only the result of cases.
None of this helps you to get your answer anyway. One easy way is to use Unevaluated
on arguments to get what you like
FullForm[Unevaluated[Cases[{a^2,a^3},a_^1]]]
(* Unevaluated[Cases[List[Power[a,2],Power[a,3]],Power[Pattern[a,Blank[]],1]]] *)
This works, but you will have the Unevaluated
in your output. Another way is to temporarily give FullForm
an attribute to hold its argument. This can be achieved with Internal`InheritedBlock
.
Internal`InheritedBlock[{FullForm},
SetAttributes[FullForm,{HoldFirst}];
Print[FullForm[Cases[{a^2,a^3},a_^1]]]
]
(* Cases[List[Power[a,2],Power[a,3]],Power[Pattern[a,Blank[]],1]] *)
You may ask why I print the output. The problem is that as soon as we leave the block, Mathematica restores the normal behavior of FullForm
which leads to an evaluation like you have seen it. Another way of getting the ouput that looks like it doesn't evaluate anymore is to replace the last line in the block with
HoldForm[#] &[FullForm[Cases[{a^2, a^3}, a_^1]]]
This should give you a start how to handle those cases in future. I strongly recommend that you read the Tutorial on Non-Standard Evaluation and the references therein.
FullForm
shows the result of the calculation. It's notHoldAll
. $\endgroup$FullForm
(that I can see) is a method given to show the unevaluated verbose form of an expression. I therefore contend that it is not "easily found in the documentation." $\endgroup$