Re: Default value in pattern matching
- To: mathgroup at smc.vnet.net
- Subject: [mg132237] Re: Default value in pattern matching
- From: Larry Adelston <larrya at wolfram.com>
- Date: Tue, 21 Jan 2014 03:47:55 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-outx@smc.vnet.net
- Delivered-to: mathgroup-newsendx@smc.vnet.net
- References: <20140118095946.3B4C36A11@smc.vnet.net>
Don't you need to define myPlus[b_.]? In[173]:= myPlus[b_.] = b; Default[myPlus] = 0; myPlus[0] := 0; a /. {a + myPlus[b_.] -> "matched"} Out[176]= "matched" Larry ----- Original Message ----- > From: "Yi Wang" <tririverwangyi at gmail.com> > To: mathgroup at smc.vnet.net > Sent: Saturday, January 18, 2014 3:59:46 AM > Subject: Default value in pattern matching > > Hello, > > I was investigating the usage of the "a_." pattern. I understand that for > some built-in functions with default value, we can do > > In[] := a /. {a + b_. -> "matched"} > > Out[] = "matched" > > However, if I define a function myself with > > In[] := Default[myPlus] = 0; > myPlus[0] := 0; > a /. {a + myPlus[b_.] -> "matched"} > > Out[] = a > > In other words, my default value is not used in the "b_." pattern. Is there a > way to get a /. {a + myPlus[b_.] -> "matched"} match in the same way as a /. > {a + b_. -> "matched"}? > > Otherwise I have to write separately as > > In[] := a /. {a -> "matched", a + myPlus[b_] -> "matched"} > > This is a lot of additional work for complicated cases. > >
- References:
- Default value in pattern matching
- From: Yi Wang <tririverwangyi@gmail.com>
- Default value in pattern matching