On 11/09/2015 11:17, Alexander Grahn wrote: > On Fri, Sep 11, 2015 at 11:06:08AM +0100, Joseph Wright wrote: >> On 11/09/2015 10:46, Alexander Grahn wrote: >>> consider the following example: >>> >>> \documentclass{article} >>> \usepackage{expl3} >>> >>> \begin{document} >>> \ExplSyntaxOn >>> \clist_set:Nn\l_tmpa_clist{,,foo,bar,} >>> \typeout{\clist_count:N\l_tmpa_clist} %expected: 5, I get 2. >>> \typeout{\clist_item:Nn\l_tmpa_clist{3}} %expected: `foo`, I get `'. >>> \typeout{\clist_item:Nn\l_tmpa_clist{4}} %expected: `bar`, I get `'. >>> \ExplSyntaxOff >>> \end{document} >>> >>> Why does \clist_set:Nn ignore empty items when initialising a clist >>> variable from a token list? Is this intended behaviour? Is there a >>> work-around? > >> This is by-design. Comma lists can't contain empty items, commas, etc.: >> sequences can. The reason is comma lists are 'close' to the user level, >> and there stray empty entries are normally best ignored. > > This is very unfortunate, because I want to be able to correctly process > user input of comma sparated items which /may/ contain empty items. > > With \@for from LaTeX2e I can easily process such input properly: > > \documentclass{article} > > \begin{document} > \makeatletter > \@for\listitem:=,,foo,bar,\do{ > \typeout{item:\listitem} > } > \makeatother > \end{document} > > Now I am looking for an L3 equivalent of \@for. > > Alexander What's the real-world use case? Joseph