Edit2:Coping with my habit of missing subtleties I have tried again to correct it further.
Block[{a = Hold@{2 + 2}, b = Hold@{4 + 4},
l}, {l = HoldForm[Hold[{ {s}, {d}}]] /. {s -> a /. Hold -> Defer,
d -> b /. Hold -> Defer}; Length[l]}
Table[l[[i]] /. List -> Sequence, {i, 1, Length[l]}] /.
HoldPattern[Hold[x___]] :> Hold[{x}]
{Hold[{Sequence[2+2],Sequence[4+4]}]}
To check with @Mr.Wizard's test case of unequal lists, I am getting following output.
Block[{a = Hold@{2 + 2, 1 + 1}, b = Hold@{4 + 4},
l}, {l = HoldForm[Hold[{{s}, {d}}]] /. {s -> a /. Hold -> Defer,
d -> b /. Hold -> Defer}; Length[l]} Table[
l[[i]] /. List -> Sequence, {i, 1, Length[l]}] /.
HoldPattern[Hold[x___]] :> Hold[{x}]]
{Hold[{Sequence[2 + 2, 1 + 1], Sequence[4 + 4]}]}
ReleaseHold
gives {4,2,8}.
Thread[Join[a, b]] /. {Hold[x___]} :> Hold[{x}]
. $\endgroup$a
andb
are not the same length. Or perhaps that's why you didn't post this as an answer. $\endgroup$