Hi Philipp,

Just a quick reply to one of your comments.

On 11/02/2010, at 10:27 AM, Philipp Stephani wrote:

> fgrep -n 'd:' *.dtx says that there is exp_not:d in l3expan.dtx:952.

Thanks for pointing this out; not sure how we missed it really.

> Perhaps "\exp_not" is sometimes a misnomer? \exp_not:o means "expand exactly once", and not "expand not". Using that convention, you could also define a macro \exp_not:x for exhaustive expansion. I think the meaning of the specifiers should not contradict the meaning of the macro name.

The argument specifiers have nothing to do with the macro name and do not contradict it.

\exp_not:n{...} means "do not expand the contents an expanding context".

\exp_args:No \exp_not:n {...} , which is \exp_not:o, means "expand the argument once" then "do not expand the contents in an expanding context". 

So the "exp_not" refers only to the material passed to it as an argument, which has nothing to do with the fact that the argument happens to be expanded once beforehand.

(And \exp_not:x, for which we would need an expandable \exp_arg:x, would be useless.) 

-- Will