Combining pure functions..

• To: mathgroup at christensen.cybernetics.net
• Subject: [mg349] Combining pure functions..
• From: kaufman1 at llnl.gov (Al Kaufman)
• Date: Wed, 21 Dec 1994 10:08:03 -0800

```Xah Lee asks:

>Is there a way to combine several pure functions algebraicaly as one pure
>function?

>One Example:

>How to get (#^2&)/(#^3&) to become (#^2/#^3)&

This is an interesting problem.

There are two notations used for pure functions.  One is noted in the example:
#^2& // FullForm is given as: Function[Power[Slot[1],2]]  an equivalent form is
given using a dummy variable x:  Function[x,Power[x,2]];

However, there is not a unique solution here without specifying what the
external relationship between the arguments to pure functions should be. In
other words should an expression e[f1,f2] involving: f1 =
Function[{x1},body1] and f2 = Function[{x2},body2] which involve dummy
variables x1 and x2 respectively be mapped to
Function[{x1,x2},e[f1[x1],f2[x2]] or in the simplest form:
Function[x,e[f1[x],f2[x]]].

Here is a solution invoking the latter assumption in which the dummy
variables are presumed identical.

ComposePureFunctions[e_] :=
With[{body\$ = e/.p:Function[__] :> p[dummy\$]},
f\$[dummy\$,body\$]/.f\$->Function];

We apply to the example:

ComposePureFunctions[(#^2&)/(#^3&)]

and obtain:

Function[dummy\$,1/dummy\$]

the desired result.

================================
Al Kaufman
Lawrence Livermore National Lab
Mail stop L-83
Livermore, Ca  94550
Phone:  510-422-1599
FAX:    510-422-8471
E-mail: <kaufman1 at llnl.gov>
Alt. e-mail: <nutronstar at aol.com>

```

• Prev by Date: Re: Web pages
• Next by Date: Alternating Series Construct