Received: from mx0.gmx.net (mx0.gmx.net [213.165.64.100]) by h1439878.stratoserver.net (8.14.2/8.14.2/Debian-2build1) with SMTP id p8RCDZmi028302 for ; Tue, 27 Sep 2011 14:13:36 +0200 Received: (qmail 8964 invoked by alias); 27 Sep 2011 12:13:27 -0000 Delivered-To: GMX delivery to rainer.schoepf@gmx.net Received: (qmail invoked by alias); 27 Sep 2011 12:13:26 -0000 Received: from relay.uni-heidelberg.de (EHLO relay.uni-heidelberg.de) [129.206.100.212] by mx0.gmx.net (mx089) with SMTP; 27 Sep 2011 14:13:26 +0200 Received: from listserv.uni-heidelberg.de (listserv.uni-heidelberg.de [129.206.100.94]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p8RCAw9U026620 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Tue, 27 Sep 2011 14:10:58 +0200 Received: from listserv.uni-heidelberg.de (localhost.localdomain [127.0.0.1]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p8RC7PqF001176; Tue, 27 Sep 2011 14:10:57 +0200 Received: by LISTSERV.UNI-HEIDELBERG.DE (LISTSERV-TCP/IP release 16.0) with spool id 1657149 for LATEX-L@LISTSERV.UNI-HEIDELBERG.DE; Tue, 27 Sep 2011 14:10:57 +0200 Received: from relay.uni-heidelberg.de (relay.uni-heidelberg.de [129.206.100.212]) by listserv.uni-heidelberg.de (8.13.1/8.13.1) with ESMTP id p8RCAvi3023845 for ; Tue, 27 Sep 2011 14:10:57 +0200 Received: from ix.urz.uni-heidelberg.de (cyrus-portal.urz.uni-heidelberg.de [129.206.100.176]) by relay.uni-heidelberg.de (8.14.1/8.14.1) with ESMTP id p8RCAvMd026588 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 27 Sep 2011 14:10:57 +0200 Received: from relay2.uni-heidelberg.de (relay2.uni-heidelberg.de [129.206.210.211]) by ix.urz.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p8RCAuuI027500 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Tue, 27 Sep 2011 14:10:56 +0200 Received: from lo.gmane.org (lo.gmane.org [80.91.229.12]) by relay2.uni-heidelberg.de (8.13.8/8.13.8) with ESMTP id p8RCAjSC026359 for ; Tue, 27 Sep 2011 14:10:49 +0200 Received: from list by lo.gmane.org with local (Exim 4.69) (envelope-from ) id 1R8WUi-0005Hp-P7 for LATEX-L@URZ.UNI-HEIDELBERG.DE; Tue, 27 Sep 2011 14:10:40 +0200 Received: from pd95499c2.dip.t-dialin.net ([217.84.153.194]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 27 Sep 2011 14:10:40 +0200 Received: from news3 by pd95499c2.dip.t-dialin.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Tue, 27 Sep 2011 14:10:40 +0200 X-Injected-Via-Gmane: http://gmane.org/ Lines: 50 Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Complaints-To: usenet@dough.gmane.org X-Gmane-NNTP-Posting-Host: pd95499c2.dip.t-dialin.net User-Agent: 40tude_Dialog/2.0.15.41de X-Spam-Flag: No X-Envelope-From: X-Spam-Status: No, hits=-4.40 required=5 tests=AWL,BAYES_00,L_P0F_Linux,RCVD_IN_DNSWL_MED,SPF_HELO_PASS, SPF_PASS Message-ID: Date: Tue, 27 Sep 2011 14:10:20 +0200 Reply-To: Mailing list for the LaTeX3 project Sender: Mailing list for the LaTeX3 project From: Ulrike Fischer Subject: o and V-type functions To: LATEX-L@listserv.uni-heidelberg.de Precedence: list List-Help: , List-Unsubscribe: List-Subscribe: List-Owner: List-Archive: X-GMX-Antispam: 0 (eXpurgate); Detail=5D7Q89H36p7zYQev1Bv5lawyulDRL8ctSYajDRb6Eccz3aTqLmQvryvRUqgqkzaK/pe5L ihdfW23KQs6uc22JdeztRzHjM/BtrwFbHgAPvjYNAt/R6dBQa2nS+aZCFQ1gswBRNxeY8yelXdFA yIDec6u7jbeqk1FymRvqWSSW5ZQvYtZrMduQg7VzEORcAvweEa5j0rDqCk=V1; X-Resent-By: Forwarder X-Resent-For: rainer.schoepf@gmx.net X-Resent-To: rainer@rainer-schoepf.de Status: R X-Status: X-Keywords: X-UID: 6904 The documentations source3 says at the start "In general, the V and v specifiers are favoured over o for recovering stored information". But everytime I start to define functions which should expand their argument I end either with x or o types. As an example I tried to write a function which process key-val lists. The list can also be given through a command. With o this works fine, with V normal and empty lists gives errors: \documentclass[parskip]{scrartcl} \usepackage{expl3} \begin{document} \section{expl3} \ExplSyntaxOn \keys_define:nn {test} {testa .code:n = {#1}, testb .code:n = {#1}, } \cs_new:Npn \test_usekeys:n #1 {keys:~[\keys_set:nn {test}{#1}]} \cs_generate_variant:Nn \test_usekeys:n {V} \cs_generate_variant:Nn \test_usekeys:n {o} \def\mykeylist{testa=A,testb=B} \test_usekeys:V {\mykeylist} %\test_usekeys:V {testa=A,testb=B} %\test_usekeys:V {} \par \test_usekeys:o {\mykeylist}\\ \test_usekeys:o {testa=A,testb=B}\\ \test_usekeys:o {}\\ \test_usekeys:o {\mykeylist}\\ \end{document} Could someone explain me when arguments of type V are actually useful and "better" than o and how they should be used? -- Ulrike Fischer