The documentation for Inactivate makes the function sound really powerful because it gives granular control over which kind of expressions specifically not to evaluate.
Inactivate[expr,patt]inactivates all symbols in expr that match the pattern patt.
Can then anyone explain to me this behavior of Inactivate?
Inactivate[{Print@1,Print@2}, Print] /. Inactivate@Print[a_]:> a //Activate
{1,2}
Inactivate[Print/@{1,2}, Print] /. Inactivate@Print[a_]:> a //Activate
1
2
{Null, Null}
A more useful application for this kind of scenario would be a workaround to make Flatten handle lists containing atoms. (Which does not work)
Inactivate[Flatten/@{1, {2, {3}}}, Flatten]
/. Inactivate@Flatten[a_?AtomQ]:> a //Activate
while this works again:
Inactivate[{Flatten@1,Flatten@{2, {3}}}, Flatten]
/. Inactivate@Flatten[a_?AtomQ]:> a //Activate