The following works:
In[39]:= ClearAttributes[M, Flat];
Replace[M[F1[a]], M[x_F1] | M[x_F2] -> x]
Replace[M[F2[a]], M[x_F1] | M[x_F2] -> x]
Replace[M[F3[a]], M[x_F1] | M[x_F2] -> x]
Out[40]= F1[a]
Out[41]= F2[a]
Out[42]= M[F3[a]]
the following does not
In[34]:= ClearAttributes[M, Flat];
SetAttributes[M, {Flat}];
Replace[M[F1[a]], M[x_F1] | M[x_F2] -> x]
Replace[M[F2[a]], M[x_F1] | M[x_F2] -> x]
Replace[M[F3[a]], M[x_F1] | M[x_F2] -> x]
Out[36]= M[F1[a]]
Out[37]= M[F2[a]]
Out[38]= M[F3[a]]
why?
Comments
Post a Comment