RE: pure functions

• To: mathgroup at smc.vnet.net
• Subject: [mg23342] RE: [mg23237] pure functions
• From: "Higinio Ramos Calle" <higra at gugu.usal.es>
• Date: Thu, 4 May 2000 02:59:10 -0400 (EDT)
• References: <200004300204.WAA16572@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```----- Original Message -----
From: Helge Andersson <helgea at inoc.chalmers.se>
To: mathgroup at smc.vnet.net
Subject: [mg23342] [mg23237] pure functions

> Hello,
>
>
> Of all the nice functions such as Map, Mapall, Thread, Apply .... I have
> not been able to write a simple code to generate the following
> procedure.
>
> I have a two dimensional list like
>
> li={{11,12,13,..},{21,22,23,...},{31,32,33,..},...}
>
> Since i like to use the pure function command I would like to map my
> pure function with arguments #1,#2,#3,.... on all the sublists in li.
>
> Let me exemplify with a simple pure function that add to numbers.
> (#1+#2)&
>
> if exli={{1,2},{3,4},{5,6},{7,8}}
>
> then I want to get the result
> {3,7,11,15}
>
> One solution, but not allways suitable for me, is the following
>
> (#1+#2)&[Sequence @@ Transpose[exli]].
>
> I want to get rid of the Transpose command and if possible also making
> use of the /@ notation for Map. Since I have seen so many elegant
> examples in the mailing lists I hope  I can get something out of this.
>

For your own example you may try
(#[[1]]+#[[2]])&/@{{2,3},{2,5}}
and you'll get the result you hope.

> Finally, When using pure functions inside Mathematica defined functions
> such as Select for instance,
> Select[{1,2,3,4,5,6},#>3&]
> why don't we need to specify the argument list after the &sign. I can
> figure out that in this case the list sent to the Select command will be
> used as argument list for the pure function but how does this work in
> general. Which are the functions where this feature is possible?

Select[list, test]  apply the function that appears in test to each element
of the list, and returns all the elements for which the result is true.
An example using the same list as before:
Select[{{1,2},{3,4},{5,6},{7,8}},#[[1]]+#[[2]]<10&]

Higinio Ramos