Re: Bug in pattern parsing?
- To: mathgroup at smc.vnet.net
- Subject: [mg62009] Re: Bug in pattern parsing?
- From: Kristjan Kannike <kkannike at physic.ut.ee>
- Date: Wed, 9 Nov 2005 03:45:23 -0500 (EST)
- References: <email@example.com> <firstname.lastname@example.org>
- Sender: owner-wri-mathgroup at wolfram.com
On Tue, 8 Nov 2005, Peter Pein wrote: > Kristjan Kannike schrieb: > > Hello, > > > > I may have discovered a bug in pattern parsing or applying transformation > > rules. > > > > The following two rules should be equivalent: > > > > rule1 = c_.*X_.Y_ -> X.Y > > > > with c an optional variable, and > > > > rule2 = c_.*Dot[X_, Y_] -> X.Y > > > > Yet applying rule1 on a.b as > > > > a.b/.rule1 > > > > gives > > > > 1.a.b > > > > (the same result obtains for the optional factor actually present as in > > const a.b), but > > > > a.b/.rule2 > > > > gives > > > > a.b > > > > as it should. > > > > I think that it has to do with the dot in c_., but curiously I get the > > same result when writing the LHS of rule1 as Optional[c]*Y.Z and that > > confuses me... > > > > Any thoughts? > > > > Kristjan Kannike > > <http://www.physic.ut.ee/~kkannike/english/> > > > > Hi Kristjan, > > the parser can not know what the user has in mind (and vice versa ;-) ). > Try a space between X_ and the dot or write c_.(X_).Y_ > > Peter Thanks, Peter. I finally understood by looking at the FullForm of my rule1 = c_.*X_.Y_ -> X.Y that the Mathematica parser does not consider c_. as part of a dot product (as I had guessed), but "thinks" that X_. is optional, too. If not a bug, it is at best a very ambiguous syntax. And intuitively, I would think the parser should consider a dot to be a dot product, unless explicitly indicated otherwise as in c_.*X_ Kristjan Kannike <http://www.physic.ut.ee/~kkannike/english/>