Print

Print


Hello all,

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.

There are arguments for and against the difference in behaviour.

On the side of the current approach, an empty sequence is very different
from a missing key in a a property list. If a sequence is being used as
a stack, then trying to get/pop once it is empty is probably going to be
due to a coding error. If you potentially return \q_no_value then there
has to be a quark test each time you get a value, and that does not make
so much sense for a stack.

On the other hand, \q_no_value is defined as being a special return
value used when there is 'nothing to return'. Doing

  \seq_pop_left:NN \<seq> \<tl var>
  \quark_if_no_value:NF \<tl var>

is not going to be too much slower than the current code, as there is an
internal test which would be removed if the behaviour was changed.

Thoughts?
-- 
Joseph Wright