Re: Combining pure functions to produce a new pure function

• To: mathgroup at smc.vnet.net
• Subject: [mg89745] Re: Combining pure functions to produce a new pure function
• From: Oliver Ruebenkoenig <ruebenko at uni-freiburg.de>
• Date: Thu, 19 Jun 2008 05:45:51 -0400 (EDT)
• References: <g3aomo\$3o\$1@smc.vnet.net>

```
Hi Mac,

On Wed, 18 Jun 2008, Mac wrote:

> 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

Through[{# + 1 &, # + 2 &}[1]]

> 0d169d8992b4

seems broken.

> 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

f["1", n_] := -n
f["2", n_] := n

res = h[f["1", #] &, f["2", #] &]
res[2]

seems to work. How do your custom functions look like?

Oliver

Try to give a function that does not work.

>
> 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
>
>
>
>
>

Oliver Ruebenkoenig, <ruebenko AT uni-freiburg.de>

```

• Prev by Date: Re: Power Tower and Carmichael Lambda Function
• Next by Date: Bug in multiple integrals with delta function
• Previous by thread: Combining pure functions to produce a new pure function
• Next by thread: Re: Combining pure functions to produce a new pure function