Re: List arguments to functions
- To: mathgroup at smc.vnet.net
- Subject: [mg45557] Re: List arguments to functions
- From: bobhanlon at aol.com (Bob Hanlon)
- Date: Wed, 14 Jan 2004 01:26:12 -0500 (EST)
- References: <bu0cnm$aib$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
The problem is not with Plus but rather with your function definition. Clear[myfunc]; myfunc[x_,y_]=Apply[Plus,x+y]; ?myfunc myfunc myfunc[x_, y_] := Plus @@ (x + y) However, if you use SetDelayed Clear[myfunc]; myfunc[x_,y_]:=Apply[Plus,x+y]; ?myfunc myfunc myfunc[x_, y_] := Plus @@ (x + y) myfunc[{1,2,3},{4,5,6}] 21 I strongly recommend that you do not change the attributes of built-in functions. It will have numerous unintended side-effects. Bob Hanlon In article <bu0cnm$aib$1 at smc.vnet.net>, Chris Rozell <crozell at rice.edu> wrote: << 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!