# What is the purpose of the Expression-manipulation tag?

For what should we use the tag? It doesn't have a wiki, though from the 13 questions it seems like it covers structural manipulation of expressions. While 13 questions are not too much, there is another side of the coin: structural manipulation is a very important part of Mathematica, and is underrepresented among the tags. We always fall back to use such low-level manipulation whenever regular evaluation is not enough, and we all like the beauty of the injector pattern and the T&S method.

The topic is only partly covered by and , which are not directly about structural manipulation. Furthermore, there is the tag: it seems like that is used whenever the other is used in a somewhat interchangeable fashion. Now I understand, that for example rearranging knowns and unknowns in an equation both involves algebraic and structural manipulation in Mathematica, but since there is no wiki for the latter, the appropriate tag lingers there without any meaning.

I would like to hear your opinion about this issue before submitting anything to the tag wiki, or before pushing for tag removal, retagging, synonymizing, or whatnot.

How to manipulate expressions structurally. The tag is not about manipulating mathematical formulae algebraically but is about adding/removing/replacing parts of expressions structurally, often without evaluating (parts of) the expression. Structural manipulation usually involves functions of the `Hold` family (`Hold`, `HoldForm`, `HoldComplete`, `HoldPattern`), controlled evaluation (`Unevaluated`, `Evaluate`, `ReleaseHold`) and replacement functions (`With`, `Replace`, `ReplaceAll`, etc.).
• Sounds good to me, with one (two?) minor exceptions: since `HoldForm` and `Defer` are mainly for producing held output and not often used for more general manipulations, I think questions concerning these would be better off categorized under evaluation rather than lumped in here. `With`, on the other hand, is a very powerful tool for expression-manipulation. – Oleksandr R. Oct 29 '12 at 22:28
• @Oleks Thanks for the extra bits, I've edited my answer. But I would like to point out that `HoldForm` can be used just like `Hold` to make structural changes using `With`, see e.g. my answer here. – István Zachar Nov 2 '12 at 10:46