       Re: Inconsistencies in pattern matching.

• To: mathgroup at smc.vnet.net
• Subject: [mg12985] Re: Inconsistencies in pattern matching.
• From: Tobias Oed <tobias at physics.odu.edu>
• Date: Sun, 28 Jun 1998 02:52:08 -0400
• Organization: Old Dominion University
• References: <6mqf4r\$3he@smc.vnet.net>
• Sender: owner-wri-mathgroup at wolfram.com

```Sean Ross wrote:

> This is an example taken from Ken Wagners Power Programming book:
>
> In:={{x1,y1},{x2,y2},{x3,y3}}/.{x_,y_}->{x,Log[y]}
>
> Out:={{x1,Log[y1]},{x2,Log[y2]},{x3,Log[y3]}}
>
> In:={{x1,y1}}/.{x_,y_}->{x,Log[y]}
>
> Out:={{x1,Log[y1]}}
>
> As long as the list of {x,y} data points has one point or greater than
> two points, it transforms as one would expect.  If there are  two {x,y}
> data points, it transforms differently.
>
> In:={{x1,y1},{x2,y2}}/.{x_,y_}->{x,Log[y]}
>
> Out:={{x1,y1},{Log[x2],Log[y2]}}
>
> Now, if x_ is seen to match {x1,y1} in example 3, then why doesn't it
> also match it in example number 1 and 2?  This behavior can be fixed
> with a /;Head[x]=!=List  pattern restricting rule, but that is not the
> point.  This seems grossly inconsistent to me.  Can anyone explain why
> it does this and/or justify that this is a good thing?

In the last example the pattern x_ matches is {x1,y1} and y_ matches
{x2,y2}
(x_ matches any mathematica expression) so the result is consistent.
Since Log
is Listable Log[{x2,xy}] gives {Log[x2],Log[y2]}. The following works:

In= {{x1,y1},{x2,y2}}/.{x_?AtomQ,y_?AtomQ}->{x,Log[y]} Out=
{{x1, Log[y1]}, {x2, Log[y2]}}

Hope this helps Tobias

```

• Prev by Date: Re: How to Extract a common factor from a Sum
• Next by Date: Re: Pulling out certain order terms from a polynomial
• Previous by thread: Re: Inconsistencies in pattern matching.
• Next by thread: Stiff ODE's and Gear's Method in NDSolve