Re: pattern matching: rules that stop other rules?

*To*: mathgroup at smc.vnet.net*Subject*: [mg71610] Re: [mg71596] pattern matching: rules that stop other rules?*From*: Bob Hanlon <hanlonr at cox.net>*Date*: Sat, 25 Nov 2006 05:36:47 -0500 (EST)*Reply-to*: hanlonr at cox.net

If has the attribute HoldRest (Hold all but the first position) Attributes[If] {HoldRest,Protected} f[x_]=0; ClearAll[qwerty]; qwerty[p,1,f[2]] qwerty(p,1,0) SetAttributes[qwerty, HoldRest]; qwerty[p,1,f[2]] qwerty(p,1,f(2)) Look in Help browser for Attributes Bob Hanlon ---- croddie at princeton.edu wrote: > Hello. I've been using Mathamatica for quite a while but without ever > finding out how the language works fundamentally, which I'm trying to > do now. I'd be grateful for some help in understanding patterns - it > seems like a powerful idea to me. There is something I can't work out. > > Define a function f [x_]:=0 say > Now If [ p, 1, f [ 2] ] evaluates to itself. So the rule in the > definition is not applied to f [ 2 ]. > > Replace If with some other undefined function, say qwerty, and you get > qwerty [ p, 1, 0] not surprisingly. And If [ p, 1, f [ 2] ] /. f > [x_]->0 returns If [ p, 1, 0 ]. > > Is there a rule associated with If that stops a rule (if that's the > right expression) from being applied inside it? Can users write such > rules? > > Thanks for any help. >