Re: Problem with matching.

*To*: mathgroup at smc.vnet.net*Subject*: [mg53919] Re: Problem with matching.*From*: Paul Abbott <paul at physics.uwa.edu.au>*Date*: Fri, 4 Feb 2005 04:11:15 -0500 (EST)*Organization*: The University of Western Australia*References*: <ctrngb$brk$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

In article <ctrngb$brk$1 at smc.vnet.net>, Josef Karthauser <joe at tao.org.uk> wrote: > Can someone tell me why this doesn't match? > > F[{x, 2, c}]F[{x, 1, f}] /. F[{___, a_, ___}]F[{___, a_, ___}] :> yes > > I'm expecting 'yes' to be returned if any of the list arguments to F[] > contain the same value. It doesn't match however; what am I doing > wrong? The left-hand side of the replacement rule is being simplified. If you enter F[{___, a_, ___}]F[{___, a_, ___}] you will see what is going on. To prevent this evaluation you can use HoldPattern: F[{x, 2, c}]F[{x, 1, f}] /. HoldPattern[F[{___, a_, ___}]F[{___, a_, ___}]] :> yes or, alternatively, name all the patterns: F[{x, 2, c}]F[{x, 1, f}] /. F[{a___, b_, c___}]F[{d___, b_, f___}] :> yes Another approach is to use Intersection: F[{x, 2, c}]F[{x, 1, f}] /. F[a_]F[b_] :> yes /; Intersection[a,b] != {} Cheers, Paul -- Paul Abbott Phone: +61 8 6488 2734 School of Physics, M013 Fax: +61 8 6488 1014 The University of Western Australia (CRICOS Provider No 00126G) 35 Stirling Highway Crawley WA 6009 mailto:paul at physics.uwa.edu.au AUSTRALIA http://physics.uwa.edu.au/~paul