Re: Re: iterator strings as lists?
- To: mathgroup at smc.vnet.net
- Subject: [mg3557] Re: [mg3528] Re: iterator strings as lists?
- From: Richard Mercer <richard at seuss.math.wright.edu>
- Date: Mon, 25 Mar 1996 21:32:14 -0500
- Sender: owner-wri-mathgroup at wolfram.com
Dave Wagner wrote, in reference to the HoldAll attribute of Table, > I don't know what the design rationale for this is. It > seems to me like Table could get by with the HoldFirst > attribute, but maybe there's some pathological case of > which we're not aware that precludes this. > There is undoubtedly more than one reason, but one at least is not so pathological. Table allows you to use as an index a variable that already has an assigned value. j = 8; Table[i*j,{i,1,3},{j,1,2}] {{1, 2}, {2, 4}, {3, 6}} If the HoldAll attribute is removed, this feature is lost. Unprotect[Table]; Attributes[Table] = {HoldFirst}; Table[i*j,{i,1,3},{j,1,2}] Table::itraw: Raw object 8 cannot be used as an iterator. Table[i j, {i, 1, 3}, {8, 1, 2}] This situation also occurs with Plot. Plot has the HoldAll attribute so that the following command produces the expected graph with no problems. x = 8; Plot[x^2,{x,0,1}]; These features are essential for non-expert users, who assign values to commonly used variables with reckless abandon (experts know better). If you don't see yourself having this particular problem, my guess is that changing the HoldAll attribute to HoldFirst would not cause any serious problems. Richard Mercer ==== [MESSAGE SEPARATOR] ====