Bug in pattern test, or I did something wrong?
- To: mathgroup at smc.vnet.net
- Subject: [mg125862] Bug in pattern test, or I did something wrong?
- From: Yi Wang <tririverwangyi at gmail.com>
- Date: Thu, 5 Apr 2012 05:51:18 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
Hi, all, When I define a function using pattern test conditions, I got some unexpected Replace (or ReplaceAll) behaviour: ClearAll[f, g, a, x]; f[a_ /; MemberQ[{0, 1, 2}, a]] := 0; f[x] /. f[expr_] :> f[-expr] (* expect f[-x], but I got f[x] *) f[x] /. f[expr_] + a_. :> f[-expr] + a (* Even worse, Here I got f[-expr] + f[x], completely weird! *) PS: Workaround: if I use another form of pattern test, there is no problem: g[a_?MemberQ[{0, 1, 2}, #] &] := 0; g[x] /. g[expr_] :> g[-expr] (* g[-x] as desired *) g[x] /. g[expr_] + a_. :> g[-expr] + a (* g[-x] as desired *)
- Follow-Ups:
- Re: Bug in pattern test, or I did something wrong?
- From: Yi Wang <tririverwangyi@gmail.com>
- Re: Bug in pattern test, or I did something wrong?
- From: Bob Hanlon <hanlonr357@gmail.com>
- Re: Bug in pattern test, or I did something wrong?
- From: Christoph Lhotka <christoph.lhotka@fundp.ac.be>
- Re: Bug in pattern test, or I did something wrong?