Re: Listable Attribute of Pure Function that returns a
- To: mathgroup at smc.vnet.net
- Subject: [mg130729] Re: Listable Attribute of Pure Function that returns a
- From: Alex Krasnov <akrasnov at eecs.berkeley.edu>
- Date: Tue, 7 May 2013 03:54:08 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20130506082413.AC36369C3@smc.vnet.net>
On Mon, 6 May 2013, Dan O'Brien wrote: > Now, I do the same but instead I define a pure function > In[37]:= ClearAll[func] > SetAttributes[func, Listable] > func = {{#1, #2}, {#3, #4}} &; > func[a, b, c, Array[d, 4]] > > Out[40]= {{a, b}, {c, {d[1], d[2], d[3], d[4]}}} > > Clearly this is not behaving as a listable function, its simply > substituting the list of d's for the 4th argument. In my understanding, pure functions with anonymous parameters do not support attributes. Pure functions with named parameters do as follows: In: Function[{a, b, c, d}, {{a, b}, {c, d}}, Listable][a, b, c, Array[d, 4]] Out: {{{a, b}, {c, d[1]}}, {{a, b}, {c, d[2]}}, {{a, b}, {c, d[3]}}, {{a, b}, {c, d[4]}}} > If I do the same for a pure function that does not return a list, > everything is fine: > > In[42]:= ClearAll[func2] > SetAttributes[func2, Listable] > func2 = (#1 + #2)/(#3 - #4) & > func2[a, b, c, Array[d, 4]] > > Out[44]= (#1 + #2)/(#3 - #4) & > > Out[45]= {(a + b)/(c - d[1]), (a + b)/(c - d[2]), (a + b)/( > c - d[3]), (a + b)/(c - d[4])} > > And in any case, mathematica behaves the same here if I don't do > anything with the Attributes of func2, that is, there is no need to > explicitly SetAttributes to Listable for this particular example. In this case, func2 is not Listable, but Plus, Minus, Divide are. Alex
- References:
- Listable Attribute of Pure Function that returns a matrix
- From: Dan O'Brien <danobrie@gmail.com>
- Listable Attribute of Pure Function that returns a matrix