Re: pure function with optional number of arguments

*To*: mathgroup at smc.vnet.net*Subject*: [mg98971] Re: pure function with optional number of arguments*From*: Albert Retey <awnl at gmx-topmail.de>*Date*: Wed, 22 Apr 2009 06:36:28 -0400 (EDT)*References*: <gsmmvk$d24$1@smc.vnet.net>

Ruth Lazcoz Saez wrote: > Hi, > > I have two definitions for a function, one in the case it has one > argument and another one if it has two. > > Efun[x_]:=x^2 > Efun[x_,y_]:=x^2+y^2 > > Then I want to construct a pure function that does the same thing as > this non-pure function > > myint[params__] := Integrate[z*Efun[params], {z, 0, #}] & /@ {1, 2, 3} > > I tried to accomplish it with > > myintpure= Function[params, Integrate[z*Efun[params], {z, 0, #}] & /@ > {1, 2, 3}], > > but myintpure[x,y] gives not the same as myint[x,y], so this pure > function I have constructed seems to be not right. > > Help will be much appreciated. Thanks, The trick is to use ## as argument, like this: myintpure = Function[ Function[{xmax}, Integrate[z*Efun[##], {z, 0, xmax}]] /@ {1, 2, 3} ] where I have changed the inner pure function to use a named argument to avoid confusion. Of course you are in trouble when needing deeply nested constructs of this sort, but that is something you probably want to avoid (for readability) anyway. hth, albert