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