On 14/04/2011, at 1:14 AM, Joseph Wright wrote:

> Currently, if you do
>  \prop_get:NnN \<prop-list> { <key> } \<tl var>
> and the <key> is not in the \<prop-list> then the \<tl var> ends up as
> \q_no_value. On the other hand, for sequences trying to 'pop' or 'get'
> from an empty sequence leads to a (deliberate) error.

My personal thoughts:

* These should probably be consistent.
* I think returning a quark is dangerous in case of sloppy package authors.
* I favour a deliberate error message for all in such cases, with a variant function for the "error" case; e.g.,

    \seq_clear:N \l_tmp_seq
    \seq_pop:NN \l_tmp_seq \x

should yield "Error: The sequence \l_tmp_seq is empty." with the possibility of also writing

    \seq_clear:N \l_tmp_seq
    \seq_pop:NNF \l_tmp_seq \x { <recovery code> }

in which the recovery code is executed in this case.

* * *

The above is just my own view on things and not necessarily optimal. I'm open to discussion, of course.

-- Will