On 19/02/2020 00:50, Phelype Oleinik wrote: > Hi Kelly, > >> - Are all boxes and coffins made so that their content is wrapped in a TeX group? >> More specifically, is it safe for code to assume that all box/coffin content is >> implicity grouped? > > Yes, because the underlying TeX box makes a group: > \count0=1 \hbox{\count0=2 }\the\count0 \bye > so you can assume the grouping. All boxes are also explicitly documented as colour-safe, so have an additional group level. >> - Many functions in expl3 are of the form `a := func(b, c)` (e.g. `\str_concat:NNN`, >> `\seq_set_map:NNn`) or `a := func(b)` (e.g. `\int_set:Nn`, `\tl_set:Nn`). >> Sometimes, one will want to write code like `a := func(a, b)` or `a := func(a)`, >> that is, directly assign a new value to a variable based on its current value. >> Is it ever safe to write such code in expl3? > > Yes, because first `func(a, b)` is evaluated, and only then > the assignment is performed. Something like: > \def\x{b} \edef\x{a\x c} > makes `\x=macro:->abc`. > > Though this last one may depend a bit on the macro > implementation (if the function needs intermediate steps > to do its job, for example), but I'd expect to able to rely > on that behaviour. This is safe for all expl3 functions. Joseph