Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2001
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2001

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

Search the Archive

Re: Is this a bug?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg32061] Re: [mg32047] Is this a bug?
  • From: Rob Pratt <rpratt at email.unc.edu>
  • Date: Fri, 21 Dec 2001 03:57:34 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

On Thu, 20 Dec 2001, Paul van Wamelen wrote:

> Is the following a bug?
> 
> Mathematica 4.1 for Sun Solaris
> Copyright 1988-2000 Wolfram Research, Inc.
>  -- Motif graphics initialized -- 
> 
> In[1]:= k[x_] := Module[{},Print["hallo world"];x];
> 
> In[2]:= a[5] = 0;
> 
> In[3]:= a[k[5]]++
> hallo world
> hallo world
> 
> Out[3]= 0
> 
> 
> I would have expected only one "hallo world" and it would seem to be
> more efficient to only evaluate the k[5] once...
> 
> The above example is not important but in the form below it had me
> baffled for a while:
> 
> In[4]:= tst[n_] := Module[{a},
>   a[0] = a[1] = 0;
>   Do[a[Random[Integer,{0,1}]]++,{n}];
>   {a[0],a[1]}]
>                         
> In[5]:= tst[50]
> 
> Out[5]= {24, 24}
> 
> (Does not add up to 50!)
> 
> Thanks!

I encountered the second form just two days ago.  I'll leave it to
somebody else to explain the above behavior, but I ended up using a
workaround like the following.

tst[n_] := Module[{a, r},
   a[0] = a[1] = 0;
   Do[(r = Random[Integer,{0,1}]; a[r]++), {n}];
   {a[0],a[1]}]

Rob Pratt
Department of Operations Research
The University of North Carolina at Chapel Hill

rpratt at email.unc.edu

http://www.unc.edu/~rpratt/





  • Prev by Date: Re: Displaying Mathematica's Global rules
  • Next by Date: RE: Urgent Plot problem
  • Previous by thread: Is this a bug?
  • Next by thread: Re: Is this a bug?