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