MathGroup Archive 2008

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

Search the Archive

What does FullForm[ ] actually do?

  • To: mathgroup at
  • Subject: [mg90467] What does FullForm[ ] actually do?
  • From: AES <siegman at>
  • Date: Thu, 10 Jul 2008 06:35:26 -0400 (EDT)
  • Organization: Stanford University

I'm having trouble grasping just what it is that FullForm[ ] does.  For 

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: Display[ ] renewed?
  • Next by Date: Re: Coupled second-order nonlinear ODEs
  • Previous by thread: Glitch in Exporting PDFs from Mathematica to Illustrator, one solution
  • Next by thread: Re: What does FullForm[ ] actually do?