Re: More Pattern Match Understanding Problems

*To*: mathgroup at smc.vnet.net*Subject*: [mg46636] Re: More Pattern Match Understanding Problems*From*: drbob at bigfoot.com (Bobby R. Treat)*Date*: Thu, 26 Feb 2004 17:53:24 -0500 (EST)*References*: <c1ir85$6b1$1@smc.vnet.net>*Sender*: owner-wri-mathgroup at wolfram.com

Your adding "<labeled?>" to the definition is incorrect. In the first example, there are no unlabeled patterns, so your definition couldn't apply. In the third example, the shortest possible match to ____ (three blanks) is an empty set, so x matches beginning with the first element. But the rule applies again, so it matches with the shortest sequence starting there -- just a. It doesn't match all the rest of the elements, because the third pattern ___ is available to do that. In the second example, the first pattern ____ (three blanks) again matches an empty set, and x__ matches all the rest of the arguments. As you see. Bobby Harold.Noffke at wpafb.af.mil (Harold Noffke) wrote in message news:<c1ir85$6b1$1 at smc.vnet.net>... > MathGroup: > > In the Mathematica 5 Book, Section 2.3.8, "Functions with Variable > Numbers of Arguments," there are three examples of using ReplaceList > to understand pattern matching (In/Out-4,5,6). I understand In/Out-4 > and In/Out-6 if I assume the Mathematica explanation (immediately > below) refers only to "labeled blanks" when it says "blanks" ... > > When you use multiple blanks, there are often several matches that > are possible for a particular expression. In general, Mathematica > tries first those matches that assign the shortest sequences of > arguments to the first <labeled?> multiple blanks that appear in > the pattern. > > When I examine In/Out-5, however, my understanding breaks down when I > see that the answer Mathematica gives is g[a,b,c,d], which is the > longest (not the shortest) sequence assigned to the labeled blank x__. > > In[5]:= > ReplaceList[f[a, b, c, d], f[___, x__] -> g[x]] > Out[5]= > {g[a,b,c,d], g[b,c,d], g[c,d], g[d]} > > Therefore, I conclude my reasoning is incorrect. > > Can anyone provide some guidance on how to think through In/Out-4,5,6 > without assuming labeled multiple-blanks have priority over unlabeled > ones? > > Thanks. > Harold