Re: Attribute : Listable

• To: mathgroup at smc.vnet.net
• Subject: [mg20496] Re: [mg20391] Attribute : Listable
• From: Andrzej Kozlowski <andrzej at tuins.ac.jp>
• Date: Wed, 27 Oct 1999 02:04:57 -0400
• Sender: owner-wri-mathgroup at wolfram.com

```First a point of logic: the fact that a function is threaded over lists when
it has the attribute "Listable" does not imply that it isn't threaded over
lists when it doesn't have this attribute. More precisely, some functions do
this as a consequence of some of the way they are defined internally and not
as a result of adding an additional attribute which can be removed by the
user. This is easy to see in the case of N.  Here is the information on N
from the Mathematica book:

"N converts each successive argument of any function it encounters to
numerical form, unless the head of the function has an attribute such as
NHoldAll."

Thus:

In[8]:=
N[f[2, 3]]

Out[8]=
f[2., 3.]

This is true for any f, including List. Thus in this case the "listability"
is a consequence of a much more general property. Unlike the case of
functions having the attribute "Listable" you can't remove this property
from N.

The case of ComplexExpand and complex Expand  seems rather harder to
explain. Both of these functions do not thread over arbitrary heads (but
ExpandAll does):

In[1]:=
Expand[g[(1 + x)^3, (1 + x)^2]]
Out[1]=
3         2
g[(1 + x) , (1 + x) ]

but they thread over some, e.g. Plus, Times and List. This latter property
is needed in order so that entries of matrices can be expanded (for
example). Again, listability is a consequence of the internal code of Expand
and can't be removed.

--

> From: CORNIL Jack Michel <jmcornil at club-internet.fr>
To: mathgroup at smc.vnet.net
> Date: Tue, 26 Oct 1999 00:32:48 -0400
> To: mathgroup at smc.vnet.net
> Subject: [mg20496] [mg20391] Attribute : Listable
>
> Hello,
>
> I have a problem with the attribute "Listable".
>
> It is said in documentation that a function is threaded over lists if
> one of its attributes is "Listable".
>
> Neither the function N nor the function ComplexExpand has "Listable"
> among its attributes and however both of them are mapped on lists of
> numbers.
>
> Can someone explain me ?
>
>