On 22/09/2010 13:15, Lars Hellström wrote:
> The idea I have proposed is to change the definition of quarks from
> effectively
> \def\q_nil{\q_nil}
> to
> \def\q_nil{\string\q_nil}

This breaks \quark_if_<name-here>:NTF. For example, \q_no_value is used 
as a return value for functions such as

   \prop_get:NnN \l_some_prop { key } \l_return_tl

So \quark_if_no_value:NTF needs to be true for both

   \quark_if_no_value:NTF \q_no_value


   \quark_if_no_value:NTF \l_return_tl

That then requires two separate tests, something like:

   \tex_ifx:D \q_no_value #1
     \tex_ifx:D \q_novalue_tl #1 % set to { \q_no_value }

I'd also point out that currently an 'o' expansion of a quark gives the 
quark, whereas in the scheme suggested things do change.

(At a higher level, \NoValue in xparse is implemented as

   \cs_new_protected:Npn \NoValue { -NoValue- }

so that it _can_ be typeset without a loop occurring. However, this is 
used in 'document level' functions, so the requirements are different.)
Joseph Wright