MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: What does FullForm[ ] actually do?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg90501] Re: What does FullForm[ ] actually do?
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Fri, 11 Jul 2008 02:02:38 -0400 (EDT)
  • Organization: The Open University, Milton Keynes, UK
  • References: <g54oj0$eu9$1@smc.vnet.net>

AES wrote:

<snip>

> However, the FullForm[{a+b};] or FullForm[y={a+b};] examples seem to 
> show that executing FullForm[expr] returns the result of executing that 
> expr, not the expression itself . . . ?

The documentation for FullForm reads, "FullForm acts as a 'wrapper', 
which affects display, but *not* evaluation." [1]

The key point is, "[...] affects display, but *not* evaluation."

In other words, the standard evaluation process *occurs* as usual -- as 
if FullForm was not there -- since FullForm has no specific attributes 
that tell it not to do so (HoldFirst, HoldRest, etc.). (Note that you 
can see the attributes attached to a symbol thanks to Attributes[].)

Again, "[...] affects display, but *not* evaluation."

Therefore, as for any other function that is not specifically set to 
prevent the evaluations of some or all of its arguments, the argument of 
FullForm are evaluated first, then the full form of the resulting 
expression is displayed.

One way to prevent the evaluation of an expression is to wrap it inside 
HoldForm or Unevaluated or Defer or ...

     In[1]:= FullForm[Unevaluated[y = {a + b}]]

     Out[1]//FullForm= Unevaluated[Set[y, List[Plus[a, b]]]]


On the same document about FullForm, some examples are worth looking at [2]:

     FullForm effects display but not evaluation:

     In[1]:= FullForm[Integrate[x^n, x]]

     Out[1]//FullForm= Times[Power[Plus[1, n], -1], Power[x, Plus[1, n]]]

     Apply FullForm to the evaluated integral:

     In[2]:= Integrate[x^n, x]

     Out[2]=

      1 + n
     x
     ------
     1 + n

     In[3]:= FullForm[%]

     Out[3]//FullForm= Times[Power[Plus[1, n], -1], Power[x, Plus[1, n]]]


Regards,
- Jean-Marc

[1] "FullForm", _MORE INFORMATION_,
http://reference.wolfram.com/mathematica/ref/FullForm.html

[2] "FullForm", _Properties & Relations_,
http://reference.wolfram.com/mathematica/ref/FullForm.html


  • Prev by Date: Re: Coupled second-order nonlinear ODEs
  • Next by Date: Re: Multiple Executions of .nb file part2
  • Previous by thread: Re: What does FullForm[ ] actually do?
  • Next by thread: Re: What does FullForm[ ] actually do?