MathGroup Archive 2006

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

Search the Archive

Re: ReplaceAll (/.)


On 1 Sep 2006, at 11:41, Bruce Colletti wrote:

> Re Mathematica 5.2.0.0.
>
> Why doesn't:
>
>                (a b) /. x_Times -> List @@ x
>
> return {a,b}?  My (flawed) reasoning is that a b has form Times 
> [a,b], and so x matches to Times[a,b].  List@@x replaces Times with  
> List to yield List[a,b], or {a,b}...or so it would seem.
>
> The explanation is somehow linked to the fact that:
>
>                (a b) /. x_Times :> List @@ x
>
> returns {a,b}, but I don't see why this works but not the above.
>
> Although List@@(a,b) returns {a,b}, I want to use the above  
> ReplaceAll function (this example here is taken from a larger  
> problem).
>
> Thankx.
>
> Bruce
>


You need to use RuleDelayed (:>) rather than Rule (->) because, if  
you use just Rule, List@@x is first evaluated and gives:



List@@x


x

So all you are actually doing is

(a b) /. x_Times -> x

Andrzej Kozlowski


  • Prev by Date: Re: ReplaceAll (/.)
  • Next by Date: Re: ReplaceAll (/.)
  • Previous by thread: ReplaceAll (/.)
  • Next by thread: Re: Re: ReplaceAll (/.)