What determines whether I should use a property list or a key-value list when implementing some interface in expl3 syntax?
The LaTeX3 documentation says
Property lists are intended for storing key-based information for use within code. This is in contrast to key–value lists, which are a form of input parsed by the keys module.
(
interface3.pdf, p. 129)
This suggests to me that, if I'm providing a document-level interface, I should be using key-value lists rather than property lists, and that the latter should be reserved for more internal data handling.
However, property lists often feature in answers which seem prima facie to involve providing a document-level interface for handling user input. For example, egreg posted code of this kind yesterday.
This makes me think that I have just misunderstood the distinction which the L3 docs are getting at in the above quotation.
How is this distinction to be understood? That is, how do I decide whether to use property lists or key-value lists in a particular case?
EDIT
So what I have is roughly a somewhat more complicated version of the following
\documentclass{article}
\usepackage{xparse}
\ExplSyntaxOn
\prop_new:N \l_test_res_prop
\NewDocumentCommand \res { m }
{
\group_begin:
\seq_set_split:Nnn \l_tmpa_seq { , } { #1 }
\seq_map_inline:Nn \l_tmpa_seq
{
\prop_item:Nn \l_test_res_prop { ##1 }
}
\group_end:
}
\cs_new_protected:Nn \test_res_set:nn
{
\prop_if_exist:NF \l_test_res_prop
{
\prop_new:N \l_test_res_prop
}
\prop_put:Nnn \l_test_res_prop { #1 } { #2 }
}
\cs_generate_variant:Nn \test_res_set:nn { VV }
\keys_define:nn { test }
{
res / unknown .code:n = {
\test_res_set:VV \l_keys_key_tl \l_keys_value_tl
},
}
\NewDocumentCommand\testset { +m }{
\keys_set:nn { test } { #1 }
}
\ExplSyntaxOff
\testset{
res/something={\begin{center}\Huge\bfseries\itshape Something \dots\end{center}},
res/this way comes={\begin{center}\Huge\bfseries\itshape \includegraphics[width=.5\linewidth]{cauldron}\par this way comes \dots\end{center}},
res/wicked={\begin{center}\Huge\bfseries\itshape wicked \dots\end{center}},
}
\usepackage{graphicx}
\begin{document}
\res{something}
\res{wicked,this way comes}
\end{document}
which is, indeed, using both key-value and property lists. But is this really legitimate usage? Don't get me wrong: it works very nicely, thank you. But it seems to rely on dubious sleight of hand ....

\keys_define:nnprovide more conveniency about checking what to do with the values, where in property lists values are stored only without much processing (which would be possible by applying other code on the property values and then storing them) -- In fact, using both of them is what I do in my (yet) private packages. For me, it's not vs, it's both ... and, whereas thekey-valueinterface is the path to save data into property lists – Feb 25 '18 at 21:28interface3.pdf. In my opinion users should handle this more flexible here. – Feb 25 '18 at 21:36.bool_set:N-- I've (and probably others) asked Joseph more than once about this useful feature, apparently there is something new ahead – Feb 25 '18 at 21:39\prop_set_from_keyval:Nnthat might be exactly what you are after? – Manuel Mar 01 '18 at 08:59expl3as I'm highly dependent on it. However, if that makes it into the mainstream, it would definitely provide a less inappropriate-feeling method. – cfr Mar 01 '18 at 17:18interface3.pdfI think means it's the stable part of expl3. – Manuel Mar 01 '18 at 19:58