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>