Re: How to think about Map[ ] ?
- To: mathgroup at smc.vnet.net
- Subject: [mg4693] Re: How to think about Map[ ] ?
- From: von_Aschen at uni-duisburg.de (Harald von Aschen)
- Date: Sun, 25 Aug 1996 18:23:18 -0400
- Organization: Gerhard-Mercator-Universitaet GHS Duisburg Germany
- Sender: owner-wri-mathgroup at wolfram.com
AES <siegman at ee.stanford.edu> wrote:
> I can understand that
>
> Map[f,{a,b,c}] --> {f[a], f[b], f[c]}
>
> But would someone want to give a little tutorial on how to understand
> the (what seem to me) bizarre results I get when I try various
> combinations like
>
> Map[f, a + b + c]
>
> Map[f, a + b - c]
>
> Map[f, a * b * c]
>
> Map[f, a / b / c]
>
> and other more complex forms.
Try
In[1]:= ?? Map
Out[1]= Map[f, expr] or f /@ expr applies f to
each element on the first level in expr.
Map[f, expr, levelspec] applies f to
parts of expr specified by levelspec.
Attributes[Map] = {Protected}
Options[Map] = {Heads -> False}
The trick how you can see how Map would work is to see the FullForm of
an Expresseion:
In[2]:= FullForm[{a,b,c}]
Out[2]= List[a, b, c]
Map now applies f to each Element of List:
In[3]:= Map[f, {a,b,c}]
Out[3]= {f[a], f[b], f[c]}
If you look on a + b + c FullForm gives:
In[4]:= FullForm[a + b + c]
Out[4]= Plus[a, b, c]
This means Map [f, a + b + c] would give Plus[f[a], f[b], f[c]]:
In[5]:= Map[f, a + b + c]
Out[5]= f[a] + f[b] + f[c]
Going further on with FullForm you can understand more complicated
expressions like
In[6]:= Map[ f, g[{a,b,c}] ]
Out[6]= g[f[{a,b,c}]]
because
In[7]:= FullForm[ g[{a,b,c}] ]
Out[7]= g[List[a, b, c]]
and Map applies f to List (this means: f[List[a,b,c]]).
You can apply f to more than the first level:
In[8]:= Map[f, g[{a, b, {c, d}}], 2]
Out[8]= g[f[{f[a], f[b], f[{c, d}]}]]
In[9]:= Map[f, g[{a, b, {c, d}}], 3]
Out[9]= g[f[{f[a], f[b], f[{f[c], f[d]}]}]]
If you want to learn more about these Programming features of
Mathematica (and tricks like using FullForm) of Mathematica I would like
to recommend you the book
Programming in Mathematica, 2nd edition
Roman Maeder
Addison-Wesley Publishing Company
which has helped me a lot.
Kind regards, Harald
--
Harald von Aschen
eMail: von_aschen at uni-duisburg.de
==== [MESSAGE SEPARATOR] ====