Re: Pattern matching trivia

• To: mathgroup at smc.vnet.net
• Subject: [mg13640] Re: Pattern matching trivia
• From: "Allan Hayes" <hay at haystack.demon.cc.uk>
• Date: Fri, 7 Aug 1998 09:41:09 +0100
• References: <6qcr0d\$qln\$5@dragonfly.wolfram.com>
• Sender: owner-wri-mathgroup at wolfram.com

```Ersek_Ted%PAX1A at mr.nawcad.navy.mil wrote in message
<6qcr0d\$qln\$5 at dragonfly.wolfram.com>...

..........

Now the function (foo) below has the attribute HoldAllComplete. The
peculiar thing is that the definitions are now used.  It seems that
when the arguments of (foo) are Complex or Rational, the pattern
matcher now treats these arguments as the sum or product of smaller
expressions.

In[5]:=
Attributes[foo]={HoldAllComplete};
foo[a_+b_]:={Complex,a,b}
foo[m_/n_]:={Rational,m,n}

In[7]:=
foo[2+3I]

Out[7]=
{Complex,2,3 I}

In[8]:=
foo[2/3]

Out[8]=
{Rational,2,3}

..........

Ted,

HoldFirst is sufficient:

ClearAll[foo];
Attributes[foo]={HoldFirst};
HoldPattern[foo[a_+b_]]:={Complex,a,b} foo[m_/n_]:={Rational,m,n}

{foo[2 + 3],foo[3/6]}

{{Complex,2,3},{Rational,3,6}}

This is related to

Hold[2+3I]//FullForm

Hold[Plus[2,Times[3,I]]]

2+3I//FullForm

Complex[2,3]

The conversion to Complex[..] form is made after evaluation.

Allan

------------------------------------------------------------- Allan
Hayes
Mathematica Training and Consulting
Leicester UK
http://www.haystack.demon.co.uk
hay at haystack.demon.co.uk
voice: +44 (0)116 271 4198
fax: +44(0)116 271 8642

```

• Prev by Date: RE: Mathematica lock-up when comsuming Win95 system resources
• Next by Date: Re: Mathematica and Win98?
• Previous by thread: Pattern matching trivia
• Next by thread: Re: Pattern matching trivia