Re: HoldForm Question
- To: mathgroup at smc.vnet.net
 - Subject: [mg41358] Re: HoldForm Question
 - From: Torben Winther Graversen <immtwg at remove.student.dtu.dk>
 - Date: Fri, 16 May 2003 06:40:45 -0400 (EDT)
 - Organization: UNI-C
 - References: <b9viur$e0i$1@smc.vnet.net>
 - Sender: owner-wri-mathgroup at wolfram.com
 
Dana DeLouis <delouis at bellsouth.net> wrote:
[...]
: In this simple table, I would like to first substitute the values of r &
: c, but then not reduce the equation.
: MatrixForm[Table[HoldForm[(2*Pi*r*c)/8], {r, 0, 7}, {c, 0, 7}]]
: I would like "2 Pi 0 0 / 8",  "2 Pi 0 1 / 8"....etc
Hi Dana,
When Table evaluates it's expression it does it by
temporarily assigning each value to the loop variables.
Sort of like:
In[1]:= r = 0; c = 0;
In[2]:= HoldForm[(2*Pi*r*c)/8]
In[3]:= r = 0; c = 1;
In[4]:= HoldForm[(2*Pi*r*c)/8]
...which does not replace the value of r and c, since they
are held by HoldForm. Look in the book about Block[] for
more on that. What you want is Replace or just "/.":
Table[HoldForm[(2*Pi*r*c)/8] /. {r->r1, c->c1}, 
      {r1, 0, 7}, {c1, 0, 7}]
This will perform the replacement for each value. Replace
doesn't mind that the expression is held. Actually, you 
don't need the extra variables r1 and c1 as long as you
use HoldPattern:
Table[ HoldForm[(2*Pi*r*c)/8] /. 
         {HoldPattern[r]->r, HoldPattern[c]->c},
       {r, 0, 7}, {c, 0, 7}]
See section A.4.4 for a short list of the use of the different
Hold's. (http://documents.wolfram.com/v4/MainBook/A.4.4.html)
Hope that helps.
- Torben