Re: := vs = in some function definitions
- To: mathgroup at smc.vnet.net
- Subject: [mg113259] Re: := vs = in some function definitions
- From: Leonid Shifrin <lshifr at gmail.com>
- Date: Thu, 21 Oct 2010 07:01:09 -0400 (EDT)
Sam, One particular case to use := would be if you want to keep your matrix packed (that is, if you expect x to always be an integer, or real for a real-valued matrix). This may have an impact on performance. Adding symbolic <x> will necessarily unpack the matrix, so all your subsequent operations (which do not automatically pack it back when x becomes a number) will be with an unpacked matrix and can be slower. You also must be sure that x does not have a global value by the time you make a definition - generally Set can produce bugs of this sort, and they are hard to track. If you use Set, I'd wrap Module[{x},...] around the definition. Regards, Leonid On Wed, Oct 20, 2010 at 1:06 AM, Sam Takoy <sam.takoy at yahoo.com> 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? > > Many thanks in advance, > > Sam > >