Re: Combining pure functions to produce a new pure function

• To: mathgroup at smc.vnet.net
• Subject: [mg89723] Re: Combining pure functions to produce a new pure function
• From: dh <dh at metrohm.ch>
• Date: Thu, 19 Jun 2008 05:41:44 -0400 (EDT)
• References: <g3aomo\$3o\$1@smc.vnet.net>

```
Hi Mac,

look at Out[66]: there seems to be a variable biomass\$491 without a

value, that anticipates the evaluation of the result. If I define the

function e.g.:

forwardmodel[x1_,x2_]:=x2;

h[forwardmodel["letoan",#]&,forwardmodel["saatchiphv",#]&][100]

everything works as expected.

hope this helps, Daniel

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

>

> 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

>

>

>

>

--

Daniel Huber

Metrohm Ltd.

Oberdorfstr. 68

CH-9100 Herisau

Tel. +41 71 353 8585, Fax +41 71 353 8907

E-Mail:<mailto:dh at metrohm.com>

Internet:<http://www.metrohm.com>

```

• Prev by Date: Bug in multiple integrals with delta function
• Next by Date: Re: Re: snippets
• Previous by thread: Re: Combining pure functions to produce a new pure function
• Next by thread: Re: Combining pure functions to produce a new pure function