Re: List arguments to functions
- To: mathgroup at smc.vnet.net
- Subject: [mg45575] Re: List arguments to functions
- From: "Peter Pein" <nospam at spam.no>
- Date: Wed, 14 Jan 2004 01:26:41 -0500 (EST)
- References: <bu0cnm$aib$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
"Chris Rozell" <crozell at rice.edu> schrieb im Newsbeitrag news:bu0cnm$aib$1 at smc.vnet.net... > I have basic experience with Mathematica, but this problem has stumped > me for the last day or so. Any help would be appreciated. > > I have a function that needs to take two lists as arguments, perform > operations on them, and then sum the resulting list. However, by > including the Plus function, it operates on each list item separately > (which is exactly the opposite of what I need. For a simple example, > > >myfunc[x_, y_] = Apply[Plus, x + y]; > >myfunc[{1, 2, 3}, {4, 5, 6}] > > > >{5, 7, 9} > > When what I would really like is the number 21 (i.e., 5+7+9, perform the > list addition first, then sum the components). In this simple example I > could perform the summation after the function returns, but in my real > problem this would not be possible. > > When reading the documentation, it appears that the Plus function > behaves this way because it has the attribute "Flat". But even after > removing that attribute it still behaves in the same way, so I may be > misunderstanding the description of "flat". Can anyone suggest a way to > either modify the Plus function behavior, or do this another way? Thank > you in advance! > Chris, you use Set (=) instead of SetDelayed (:=) in the definition of myfunc. So Mathematica evaluates Apply[Plus,x+y], which gives x+y before defining myfunc. If you use :=, Mathematica evaluates Apply[Plus,x+y] when executing the call to myfunc: In[1]:= myfunc[x_, y_] = Plus @@ (x + y); ?? myfunc Global`myfunc myfunc[x_, y_] = x + y In[3]:= Clear[myfunc]; myfunc[x_, y_] := Plus @@ (x + y); ?? myfunc Global`myfunc myfunc[x_, y_] := Plus @@ (x + y) In[6]:= myfunc[{1, 2, 3}, {4, 5, 6}] Out[6]= 21 -- Peter Pein, Berlin petsie at arcAND.de replace && by || to write to me "The ultimate goal of mathematics is to eliminate any need for intelligent thought." -Alfred N. Whitehead