Re: New version, new bugs
- To: mathgroup at smc.vnet.net
- Subject: [mg42817] Re: New version, new bugs
- From: Maxim <dontsendhere@.>
- Date: Wed, 30 Jul 2003 04:07:49 -0400 (EDT)
- References: <bfdqd8$sfi$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
I think it should be mentioned that there are some things that probably aren't errors but still can be considered as major drawbacks. Consider four nearly identical expressions: In[1]:= f[a] + f[b] + 1 /. HoldPattern[Plus][f[_] ..] /; True :> 0 f[a] + f[b] + 1 /. HoldPattern[Plus[f[_] ..]] /; True :> 0 f[a] + f[b] + 1 /. HoldPattern[Plus][f[_] ..] :> 0 /; True f[a] + f[b] + 1 /. HoldPattern[Plus[f[_] ..]] :> 0 /; True Exactly one of them evaluates to 1. This is something from Who Wants to Be a Millionaire, not a programming language. Another situation where the result is unpredictable is passing patterns to functions: can you guess what the result of Integrate[x_,x_] will be? And of Integrate[_,_]? Then, of course, there is Mathematica's scoping: In[1]:= Module[ {sub,f}, sub[a_,b_]:=Module[ {aa=a,x}, aa-b ]; f[x_]=sub[x,x] ] Out[1]= x$-x$38 The problem is that the x in aa and the x in b get renamed differently; I am not even trying to figure out if it is a bug, I'm just pointing out how confusing it is (probably it has to do with the fact that assignment in Module initialization doesn't use Set). Another example: In[1]:= <<discretemath` UndirectedQ[FromAdjacencyMatrix[{{0,1},{0,0}},Type->Directed]] <<numbertheory` UndirectedQ[FromAdjacencyMatrix[{{0,1},{0,0}},Type->Directed]] Out[2]= False Out[4]= True Here the situation is clear: the reason for the two different answers is a name conflict. But it would be nice to at least see a warning message. Finally, whose brilliant idea was it to give the output for ??In and ??Out unsorted? Maxim Rytin m.r at prontomail.com