Combining pure functions to produce a new pure function

• To: mathgroup at smc.vnet.net
• Subject: [mg89705] Combining pure functions to produce a new pure function
• From: Mac <mwjdavidson at googlemail.com>
• Date: Wed, 18 Jun 2008 06:40:29 -0400 (EDT)

```I have a function where one of the arguments is supposed to be a list
of pure functions. Tyhis is useful for an algorithm that can run using
multiple input functions. Based on a previous post some time ago

0d169d8992b4

a method was proposed to address this. If I apply this method to list
arguments I get the following code and results:

In[60]:= h[f1_, f2_] :=
Function[x,
Evaluate[{f1[x], f2[x]} /.
HoldPattern[Function[a_, b_]] -> Function[a, b][x]]]

Combine two simple pure functions - works as expected

In[58]:= h[# + 1 &, # + 2 &]
%[1]

Out[58]= Function[x\$, {1 + x\$, 2 + x\$}]

Out[59]= {2, 3}

Combine two custom functions and I get the internal details of one
function and with the second one evaluated properly

In[66]:= h[forwardmodel["letoan", #] &, forwardmodel["saatchiphv", #]
&]
%[100]

Out[66]= Function[x\$, {If[-10. - 32./biomass\$491^0.434294 <= -15,
10 Log[10, 10^(\[Gamma]1\$491/10) Sin[27 =B0]],
10 Log[10, 10^(\[Gamma]2\$491/10) Sin[27 =B0]]],
If[x\$ > 2, -35.01 + 4.296 Log[x\$], -35.01 + 4.296 Log[2]]}]

Out[67]= {If[-10. - 32./biomass\$491^0.434294 <= -15,
10 Log[10, 10^(\[Gamma]1\$491/10) Sin[27 =B0]],
10 Log[10, 10^(\[Gamma]2\$491/10) Sin[27 =B0]]], -15.2262}

I can see that this effect is due to the evaluations of the function

forwardmodel["letoan", #] &

so that the output no longer depends on the pure function variable \$x.
Note that separately these functions work as expected. Here some

In[69]:= forwardmodel["letoan", #] &[100]
forwardmodel["saatchiphv", #] &[100]

Out[69]= -17.6312

Out[70]= -15.2262

Can annybody suggest a general solution ?

Many thanks

Mac

```

• Prev by Date: Re: Will adding RAM help "No more memory available" error?
• Next by Date: Re: Will adding RAM help "No more memory available" error?
• Previous by thread: Re: Bug in LogPlot and ListLogPlot in V6.0.3
• Next by thread: Re: Combining pure functions to produce a new pure function