On 1/20/2014 10:42 PM, Itai Seggev wrote: > MatchQ[x+x, _+_] would return False
That is actually much less surprising to me: one expects evaluation of the first expression. What is quite surprising is that `_+_` does not stand for any+thing, `_*_` does not stand for any*thing, etc. (Not unless one uses HoldPattern.) I do not consider these "edge cases".
As you say, a decision had to be made. I am just trying to understand the decision. Your answer that it treats all symbolic expressions equally is very likely a good answer in the end, but of course on its own it begs the question.