MathGroup Archive 2004

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

Search the Archive

Re: Uniform design

  • To: mathgroup at
  • Subject: [mg48276] Re: Uniform design
  • From: ab_def at (Maxim)
  • Date: Thu, 20 May 2004 04:03:56 -0400 (EDT)
  • References: <c7nnc7$dm5$> <> <c81has$4rj$> <> <c89pfb$t0e$> <c8ci8i$etv$>
  • Sender: owner-wri-mathgroup at

Here's another issue that I think belongs to this thread: it's
interesting to consider how well Table/Sum double as both mathematical
and programming constructs. They work like Block to make possible
things like y=x;Table[y,{x,5}], but how well is this approach suited
for programming? Suppose we're writing something like


to get the list of elements of L (a clumsy way to write List@@L); then
everything works fine until we try f[{i,j}]. So for programming this
block-like behaviour is more like a hidden hazard; it works well only
if we know the structure of L in advance. Instead, what is needed here
is a Table/Sum with a local (unique) iterator; otherwise we need to
wrap every Table/Sum in Module or put it in a separate context.

Besides, there's a matter of 'optimizations' that Mathematica uses for
Sum (an issue which was discussed in this newsgroup a while ago):

Module[{cnt = 0}, Sum[cnt += 1, {i, 10^6}] ]
Module[{cnt = 0}, Sum[cnt += 1, {i, 10^6 + 1}] ]



When using Sum as a programming construct, probably the last thing
user needs is to see it unexpectedly change behaviour after reaching
some internal threshold.

Maxim Rytin
m.r at

  • Prev by Date: Re: Extracting Coefficients and Powers
  • Next by Date: Re: Extracting Coefficients and Powers
  • Previous by thread: Re: Uniform design
  • Next by thread: Re: Uniform design