ReplaceAll 和 ReplaceRepeated 的应用

ReplaceAll 最多只应用一次规则的示例,而 ReplaceRepeated 将在循环中执行,但始终从第一个规则重新启动应用程序。

x + a /. {
  a_ + z :> (Print[0]; DoneA),
   a_ + x :> (Print[1]; y + z), 
   a_ + y :> (Print[2]; DoneB)}

(* Prints "1", yields "y+z" *)

x + a //. {
  a_ + z :> (Print[0]; DoneA),
   a_ + x :> (Print[1]; y + z), 
   a_ + y :> (Print[2]; DoneB)}

(* Prints "1", then prints "0", yields "DoneA" *)