MathGroup Archive 1995

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

Search the Archive

Re: Pattern Matcher

  • To: mathgroup at christensen.cybernetics.net
  • Subject: [mg541] Re: [mg535] Pattern Matcher
  • From: withoff (David Withoff)
  • Date: Mon, 13 Mar 1995 18:03:20 -0600

> Hi!
> 
> Does anyone know how Mathematica's pattern matcher works if
> expressions to be matched and/or pattern involve functions
> having attribute Orderless? Does it simply try all cases one by one?
> Or maybe it makes something more intellectual? Any references?
> 
> Regards,
> Sergei Klioner
> Senior Scientist
> Intitute of Apllied Astronomy,
> St.Petersburg, Russia

There are examples in section 2.3 of the Mathematica book for
seeing the combinations that are tried by the pattern matcher.
You can use the same tricks to analyze your own examples and
find out what the pattern matcher is doing.

Here is an example.

In[1]:= SetAttributes[f, Orderless]

In[2]:= f[a, b, c, d] /. f[p_, q_, r_, s_] :> Null /;
                                           Print[{p, q, r, s}]
{a, b, c, d}
{a, b, d, c}
{a, c, b, d}
{a, c, d, b}
{a, d, b, c}
{a, d, c, b}
{b, a, c, d}
{b, a, d, c}
{b, c, a, d}
{b, c, d, a}
{b, d, a, c}
{b, d, c, a}
{c, a, b, d}
{c, a, d, b}
{c, b, a, d}
{c, b, d, a}
{c, d, a, b}
{c, d, b, a}
{d, a, b, c}
{d, a, c, b}
{d, b, a, c}
{d, b, c, a}
{d, c, a, b}
{d, c, b, a}

Out[2]= f[a, b, c, d]

In some examples it is possible to eliminate cases without
checking the condition.  In other examples the only practical
thing to do, and in many examples the only thing to do, is to
try all cases one by one.

Dave Withoff
Research and Development
Wolfram Research


  • Prev by Date: Associate Property
  • Next by Date: vote emails
  • Previous by thread: Pattern Matcher
  • Next by thread: How to turn off this warning message?