Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
1995
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 1995

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

Search the Archive

Re: [m1220] Equating a variable and its value

  • To: mathgroup at christensen.cybernetics.net
  • Subject: [mg1260] Re: [m1220] Equating a variable and its value
  • From: Anthony Rebello <arebello at knox.edu>
  • Date: Mon, 29 May 1995 03:08:51 -0400

On Fri, 26 May 1995, Jan Snellman wrote:

> Hello folks.
> 
> Study this codelet:
> 
> m=3; mult=Times[#,m]&; Clear[m]; mult[10]
> 
> To my dismay, I get 10 m, not 30.
> How can i convince Mathematica that only pedants make the distinction
> between a variable and its value?
> 
> Regards,
> Jan Snellman	jans at matematik.su.se
> 
> 

In[2]:=
Attributes[Function]
Out[2]=
{HoldAll, Protected}

	The problem is that Function has the attriibute 
HoldAll, which means that nothing in the expression Times[#,m]& will be 
evaluated until after the function has been applied somewhere.  So by 
clearing m before using mult you really are never letting the m in 
Times[#,m]& get replaced by 3.  I tried several implementations of 
Evaluate and ReleaseHold but nothing would force the replacement of m 
early enough.  The only solution seems to be to temporarily remove the 
HoldAll attribute from Function.  Here is an example of how that could be 
done.

In[16]:=
ClearAttributes[Function,{Protected,HoldAll}]
m=3; mult=Times[#,m]&; Clear[m]; mult[10]
SetAttributes[Function,{Protected,HoldAll}]
Out[17]=
30

NUMBERS-ARE-THE-ROOT-OF-ALL-EVIL..NUMBERS_A
.                                         R              
L                                         E               
I             Anthony Rebello             |       
V              Knox  College              T                           
E             Math Department             H                 
|                                         E              
L                                         |      
LA-FO-TOOR-EHT-ERA-SREBMUN.LIVE-LLA-FO-TOOR



  • Prev by Date: Numerous Functional Forms
  • Next by Date: COMPILATION OF ROUTINES USING LISTS OF REALS
  • Previous by thread: Re: Numerous Functional Forms
  • Next by thread: Re: [m1220] Equating a variable and its value