Re: Array

*To*: mathgroup at smc.vnet.net*Subject*: [mg69252] Re: Array*From*: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>*Date*: Sun, 3 Sep 2006 23:46:52 -0400 (EDT)*Organization*: The Open University, Milton Keynes, UK*References*: <eddptn$3q3$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Bruce Colletti wrote: > The command: > > {A[1], A[2], A[3]} = {1, 2, 3} > > assigns a value to each A-variable. However, the command: > > Array[A,3] = {1,2,3} > > generates an error message. > > What is the difference between the two lines? > > Thankx. > > Bruce > Hi Bruce, The function Set, or = sign, has the attribute HoldFirst [1], that is the function does not create the array first but try to assign the list to the symbol Array[A, 3] and Array is of course write protected since it is a built-in function. Use Evaluate to force the evaluation of the first argument [2]. In[1]:= Array[A, 3] = {1, 2, 3}; --> Set::"write" : "Tag (Array) in (Array[A, 3]) is Protected. More... In[2]:= Attributes[Set] Out[2]= {HoldFirst, Protected, SequenceHold} In[3]:= Evaluate[Array[A, 3]] = {1, 2, 3}; In[4]:= A[1] Out[4]= 1 Regards, Jean-Marc [1] http://documents.wolfram.com/mathematica/functions/HoldFirst [2] http://documents.wolfram.com/mathematica/functions/Evaluate