Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2010

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

Search the Archive

Re: := vs = in some function definitions

  • To: mathgroup at smc.vnet.net
  • Subject: [mg113371] Re: := vs = in some function definitions
  • From: Sam Takoy <sam.takoy at yahoo.com>
  • Date: Tue, 26 Oct 2010 05:32:20 -0400 (EDT)
  • References: <i9m7u7$j41$1@smc.vnet.net> <i9r80e$hp5$1@smc.vnet.net>

On 10/22/2010 1:38 AM, Albert Retey wrote:
> Hi,
>
>> Have read everything I could find regarding delayed assignment, I'm
>> still not quite sure when to use which.
>>
>> For example, in the definition
>>
>> f[x_] = IdentityMatrix[50].Append[Range[1, 49], x];
>>
>> could there ever be any reason to use :=   ?
>>
>> It seems that using   :=  will condemn the function to repeated extra
>> work every time its called. So could there be a situation where the use
>> of ":=" for the above function is recommended?
>
> I think there have been many good answers to your question already, but
> if you are interested in what is going on I think it worth to mention
> that a function definition is nothing but a definition of a global
> replacement rule in Mathematica. And of course you can look at these
> rules and that might be interesting if you try to understand what Set
> and SetDelayed actually do (so no more guessing is needed).
>
> Have a look at the DownValues (or OwnValues) to see what happens in the
> two cases:
>
> f[x_] = IdentityMatrix[50].Append[Range[1, 49], x];
> DownValues[f]
> g[x_] := IdentityMatrix[50].Append[Range[1, 49], x];
> DownValues[g]
>
> it is instructive to also evaluate this:
>
> x = 1
> f[x_] = IdentityMatrix[50].Append[Range[1, 49], x];
> DownValues[f]
>
> hth,
>
> albert
>
>
Thanks for all the responses! Very insightful.

Here's one more thing I can't figure out:

testFunction[f_][x_, y_] = Module[{},
    Print[f[x, y]];
    5
    ];
testFunction[ArcTan][x, y]

Why doesn't this function print out ArcTan[x, y]?

Thanks,

Sam


  • Prev by Date: Re: nested SetDelayed
  • Next by Date: Re: palettes that would not move
  • Previous by thread: Re: := vs = in some function definitions
  • Next by thread: Re: := vs = in some function definitions