Will Robertson wrote: > On 12/02/2009, at 5:00 PM, Will Robertson wrote: > >> Having some more troubles, this time with \token_if_expandable. >> Unfortunately, the only token I can find that trips this "true" is >> \relax or \scan_stop:, which isn't exactly what I thought the intended >> behaviour was supposed to be. > > After searching through c.t.t. for a while, I found an insane thread > talking about this sort of thing: > <http://groups.google.com/group/comp.text.tex/msg/2b571c53da89f86f> > > Dan Luecking's comment is that > \expandafter\ifx\noexpand#1#1 > "seems a feasible test for expandability of a token". > > I'm in a rush, and might be barking up the wrong tree here, but here's a > re-implementation of \token_if_expandable that *seems* to behave in a > more coherent manner. This is still a bit odd. For example, try: \documentclass{article} \usepackage{expl3} \begin{document} \def\foo{bar} \def\test{\edef\test{bar}} \ExplSyntaxOn \def:Npn \token_if_expandable_p:N #1{ \cs_if_exist:NTF #1 { \exp_after:NN \if_token_eq:NN \exp_not:N #1 #1 \c_false \else: \c_true \fi: } {\c_false} } \def_test_function:npn {token_if_expandable:N} #1{ \if:w\token_if_expandable_p:N#1} \noindent Should~be~T:~\token_if_expandable:NTF \foo {T} {F} \\ Should~be~T:~\token_if_expandable:NTF \test {T} {F} \\ Should~be~F:~\token_if_expandable:NTF \undefined {T} {F} \\ Should~be~F:~\token_if_expandable:NTF \def {T} {F} \\ Should~be~F:~\token_if_expandable:NTF \the {T} {F} \\ Should~be~F:~\token_if_expandable:NTF \write {T} {F} \ExplSyntaxOff Look at what happens with \the. Joseph