MathGroup Archive 2002

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

Search the Archive

Re: a question about pattern replacements

  • To: mathgroup at smc.vnet.net
  • Subject: [mg36177] Re: a question about pattern replacements
  • From: Tom Burton <tburton at brahea.com>
  • Date: Mon, 26 Aug 2002 04:15:54 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

On 8/23/02 6:46 PM, in article ak6ope$e9q$1 at smc.vnet.net, "Sidney Cadot"
<sidney at jigsaw.nl> wrote:

> z := SomeHead[{{1, 2}, {3, 4}}]
> z /. {SomeHead[q_] -> Flatten[q]}
> 
> While this _does_ yield the desired result {1,2,3,4}, Mathematica complains:
> 
> Flatten::"normal": Nonatomic expression expected at position 1 in
> Flatten[q].

The -> operator is prompt: It permits evaluation of the RHS Flatten[q]
immediately, before it is used in the substitution. Evidently, q was
undefined before you tried this, so Flatten[q]'s evaluation yielded itself.
Later, in the process of substitution, with q set as you intended, Flatten
evaluated again, this time yielding the desired result.

Try it again after setting q to something. Then you get not only the
complaint but also the wrong answer.

To avoid these issues, use the delayed operator :> instead of the prompt
operator ->. A rule of thumb is:  Use delayed operators := and :> when the
LHS (SomeHead[q_] in your case) contains a blank (_).

Tom Burton



  • Prev by Date: Re: "K" is a System` Symbol
  • Next by Date: Re: a question about pattern replacements
  • Previous by thread: RE: a question about pattern replacements
  • Next by thread: Re: a question about pattern replacements