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: [mg36172] Re: [mg36163] a question about pattern replacements
  • From: Andrzej Kozlowski <andrzej at lineone.net>
  • Date: Mon, 26 Aug 2002 04:15:49 -0400 (EDT)
  • Sender: owner-wri-mathgroup at wolfram.com

You are quite right, Mathematica does evaluate Flatten[q] before 
substituting {{1, 2}, {3, 4}}. It then issues the error message and 
returns Flatten[q]. Only now {{1, 2}, {3, 4}} is substituted for q, 
Flatten[{{1, 2}, {3, 4}}] is evaluated and you get the right answer. To 
avoid all this just use RuleDelayed instead of Rule:

In[1]:=
z := SomeHead[{{1, 2}, {3, 4}}];

In[2]:=
z /. {SomeHead[q_] :> Flatten[q]}

Out[2]=
{1,2,3,4}

  Andrzej Kozlowski
Toyama International University
JAPAN

On Saturday, August 24, 2002, at 02:34  AM, Sidney Cadot wrote:

> Hi all,
>
> While playing arounf with patterns and substitutions, I came across the
> following behavior which I didn't expect:
>
> 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].
>
> ........as if it is trying to evaluate Flatten[q], with q not bound to
> {{1,2},{3,4}}.
>
> Could anybody explain why this happens?
>
> Best regards,
>
>   Sidney Cadot
>
>
>
>
>
>



  • Prev by Date: Re: a question about pattern replacements
  • 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