MathGroup Archive 2008

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Best practice passing expressions to functions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg85318] Re: Best practice passing expressions to functions
  • From: Jens-Peer Kuska <kuska at informatik.uni-leipzig.de>
  • Date: Tue, 5 Feb 2008 19:48:18 -0500 (EST)
  • Organization: Uni Leipzig
  • References: <fo9gvu$t1l$1@smc.vnet.net>
  • Reply-to: kuska at informatik.uni-leipzig.de

Hi,

SetAttributes[defineAFunction, HoldFirst]

defineAFunction[name_Symbol, expr_] :=
  Module[{vars},
   vars = Select[Cases[expr, _Symbol, Infinity],
     Context[#] =!= "System`" &];
   SetDelayed @@ {name @@ (Pattern[#, Blank[]] & /@ vars), expr}
   ]

and after

defineAFunction[blub, Sin[Pi*x] + y*z - Log[q]]

you have

In[]:=blub[x, y, z, q]
Out[]=x y - Log[z] + Sin[\[Pi] q]

Regards
   Jens


Remo Aschwanden wrote:
> Hi
> 
> I want to write procedures that accept expressions as parameters and be 
> able define functions based on these expressions, i.e.
> 
> f[exp_]:=Module[
>    "g[x_] := exp "
> ]
> 
> The code between the " " should clarify what I intend to do. Calling 
>    f[x^2-2x+4] 
> should lead to the definition of a function (or pattern)
>    g[x_]:=x^2-2x+4;
> 
> What's the best way to do this? How can I do this without being 
> dependent on the variables used in the expressions ("x")?
> 
> Thank you.
> Remo A.
> 
> 


  • Prev by Date: Re: Best practice passing expressions to functions
  • Next by Date: Re: Plot function of a function of a variable
  • Previous by thread: Re: Best practice passing expressions to functions
  • Next by thread: Re: Best practice passing expressions to functions