MathGroup Archive 2011

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

Search the Archive

Re: Overloading functions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg119119] Re: Overloading functions
  • From: Leonid Shifrin <lshifr at gmail.com>
  • Date: Sun, 22 May 2011 06:55:42 -0400 (EDT)

Sam,

This is a misunderstanding. Mathematica will always use the symbol f.
Different definitions for f are different rules, and the analogy with
function overloading in other languages is only superficial (on the level of
syntax only). The choice of which rule to apply is then based on how
Derivative works. Since you call it as Derivative[1,0], it assumes 2
independent variables, and this determines the way it calls f:

In[23]:= Derivative[1,0][f][x,y]//Trace

Out[23]= {{f^(1,0),{f[#1,#2],#1+#2},1&},(1&)[x,y],1}

So, there is a single symbol with different rules. Which rule is used is
determined once the expression f[args] is formed. It is as simple as that.

Regards,
Leonid


On Sat, May 21, 2011 at 3:50 AM, Sam Takoy <sam.takoy at yahoo.com> wrote:

> Hi,
>
> In the following code
>
> MyOperator[g_][x_, y_] = 4 + Derivative[1, 0][g][x, y];
>
> f[x_, y_] = x + y;
> f[x_, y_, z_] = 2 x + 2 y + 2 z;
>
> MyOperator[f][x, y]
>
>
> how does Mathematica know which f to send to MyOperator. Can someone
> outline the formal decision tree that Mathematica follows?
>
> Thanks!
>
> Sam
>
>


  • Prev by Date: Re: Series[log[x], {x, 0, 3}]
  • Next by Date: Re: Series[log[x], {x, 0, 3}]
  • Previous by thread: Re: Overloading functions
  • Next by thread: Re: Overloading functions