On 12/02/2009, at 5:36 PM, Joseph Wright wrote:

> A more complex example:
>
> \def\foo{\edef\bar{stuff}}
>
> is not fully expandable, but if you get the test working should give
> \c_true.  So I think this might not be a good idea.  (I assume that  
> this
> test is supposed to see if something is a macro.  I do that in  
> siunitx,
> but using \meaning and looking for "macro".)


I think this function is supposed to mean "check if the token will (or  
has the capability to) expand into something else". So it's not  
exactly testing for being a macro or otherwise, more if it will  
"change" when used in an edef or similar.

> Should~be~F:~\token_if_expandable:NTF \the {T} {F} \\


So here, while \the isn't a macro, it will expand when used correctly  
in an edef (e.g., \edef\foo{\the\baselineskip} ).  I've explicitly  
caught undefined macros to return "F" because it just seemed more  
logical that way.

Three questions, then:

1.  Have I got the idea behind this function right? (Morten?)
2.  Was it indeed originally broken, and does my code fix it?
3.  Can we think of a less confusing name for it?
     Maybe  \token_if_will_expand  ?
     Unless it's only me that finds "\token_if_expandable" confusing.

(4. What is it good for?)

Cheers,
Will