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>