Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.soft-sys.math.mathematica > #2608 > unrolled thread

Re: Overloading functions

Started bySam Takoy <sam.takoy@yahoo.com>
First post2011-05-22 10:58 +0000
Last post2011-05-22 10:58 +0000
Articles 1 — 1 participant

Back to article view | Back to comp.soft-sys.math.mathematica


Contents

  Re: Overloading functions Sam Takoy <sam.takoy@yahoo.com> - 2011-05-22 10:58 +0000

#2608 — Re: Overloading functions

FromSam Takoy <sam.takoy@yahoo.com>
Date2011-05-22 10:58 +0000
SubjectRe: Overloading functions
Message-ID<iraq98$lt0$1@smc.vnet.net>
Thanks Leonid.

Let me paraphrase, so I can clarify my original confusion and see if I got it 
right. 

I assume (am I wrong?) that MyOperator[f][x, y] associates left 
(MyOperator[f])[x, y]. At the time MyOperator[f] is called, no decision is made 
as to which f to send to MyOperator, because what is sent to the operator is 
just the symbol "f". Inside MyOperator, Mathematica sees Derivative[1,0][f] and 
based on this looks for a rule for "f" that takes two variables.

Is that correct?

Thanks!

Sam



________________________________
From: Leonid Shifrin <lshifr@gmail.com>
To: Sam Takoy <sam.takoy@yahoo.com>; mathgroup@smc.vnet.net
Sent: Sat, May 21, 2011 7:20:51 PM
Subject: Re:  Overloading functions

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

[toc] | [standalone]


Back to top | Article view | comp.soft-sys.math.mathematica


csiph-web