The LaTeX3 documentation for the l3basics package lists three functions
\use_none_delimit_by_q_nil:w ... \q_nil
\use_none_delimit_by_q_stop:w ... \q_stop
\use_none_delimit_by_q_recursion_stop:w ... \q_recursion_stop
with delimited arguments, which all remove the ... part from the input stream. Another three :nw variants are defined that remove the ... part but put their first argument back into the input stream.
I'm wondering what these functions are supposed to be used for. Reading arguments delimited by a stop marker is quite useful sometimes when the starting command and the final marker have to be split across two different places in the code.
However, there are three such function here with names that indicate these function are supposed to be used in special circumstances. They are also removing their collected tokens from the input, which seems quite strange for a recursive function; collecting tokens to return them as final result would seem more useful to me.
So what is the intended use for these functions?
\map_break:, to remain expandable you can't set a variable to signal the loop's end, so instead you have to “gobble” everything until the end, which is what these macros do. – Henri Menke May 25 '19 at 21:19