Re: What does FullForm[ ] actually do?

• To: mathgroup at smc.vnet.net
• Subject: [mg90507] Re: What does FullForm[ ] actually do?
• From: Szabolcs Horvát <szhorvat at gmail.com>
• Date: Fri, 11 Jul 2008 02:03:48 -0400 (EDT)
• References: <g54oj0\$eu9\$1@smc.vnet.net>

```FullForm[] prints the expression using a notation that makes it easy for
us to see its structure.

In[1]:= Attributes[FullForm]
Out[1]= {Protected}

It does not have any Hold* attributes so yes, the expression is
evaluated before the FullForm is printed.

In[2]:= FullForm[Hold[a=b]]
Out[2]//FullForm= Hold[Set[a,b]]

In[3]:= FullForm[Hold[a=b;]]
Out[3]//FullForm= Hold[CompoundExpression[Set[a,b],Null]]

AES wrote:
> I'm having trouble grasping just what it is that FullForm[ ] does.  For
> example:
>
> 1)  Page 424 of the M5 Book says:
>
>       "FullForm[expr] shows the internal form of an
>        expression in explicit functional notation"
>
> and gives a moderately complex example of this.
>
> I don't find it clearly stated, however, there or anywhere else in the
> immediately accessible M5 or M6 documentation, whether executing
> "FullForm[expr]" also executes the "expr" itself, although some
> experimenting seems to show that it does.  If so, perhaps the
> documentation ought to make this clear. . . ?
>
> 2)  Then, just as an example, executing FullForm[y = {a+b}] gives (that
> is, Prints, or displays on screen) only the output List[a,b] -- the "y
> =" is gone.
>
> But isn't the full expr that's operated on by FullForm, or that forms
> the argument of FullForm[expr], the complete expression "y = {a+b}".
> That's what fits the stated syntax of the FullForm[expr] command -- and
> moreover, page 230 of the M5 Book says:
>
>      2.1.1  Everything Is an Expression
>
>      "...everything you type into M is  treated as an expression."
>
> Isn't the "y = " part typed in as part of expr also?  Doesn't it have to
> have some form of "internal form"?
>
> 3)  Even without the "y =" part, suppose we execute either of the inputs
> FullForm[y={a+b};]  or  FullForm[{a+b};] (with a semicolon added).
>
> Either of these gives us back the displayed result "Null" -- but the
> first of them also sets the value of y to {a+b}, confirming that the
> complete expression inside the FullForm brackets was indeed executed.
>
> But what is it that's "null" here?  The "{a+b}" or even the "{a+b};"
> part clearly isn't null, since it gets put into y in the first form.
> And isn't ";" (the semicolon) also an expression, and also part of the
> "{a+b};" expression?  ("Everything in M is an expression.")   Don't both
> ; and {a+b}; have to have an internal form?
>
> The bottom line seems to be that FullForm[{a+b}], when executed, in some
> cases does as claimed "show the internal form of that  expression in
> explicit functional notation."
>
> 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 . . . ?
>

```

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