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


Groups > comp.soft-sys.math.mathematica > #2632

Re: Overloading functions

From DrMajorBob <btreat1@austin.rr.com>
Newsgroups comp.soft-sys.math.mathematica
Subject Re: Overloading functions
Date 2011-05-23 10:25 +0000
Organization Steven M. Christensen and Associates, Inc and MathTensor, Inc.
Message-ID <irdcn8$3nt$1@smc.vnet.net> (permalink)

Show all headers | View raw


"...no decision is made as to which f to send to MyOperator..."

(a) There is only one f (despite having two LHS patterns), and
(b) the pattern matching is done all at once.

"...and based on this looks for a rule for "f" that takes two variables.  
Is that correct?"

No.

Bobby

On Sun, 22 May 2011 05:57:41 -0500, Sam Takoy <sam.takoy@yahoo.com> wrote:

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


-- 
DrMajorBob@yahoo.com

Back to comp.soft-sys.math.mathematica | Previous | Next | Find similar | Unroll thread


Thread

Re: Overloading functions DrMajorBob <btreat1@austin.rr.com> - 2011-05-23 10:25 +0000

csiph-web