How to systematically classify Mathematica expressions? I can think of using Head[], Depth[], Length[], and some special pattern based on the problems at hand. What other key words, or functions should I consider?
Update
I mostly want to group symbols by how nested its list are, and what kinds of elements the lists have. For example
{_String, _Symbol}
{{_Integer}, _String}
_String
would be considered three distinct types.


Tally[Length /@ Characters@Names[]]– belisarius Jan 17 at 22:55