Re: A possible bug in Lists
- To: mathgroup at smc.vnet.net
- Subject: [mg34417] Re: [mg34392] A possible bug in Lists
- From: Andrzej Kozlowski <andrzej at platon.c.u-tokyo.ac.jp>
- Date: Sun, 19 May 2002 04:14:29 -0400 (EDT)
- Sender: owner-wri-mathgroup at wolfram.com
I must say, I am a little surprised that you think there could be a bug at such a basic level, which must have presumably survived over a decade of Mathematica's existence without anyone noticing ?? Th answer to why you can do this is: because it is very useful. Remember, Mathematica is above all a programming language. The mechanism responsible for this is called "listability". Suppose you have a function, say f, and give it the attribute Listable: In[1]:= SetAttributes[f,Listable] f will now thread over list of the same length, as follows: In[2]:= f[{a,b,c},{d,e,f}] Out[2]= {f[a,d],f[b,e],f[c,f]} But additionally it will work if one of the arguments is not a list but just a single element: In[3]:= f[{a,b,c},d] Out[3]= {f[a,d],f[b,d],f[c,d]} The function Plus, like many mathematica functions has the attribute Listable: In[4]:= Attributes[Plus] Out[4]= {Flat,Listable,NumericFunction,OneIdentity,Orderless,Protected} That basically should answer your question. One might add that listability is defined in terms of the Mathematica function thread: In[5]:= ClearAll[f] In[6]:= Thread[f[{a,b,c},{d,e,f}]] Out[6]= {f[a,d],f[b,e],f[c,f]} In[7]:= Thread[f[{a,b,c},d]] Out[7]= {f[a,d],f[b,d],f[c,d]} Andrzej Kozlowski Toyama International University JAPAN http://platon.c.u-tokyo.ac.jp/andrzej/ On Saturday, May 18, 2002, at 04:50 PM, Doron wrote: > Hello there , > > I am having a problem in Mathematica 4.1 : > > Evaluating : 1-{1,1} or {1,1}-1 returns {0,0} > > Is that ok ? > > how is it that I can subtract a vector from a scalar ? > > Thank you for your help , Doron . > > >