From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#19371: 25.0.50; doc of functions and macros defined in macroexp.el Date: Sat, 03 Aug 2019 00:33:14 +0200 Message-ID: <87blx7jiz9.fsf@web.de> References: <1b8c129f-19cb-4088-ad8a-4eb0f9df6a54@default> <87v9vfl1d8.fsf@mouse.gnus.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="175112"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 19371@debbugs.gnu.org To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Aug 03 00:35:04 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1htg8c-000jIx-3N for geb-bug-gnu-emacs@m.gmane.org; Sat, 03 Aug 2019 00:35:02 +0200 Original-Received: from localhost ([::1]:37840 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htg8b-0003DT-65 for geb-bug-gnu-emacs@m.gmane.org; Fri, 02 Aug 2019 18:35:01 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:59151) by lists.gnu.org with esmtp (Exim 4.86_2) (envelope-from ) id 1htg7h-0002Se-5C for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 18:34:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1htg7e-0006jf-S1 for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 18:34:05 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]:49135) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1htg7e-0006iO-JG for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 18:34:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1htg7e-0006Sn-EA for bug-gnu-emacs@gnu.org; Fri, 02 Aug 2019 18:34:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 02 Aug 2019 22:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19371 X-GNU-PR-Package: emacs Original-Received: via spool by 19371-submit@debbugs.gnu.org id=B19371.156478521724815 (code B ref 19371); Fri, 02 Aug 2019 22:34:02 +0000 Original-Received: (at 19371) by debbugs.gnu.org; 2 Aug 2019 22:33:37 +0000 Original-Received: from localhost ([127.0.0.1]:57956 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1htg7F-0006SB-1a for submit@debbugs.gnu.org; Fri, 02 Aug 2019 18:33:37 -0400 Original-Received: from mout.web.de ([212.227.17.11]:38177) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1htg7C-0006Ry-PR for 19371@debbugs.gnu.org; Fri, 02 Aug 2019 18:33:35 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1564785197; bh=Ri1mhbfkwcOxELIRYJECYbHi3N2A/UT9iUURQ0OIRak=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=aLlSv+/tNeiLLJSlyLuKcVBSuIBYLbswBTu1/9O+Ee49Nbs4aMGpwb4UCMIOM0DYx mI1CLWqW7TYnaevobJxIeb3xrip85WpWIaBAVoWHLkf1J/yhRx8yY+34igZNTh/wDn wpkz+grnJ0Ct9tT7HVhcS0Fc6VJDT10LVFKAaenA= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([92.208.178.242]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MVLak-1hqwIV2TPC-00YecJ; Sat, 03 Aug 2019 00:33:17 +0200 In-Reply-To: <87v9vfl1d8.fsf@mouse.gnus.org> (Lars Ingebrigtsen's message of "Fri, 02 Aug 2019 23:10:43 +0200") X-Provags-ID: V03:K1:oHPnAyU5UrzazpKfcx+2+VQG8HbhkFAjVgtdKpAUTB34x3nnabG XJGOiO7GEnUSebyRDRSAF9YUwfn/X9GHrs9edEO0lp9FuxzNK7NxUN0MsKS8gyO7GPSmesD QXdxciGZFAsPnUXyXMSG6gM1J6nxmnCAMVD+P71zWqwhdW7/9ZQmAs/XCmmefsWw6a91ayo atVCUwuIY7z7S1/A92GEw== X-UI-Out-Filterresults: notjunk:1;V03:K0:/2aSVGG0/Z8=:JHQye9hvcq5C75XzQ3VPAE zwok0M+ajuc/vAB5guGiH8PPS5qt45YfEtbF3tWONIaMURIyM39gTWY5pbhULnNfi9qqwWQ0z 4nkA7sWjSVK98HfZReweE2buDQsLJcXJeMg0jmYnKkq0J9zN8Byb77rPRCVHI4q3G8XY4gHRe xak6ZiQXNvrLElo05HMWTFcY2CV6sOE0kRnaXJD2U5VumGhJ3qiWptywpID6BXBpZ2/YOiTw3 yMxjh2yPCTjPbuneoAEzmQwOuPrbmMj6Yf/mRmdRplsv0CdoxMOLIrpTB9zVAS50687aW+2cm 8S3HhG+Iu/y+8a3BWPnM4ElkTol+IZP7MQaNJLxbx378RB8Ybqf+rdb0mbiXaKTlB6MxOSlH1 aEEjN1qIglAw760Px/79a5UIWVwWyNgAzixEiMer9JbgL4sqTwmN0aVYAKFtOQwADWZyNv1II m3eH1Ky8SkDDVsjZhYYn14aeOa32zFp4EwMWkKPp5llkqw686rvV4Fnue/te7pSPzRkIQgpom 33y05sVlCj9IroL6quhuegL2+K7/U0nxp66S73J+mVPy1OJ8V8+qygstvoDQ/q7Db/0SCcfGl LPSq8sx+gow8I68nOzim/rmX26SCGA/FsXFZ/AT3zIH3ZZCnhzJl9OVi7cxJomxl4zcYZlVLK D15ngWA68x3HKnBlAZYXcvM4+6dimsk9ETERv802tq++5vcdBlYgICGf8jVNC96xIH/zaiGad bpl4ZvkxspFxLclPWra+JIjJa9EHvSOBQNhkjGh8XZhdFuYiyx9m3Vb/rqLqmIMoL64/UdiL X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:164406 Archived-At: Lars Ingebrigtsen writes: > (defun macroexp-progn (exps) > - "Return an expression equivalent to \\=`(progn ,@EXPS)." > + "Return EXPS with `progn' prepended. > +If EXPS is a single expression, `progn' is not prepended." > (if (cdr exps) `(progn ,@exps) (car exps))) That's described a bit confusingly: AFAIU EXPS should always be a list of expressions, and when it's _a_list_ of only one expression, `progn' is not prepended and the expression is returned (and not EXPS as your text suggests). BTW, compared to that description I find the original version much better (simpler). > > 2. And then there is `macroexp-let2*', whose doc string says only to > > bind each binding (bind a binding?!) "as `macrolet2' does". That > > means nothing. Presumably, based on the `*' in the name, the behavior > > is similar to that of `let*'. If so, you can use the doc of `let* > > as inspiration. > > Uhm... I have no idea what it does: > > (defmacro macroexp-let2* (test bindings &rest body) > "Bind each binding in BINDINGS as `macroexp-let2' does." > (declare (indent 2) (debug (sexp (&rest (sexp form)) body))) > (pcase-exhaustive bindings > ('nil (macroexp-progn body)) > (`((,var ,exp) . ,tl) > `(macroexp-let2 ,test ,var ,exp > (macroexp-let2* ,test ,tl ,@body))))) You understand what macroexp-let2 does? It supports one binding (a var plus an expression, specified as separate arguments). macroexp-let2* supports a list of such pairs specified as BINDINGS, similar to let*. The naming scheme `macroexp-let2' vs. `macroexp-let2*' is not ideal: first, because `macroexp-let2' doesn't support multiple bindings like `let', and secondly because, if I look at the use cases in the sources, most of them just want to establish multiple bindings, but parallel binding would suffice, so they actually want to non-stared version of macroexp-let2*, which is not macroexp-let2 - AFAICT it doesn't exist. Michael.