Hello Lars,

> Indeed, there are several possible interpretations:
> (1) Sequences of character tokens
> (2) Sequences of character tokens with normalised catcodes
> (3) Sequences of characters from some alphabet (possibly large),
> representation not necessarily native
> (4) Sequences of LICRs.
>
> Which you want to use depends on what is being targeted, i.e., what
> strings are going to be used for. \write, \special, and \csname are
> probably the main consumers, and since these want (1), that's probably
> the main thing to support.

That to me is not what I was aiming at. I'm thinking about more "user 
level" strings. For things like \csname you detokenize as part of 
forming the name (using \tl_to_str:n = \detokenize). The same applies to 
\special and \write situations: these are already covered by \tl_to_str:n.

> I would suggest that core string module would primarily operate on the
> (1) kind of string, possibly requiring (2) for some operations, and
> providing the necessary conversion operation 1->2 (trusting the user to
> apply it where necessary, rather than building it into each and every
> operation just to be on the safe side).

That's very much the approach of things like stringstrings, as far as I 
understand it.
-- 
Joseph Wright