Services & Resources / Wolfram Forums
MathGroup Archive
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Pattern Matching

  • To: mathgroup at
  • Subject: [mg49020] Re: [mg49003] Pattern Matching
  • From: Andrzej Kozlowski <akoz at>
  • Date: Tue, 29 Jun 2004 04:49:46 -0400 (EDT)
  • References: <>
  • Sender: owner-wri-mathgroup at

On 28 Jun 2004, at 17:13, Bruce W. Colletti wrote:

> This command (built from recent traffic) extracts the quadratic's
> coefficients and exponents:
>     Cases[4x + x^2, c_.*x^n_. -> {c,n}]
>     {{4,1}, {1,2}}
> As I understand it, the symbol "_." uses the global default value for
> the given variable, a value that can be set using Default.
> Question:  For the specific (illustrative) problem above, how would I
> set (using Default[ ]) different default values for c and n?  Or must I
> do something like:
>     Cases[4x + x^2, (c_:5)*x^(n_:7) -> {c,n}]
> Thanks.
> Bruce
Deafults are assigned to functions, not to variables. So you could do 


Default[Times] = 5

Cases[4*x + x^2, (c_.)*x^(n_:7) -> {c, n}]

{{4, 7}, {5, 2}}

But obviously it would not be a good idea to leave it like this!

This is a much more subtle way to achieve this without unprotecting and 
modifying Times:

Block[{Times}, Default[Times] = 5; SetAttributes[Times,
     {OneIdentity}]; Cases[4*x + x^2, (c_.)*x^(n_:7) ->
      {c, n}]]

{{4, 7}, {5, 2}}

Note that it will not work without assigning the Attribute OneIdentity 
to Times inside Block! The explanation why this is so is quite 
complicated so all I will say is I learnt some years back from Michael 
Trott's marvellous "Mathematica Guidebooks".

Andrzej Kozlowski
Chiba, Japan

  • References:
  • Prev by Date: Re: PlotLabel with assigned variables *and* on several lines
  • Next by Date: Re: Mathematica on Linux
  • Previous by thread: Re: Pattern Matching
  • Next by thread: RE: Pattern Matching