Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2007
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2007

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

Search the Archive

Re: Problem with Mathematica 6

  • To: mathgroup at smc.vnet.net
  • Subject: [mg77131] Re: Problem with Mathematica 6
  • From: "Michael Weyrauch" <michael.weyrauch at gmx.de>
  • Date: Mon, 4 Jun 2007 03:55:54 -0400 (EDT)
  • References: <200706020819.EAA29947@smc.vnet.net> <f3u49k$2sf$1@smc.vnet.net>

Hello,

  in any case the suggestion of Carl Woll fixes the problem with Mathematica 6.

With  

HoldPattern[NonCommutativeMultiply][a___] /; (Length[GetGradeds[a]] <= 1) := Times[a];

the code behaves under Mathematica 6 as it did without HoldPattern under 5.2 .

It appears that the interpretation
of the Attributes Flat and/or OneIdentity  changed from 5.2 to 6.0. What is the reason?

Obviously the HoldPattern prevents evaluation of the Head NonCommutativeMultiply
for  pattern matching purposes.  The evaluation which seems to take place -- as Carl Woll
points out -- is the following
 
NonCommutativeMultiply[a,b]  -> NonCommutativeMultiply[NonCommutativeMultiply[a],b] 

which is kind of a reversal of the flattening process I expected to be implied by the Attribute Flat ... 
(and this not surprisingly leads to infinite iteration in my code)

Can anyone explain to me why this "new" behaviour of Flat/OneIdentity is more logical, useful, better?

(by the way: the proposal by David Bailey, which circumvents this problem entirely, is probably a much better
way of implementation, but I haven't checked the details yet.) 

Michael Weyrauch





  • Prev by Date: Re: a definite integral
  • Next by Date: Linear algebra and machine precision
  • Previous by thread: Re: Problem with Mathematica 6
  • Next by thread: Re: Re: Problem with Mathematica 6