|
[Date Index]
[Thread Index]
[Author Index]
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
|