From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 27 Aug 2017 20:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 28254@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.15038647098566 (code B ref -1); Sun, 27 Aug 2017 20:12:02 +0000 Received: (at submit) by debbugs.gnu.org; 27 Aug 2017 20:11:49 +0000 Received: from localhost ([127.0.0.1]:58326 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dm3uP-0002E6-EF for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42139) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dm3uM-0002Dt-Oe for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dm3uG-0008FR-Hf for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:41 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:42882) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dm3uG-0008F5-Et for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33005) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dm3uE-0004Xn-6u for bug-gnu-emacs@gnu.org; Sun, 27 Aug 2017 16:11:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dm3u9-00085O-UT for bug-gnu-emacs@gnu.org; Sun, 27 Aug 2017 16:11:38 -0400 Received: from mail-qt0-x231.google.com ([2607:f8b0:400d:c0d::231]:38370) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dm3u9-00082u-M0 for bug-gnu-emacs@gnu.org; Sun, 27 Aug 2017 16:11:33 -0400 Received: by mail-qt0-x231.google.com with SMTP id q53so17589938qtq.5 for ; Sun, 27 Aug 2017 13:11:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=SlQ7QbIDMQq0ZOg++ivrJ41neSd8P8aHSCwo83XvHSM=; b=k3cQjqel0sjziZ8aVq3y0KirtNdDKSwMOAKdEabubixQHQl9CvgyPJ3NnOt8itXhgP B4vlO5IzPA5/9Mn1N6Y5QgA2LksBhzhPN04gaOLiHB0bcQOIb2Pbg2fNMJrcYtWSCUV1 Cti6FHhrvzC2nofE60fvGYuPhg+7mjI//Wc8GaU/exUkELreQ3fa78HF3Ko0nSEuxrSP etUOc7gsfrsrucd9mEkHb0LX2YGSbORvOcEB/S/2lxlwWBt6Tqcz/nq47MBIy0i8SqCh pIL7A/dEHVsBnoQkzQYAwGYD3yoUmqX5Nl6jnf7xJ85O6VTXXDn7TohQn36JHfGnP04Z q74w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=SlQ7QbIDMQq0ZOg++ivrJ41neSd8P8aHSCwo83XvHSM=; b=hUG4ejtAAWJGsz6NXvovlljkpJU4+QtsKoHtjU9STm5e2hFeoj6oYeImV04jR+757X AVZdZmDHmUMCqb4+FO1NYQ2hU9WVh5kVuoC33+fYJv61ejQGZr3sNaWb4VuaEPkJgGJJ gpzjxBV4s/JV0hXTd1yreAV7E+L8dY+Goq14bCoo/52qY+d17sSzWw0kKStE0tSK5Lhh BK2fqMy4bGpn0PkJS8J6r9Ciq3YS460ZfWeYKtqL6zzxLbqCNqwbWO5HyZn9C/Dy0PHj 0ZCqofTLtD/FhvnPS1eMN3GYfqBHwzEezM3upJPMXCHNBBSV/b2glSC7OvxORLsidFje tBXA== X-Gm-Message-State: AHYfb5jhZcd9M7dj4fukpxhdrgX9PkQEKGVn+w7o8XAEodyJum+FFU5V BJIHhAiUGbL0b9LsrbykDA== X-Received: by 10.237.33.129 with SMTP id l1mr6497653qtc.279.1503864691155; Sun, 27 Aug 2017 13:11:31 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id o13sm7683818qtg.47.2017.08.27.13.11.29 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 27 Aug 2017 13:11:30 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 32BB66B4DB; Sun, 27 Aug 2017 16:11:29 -0400 (EDT) From: Mark Oteiza Date: Sun, 27 Aug 2017 16:11:29 -0400 Message-ID: <87a82kdb4e.fsf@holos> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.3 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.3 (----) Hi, A while ago I aliased and-let* to when-let* in subr-x in be10c00d. Some time later I implemented it and promptly forgot about it. While this could be cleaned up and dropped into subr-x, it could just as well be in its own file--its behavior overlaps with when-let* but each has things the other lacks. https://www.gnu.org/software/guile/manual/html_node/SRFI_002d2.html https://srfi.schemers.org/srfi-2/srfi-2.html (defmacro and-let* (varlist &rest body) "Bind variables according to VARLIST and conditionally eval BODY. Like `when-let*' except if BODY is empty and all the bindings are non-nil, then the result is t. Elements of VARLIST can additionally be of the form (EXPR), which is evaluated and checked for nil." (declare (indent 1) (debug ([&or (&rest &or symbolp atom (symbolp &optional form) (form)) (symbolp form)] body))) (let (res (prev-var t) (i 0)) (dolist (binding varlist) (push (cond ((symbolp binding) (prog1 `(,binding (and ,prev-var ,binding)) (setq prev-var binding))) ((atom binding) binding) ((and (listp binding) (null (cdr binding)) (let ((form (car binding))) (or (listp form) (atom form)))) (let ((new (cl-gensym))) (prog1 `(,new (and ,prev-var ,(car binding))) (setq prev-var new)))) (t (prog1 `(,(car binding) (and ,prev-var ,(cadr binding))) (setq prev-var (car binding))))) res)) `(let* ,(nreverse res) ,(if (null body) prev-var `(when ,prev-var ,@body))))) (ert-deftest srfi-2-test-empty-varlist () (should (equal 1 (and-let* () 1))) (should (equal 2 (and-let* () 1 2))) (should (equal t (and-let* ())))) (ert-deftest srfi-2-test-group-1 () (should (equal nil (let ((x nil)) (and-let* (x))))) (should (equal 1 (let ((x 1)) (and-let* (x))))) (should (equal nil (and-let* ((x nil))))) (should (equal 1 (and-let* ((x 1))))) (should-error (and-let* (nil (x 1))) :type 'setting-constant) (should (equal nil (and-let* ((nil) (x 1))))) (should-error (and-let* (2 (x 1))) :type 'wrong-type-argument) (should (equal 1 (and-let* ((2) (x 1))))) (should (equal 2 (and-let* ((x 1) (2))))) (should (equal nil (let ((x nil)) (and-let* (x) x)))) (should (equal "" (let ((x "")) (and-let* (x) x)))) (should (equal "" (let ((x "")) (and-let* (x))))) (should (equal 2 (let ((x 1)) (and-let* (x) (+ x 1))))) (should (equal nil (let ((x nil)) (and-let* (x) (+ x 1))))) (should (equal 2 (let ((x 1)) (and-let* (((> x 0))) (+ x 1))))) (should (equal t (let ((x 1)) (and-let* (((> x 0))))))) (should (equal nil (let ((x 0)) (and-let* (((> x 0))) (+ x 1))))) (should (equal 3 (let ((x 1)) (and-let* (((> x 0)) (x (+ x 1))) (+ x 1)))))) (ert-deftest srfi-2-test-rebind () (should (equal 4 (let ((x 1)) (and-let* (((> x 0)) (x (+ x 1)) (x (+ x 1))) (+ x 1)))))) (ert-deftest srfi-2-test-group-2 () (should (equal 2 (let ((x 1)) (and-let* (x ((> x 0))) (+ x 1))))) (should (equal 2 (let ((x 1)) (and-let* (((progn x)) ((> x 0))) (+ x 1))))) (should (equal nil (let ((x 0)) (and-let* (x ((> x 0))) (+ x 1))))) (should (equal nil (let ((x nil)) (and-let* (x ((> x 0))) (+ x 1))))) (should (equal nil (let ((x nil)) (and-let* (((progn x)) ((> x 0))) (+ x 1)))))) (ert-deftest srfi-2-test-group-3 () (should (equal nil (let ((x 1)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y))))) (should (equal nil (let ((x 0)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y))))) (should (equal nil (let ((x nil)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y))))) (should (equal (/ 3.0 2) (let ((x 3.0)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y)))))) From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: npostavs@users.sourceforge.net Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 01 Sep 2017 02:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.15042344729504 (code B ref 28254); Fri, 01 Sep 2017 02:55:02 +0000 Received: (at 28254) by debbugs.gnu.org; 1 Sep 2017 02:54:32 +0000 Received: from localhost ([127.0.0.1]:38567 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnc6K-0002TE-DR for submit@debbugs.gnu.org; Thu, 31 Aug 2017 22:54:32 -0400 Received: from mail-io0-f179.google.com ([209.85.223.179]:35092) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnc6G-0002T0-V3 for 28254@debbugs.gnu.org; Thu, 31 Aug 2017 22:54:29 -0400 Received: by mail-io0-f179.google.com with SMTP id k22so9500766iod.2 for <28254@debbugs.gnu.org>; Thu, 31 Aug 2017 19:54:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=yK034bIKRbR/c3j+nA2CeZboiu29MPtmHnHZovaT084=; b=qTG9ELefFf20J+Le63Gh2FKnZzoiy9DOAjMpBknvas6fU9NaWGcWBpzBcTBUWJKjmD aAmS19wEI7y8z9TjUM9Srxrw1dCIJsIToAhF4iQk8CrzaK2OBpSpqPtyIy0Q4Y29jZW1 g7u4g7p+0uncIR4cNazi74aLTn7oMKDIfJEYBxwG7mq3elo5lnqiXEY74XBfE0S3iwes HlI5SsAzGM6H6fsiwCRbidZt4t8dE57eKeEactvJ5h4x/u/fGP4QG3tWH4Zv51Gp3hPP obRgdeNHpHvOhwyuHKsnDQg2vmijfzEeD6W2V5BfRypc08OuZRPXtitOVfUVGN9i0dxk zwSg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=yK034bIKRbR/c3j+nA2CeZboiu29MPtmHnHZovaT084=; b=JCac+FZ59SW8dBwy/bPppLE//i4AjoXOtnhzlrJJGwy/wrRw+fAsd3zxHBkw+o1gja 3OuWBMroI81VjK+Lr6MEj++wU1P1SOYi3FzL8ZbxyVogpWwjuvlj2Vk3cgFwAsC/EruF 20qoY8H5Jy0fF4yQtzKdxULrCKa3HLTsaTayaahhRMbLP7qCKIYTjwT7cFWmBO/3xpGd dJsLcXfpePTIUU0R/huK7xWJLfRxgNgaWEjtF0JE5Bv2CGFZqNJ5YzHVGZ0c1+gNKe0r 0OnpaQjIt5aypn+n5Nc8KSM6iz0k/+tMHiVAWG5MrPW61jqeNF5E5MaUSyW6SbXT4oyL 3Fsw== X-Gm-Message-State: AHPjjUirDbqMiKpe0/APQ4N70uNHgX3erJcxJ7h9JFkN+461RL9OMXef XriCc2CdMJoKWrBk X-Google-Smtp-Source: ADKCNb4RVwQdunY/tOluGQYBvyTSqu3A0uXazVFb5TuozXJzBflBgQaHzcgjSpS4z50IgmghAjUhWg== X-Received: by 10.107.57.70 with SMTP id g67mr346461ioa.321.1504234463183; Thu, 31 Aug 2017 19:54:23 -0700 (PDT) Received: from zony ([45.2.119.49]) by smtp.googlemail.com with ESMTPSA id s72sm594853ioi.77.2017.08.31.19.54.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Thu, 31 Aug 2017 19:54:18 -0700 (PDT) From: npostavs@users.sourceforge.net References: <87a82kdb4e.fsf@holos> Date: Thu, 31 Aug 2017 22:55:58 -0400 In-Reply-To: <87a82kdb4e.fsf@holos> (Mark Oteiza's message of "Sun, 27 Aug 2017 16:11:29 -0400") Message-ID: <87inh36sap.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) Mark Oteiza writes: > its behavior overlaps with when-let* but each has things the other > lacks. Can the differences be minimized? I think having a bunch of tiny differences is not good for reader comprehension or code reuse. How much would be lost if we implemented and-let* like this? (defmacro and-let* (varlist &rest body) `(when-let* ,varlist ,@(or body '(t)))) From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Sep 2017 02:11:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: npostavs@users.sourceforge.net Cc: 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150431825310077 (code B ref 28254); Sat, 02 Sep 2017 02:11:02 +0000 Received: (at 28254) by debbugs.gnu.org; 2 Sep 2017 02:10:53 +0000 Received: from localhost ([127.0.0.1]:40945 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnxtc-0002cT-Nd for submit@debbugs.gnu.org; Fri, 01 Sep 2017 22:10:52 -0400 Received: from mail-qk0-f179.google.com ([209.85.220.179]:36854) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnxtb-0002cG-4m for 28254@debbugs.gnu.org; Fri, 01 Sep 2017 22:10:51 -0400 Received: by mail-qk0-f179.google.com with SMTP id o63so7400822qkb.3 for <28254@debbugs.gnu.org>; Fri, 01 Sep 2017 19:10:51 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=SuZ96VE/dqHztARUidmMosmYEvQiHx57dy/TX+uLpVY=; b=x0cMaFtkcbwruKXQRvovKrH3TyK7AWM+NXD7G+q9YXK54MY1LgfuRwINaGZKEjTV6J ZlMnUWXFZRuzGJpXpe2jwstwhSzDIjqeZU4Ghh+Fwn/Pvnp+SUSqH5NIZZHNP0LDCMnc r5/6jQNf5I8wDoOe4ZBEBxIBuOg84doKA4MRzDIMkvoKl2U3dgtDFYM/pC3JOi6/qd6M uy/o7TBDoTIV/D9WRzB67rUCN6EUMzeMVk2HALIUGYvhaEuuSDibLx0NnQ0HlnyWe4NS LZWk3pBhbM7HoUaGxLY92yPcL4MBZ5u/sSdlffSeqHAESlshJeahBZPqJoXAI1jlwqnI n2tw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=SuZ96VE/dqHztARUidmMosmYEvQiHx57dy/TX+uLpVY=; b=bdEQx0QMXt9u3azl35g/z0owgMfhrtK3M+OJ1FjpBXl67NdDstx9FYbX72Q4Uh2KtA BBmy0WgBDmK9jBVlP7fq4NApoXFp8Mznr58bLJU4S572B5TfRDxQx8t1fUEwRaT7VjMA TwP8aYSmjCte5iUd4swtysnu4XuSeCM5RC93S3OB1CjvIHbm/5v3kitoaFrdDAW8xrG6 QFkPNkyHmmQJD3pT92gAljjkqvnGZq8Nx9WkIQBG7pkFchhMMcCnhE63ADSeXaqZCyo5 PWZv782Xj0TrlYtYg2cx7hpJLysu+oYnBFMsefzVep9pKeYL/6p3cbK5HTDr57jId9ve lKHQ== X-Gm-Message-State: AHPjjUg335vuw5Dq86Ddw6aJ1zEhaz8kPEu6A3UnT0A5QMeW1DdpcLQl EJkTjHvw2c1JlOdthhQsMg== X-Google-Smtp-Source: ADKCNb7XlR/jP4/esQ8b5vKNvddDPbvQA7WIUQbod3NzrgxyPJahIiGHSoVb92G/kkD10Ux5b5sL/Q== X-Received: by 10.55.74.194 with SMTP id x185mr5058525qka.237.1504318245298; Fri, 01 Sep 2017 19:10:45 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id a186sm164902qkg.13.2017.09.01.19.10.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 01 Sep 2017 19:10:44 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id E329C69C52; Fri, 1 Sep 2017 22:10:43 -0400 (EDT) Date: Fri, 1 Sep 2017 22:10:43 -0400 From: Mark Oteiza Message-ID: <20170902021043.GA7509@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <87inh36sap.fsf@users.sourceforge.net> User-Agent: Mutt/1.8.3 (2017-05-23) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 31/08/17 at 10:55pm, npostavs@users.sourceforge.net wrote: >Mark Oteiza writes: > >> its behavior overlaps with when-let* but each has things the other >> lacks. > >Can the differences be minimized? I think having a bunch of tiny >differences is not good for reader comprehension or code reuse. Understood. I was leaning toward putting and-let* in its own file because of the differences instead of having them all in the same place. I'd rather have no and-let* than a gimped and-let* (I shouldn't have made the alias, in retrospect). >How much would be lost if we implemented and-let* like this? > >(defmacro and-let* (varlist &rest body) > `(when-let* ,varlist > ,@(or body '(t)))) The (EXPR) part of it, e.g. (and-let* ((x ...) (y ...) ((x > y))) ...) where the body gets executed if x > y. I didn't try writing it in the style of if-let*--perhaps if-let* could be extended and all three macros would learn (EXPR). if-let* already has the single tuple quirk which differs from most (if not all?) lets in Elisp. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: npostavs@users.sourceforge.net Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Sep 2017 03:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150432141614567 (code B ref 28254); Sat, 02 Sep 2017 03:04:01 +0000 Received: (at 28254) by debbugs.gnu.org; 2 Sep 2017 03:03:36 +0000 Received: from localhost ([127.0.0.1]:40988 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnyid-0003mt-SY for submit@debbugs.gnu.org; Fri, 01 Sep 2017 23:03:36 -0400 Received: from mail-io0-f170.google.com ([209.85.223.170]:37537) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnyiZ-0003me-Nb for 28254@debbugs.gnu.org; Fri, 01 Sep 2017 23:03:33 -0400 Received: by mail-io0-f170.google.com with SMTP id d78so8057854ioe.4 for <28254@debbugs.gnu.org>; Fri, 01 Sep 2017 20:03:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=tj5/LyhLnBo3lrf8hz99ZMoW/ib0UfN2yJH35ZAOZZs=; b=JYVjoNJot+rJUzc0VhRuqmTDOUsotGHbvWehe6nNeAabCmogWdey+nrYDIR18s/bLK 2ybMkJkx//PXKi9PR6CBL3j1XcMwxFAJA53KQJr01LUHgQWqMZwt8K9cRGTpeNSyAHzH MVyW3EkmSIFmFE4ZpZTKP30rrQP1G5+pCnL/xSRshW7Bt771WOp4hAexBnYPZD9qiKRA fTcnEg6gaRndAoe/LUFNPiqAFXmcW7gTg5PpHgVvhhq8AJmPzKWCEVCC55MWl0r30hhl 0+OdJOZ70RTAC8CJJqQJhKQ8AgVP3vC+l/yIwOhTrPX5s6bTM33AHWOHixR9yQP1Q1uF VuWw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:references:date :in-reply-to:message-id:user-agent:mime-version; bh=tj5/LyhLnBo3lrf8hz99ZMoW/ib0UfN2yJH35ZAOZZs=; b=JpkbK1Q4/OmPyRDL15e5Ps2KyqCxIvyplVVpt23CYIISz5g5bDAvIzpxBP6VUh3Hzc Zfqjs19HcaARghTIgx0hZnPPypv1+8jrcVpA3y/TdJiX3RQYE1gnhtLldlhNnD2fuCjt 3+mupjCh1jdT+WXilN2HMaoT+QtN+2vpBiOD6aQhBC1r9YUHws8ui9Suw38MOxsPFihR 1VoLubdtikyYVmCZpb6CM+bwvHeLUlGYB29XWFLK5WYTPw+6Y5Nt5NBcp/Y1YaedTAyl jggBtkcXpYZhrecLPr/j3DXMfzhJy+og01yXssoU+B57r09OmJRQETfhRmtsJUlnHOPD 9QTQ== X-Gm-Message-State: AHPjjUgrLvRdb4LitUEfWid5veA6VEhh0yOX1LTuh2Ev4zRROkwzQ5A/ GKsvaYr/BEZdwlBA X-Google-Smtp-Source: ADKCNb7Hu1O8YH9+g/GhUZX2NbMBirczpfDDS1QQqdrNfxGBjeIdH6lhAzNZ8PgV0236bM5iAia8CQ== X-Received: by 10.107.131.14 with SMTP id f14mr3561976iod.333.1504321405970; Fri, 01 Sep 2017 20:03:25 -0700 (PDT) Received: from zony ([45.2.119.49]) by smtp.googlemail.com with ESMTPSA id p6sm889981itp.13.2017.09.01.20.03.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 01 Sep 2017 20:03:25 -0700 (PDT) From: npostavs@users.sourceforge.net References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> Date: Fri, 01 Sep 2017 23:05:07 -0400 In-Reply-To: <20170902021043.GA7509@holos.localdomain> (Mark Oteiza's message of "Fri, 1 Sep 2017 22:10:43 -0400") Message-ID: <878thx7qcc.fsf@users.sourceforge.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.2.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -2.1 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.1 (--) Mark Oteiza writes: > (and-let* ((x ...) > (y ...) > ((x > y))) > ...) I assume you meant (> x y), unless you've managed to somehow squeeze an infix expression parser into that patch above ;) > I didn't try writing it in the style of if-let*--perhaps if-let* could > be extended and all three macros would learn (EXPR). Yes, I think it's best if all foo-let* macros interpret the varlist in the same way. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Sep 2017 04:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: npostavs@users.sourceforge.net Cc: 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150432567621236 (code B ref 28254); Sat, 02 Sep 2017 04:15:02 +0000 Received: (at 28254) by debbugs.gnu.org; 2 Sep 2017 04:14:36 +0000 Received: from localhost ([127.0.0.1]:41062 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnzpM-0005WS-GQ for submit@debbugs.gnu.org; Sat, 02 Sep 2017 00:14:36 -0400 Received: from mail-qt0-f181.google.com ([209.85.216.181]:33425) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dnzpI-0005WB-5j for 28254@debbugs.gnu.org; Sat, 02 Sep 2017 00:14:34 -0400 Received: by mail-qt0-f181.google.com with SMTP id e2so8144753qta.0 for <28254@debbugs.gnu.org>; Fri, 01 Sep 2017 21:14:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=zLp1/Xx2htDFDgo8zgfJ09jlDkWwkujQpMUigVnpfe8=; b=zLMsDUvDXryILIvExCZOqjrDgz5LQoUcsq8+bTM0cmcDEGwKcHydCvs3tmxDGAdiVR DJDBczdQ4EMF8OPRFuGCfj5nHTs6yynDWjvLnv9Xirdd1b686zgOwVDdtrz7JK4gWQfU VRMSK3LMTf4SXWU5TvABVX1Ehq6eqZ+G4pmqXk+fbuP33S3ubNR56f9IIoHoNZJRYev8 7LBQw76OpbIiaB+sXTHtPxThj5v7GtDkoAk1TTYQ2RMa6ZL9kfYOH5oiBCnB9JbPR5/S Y0jkjQWQj+zA+8ndBddoXUka6bhrhPyoz9fk1ggbFPi6L84KjkJ4m2HH4e6GmA8XEkr+ cIlw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=zLp1/Xx2htDFDgo8zgfJ09jlDkWwkujQpMUigVnpfe8=; b=CRdbwHraU9KwE3mn4zBW2B3y/g7oIyzIZNp4o+EV2Si4Fy9C/lUIjqS/V2CfhilEAu vBjABMay6aNd6FAxsW+olcQ0Ua7aPusIODRaB+AY5k36wjuXJARsK9O5Iy5P6jnD57G2 Jwn1iootjfKoJg9hw1YGa4+3QqWJk9FjZNOApWhEH0w9vzWHSTjsOnNKpb6a0ee4Ah7k A+vXb1LSfKZ+6gG3EFmA4c4GVwMCr6DdRiL9FxTxqdBltCNM73WjoFquQ1vC4hi3uKAC yQWxhLX/eF0NS4YOBRyIofysssZhJhSTKlR7POEAS3SVyJvsr0bwxjRMkpJBY9BfjZMP EOKQ== X-Gm-Message-State: AHPjjUjYA1PjXh6HwKhTUJ5tGC3eMQx5z2P8l8wHJQFVxGu05QfHlrD4 2b41Wm8r//UMa5fxMT4nWQ== X-Google-Smtp-Source: ADKCNb5XCX++AOsdUeuu83QWe3V58FmOEdm31le4OMe5Fic0tbMbAw0TgCO1n0Db3E0aSQA3I3l2QQ== X-Received: by 10.200.25.16 with SMTP id t16mr5510913qtj.93.1504325666411; Fri, 01 Sep 2017 21:14:26 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id m59sm1283684qte.61.2017.09.01.21.14.25 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 01 Sep 2017 21:14:25 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id DEB4F69C52; Sat, 2 Sep 2017 00:14:24 -0400 (EDT) Date: Sat, 2 Sep 2017 00:14:24 -0400 From: Mark Oteiza Message-ID: <20170902041424.GA21189@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <878thx7qcc.fsf@users.sourceforge.net> User-Agent: Mutt/1.8.3 (2017-05-23) X-Spam-Score: -0.2 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) On 01/09/17 at 11:05pm, npostavs@users.sourceforge.net wrote: >Mark Oteiza writes: > >> (and-let* ((x ...) >> (y ...) >> ((x > y))) >> ...) > >I assume you meant (> x y), unless you've managed to somehow squeeze an >infix expression parser into that patch above ;) Ah yeah, I wish! >> I didn't try writing it in the style of if-let*--perhaps if-let* could >> be extended and all three macros would learn (EXPR). > >Yes, I think it's best if all foo-let* macros interpret the varlist in >the same way. Alright, I'll look at it. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Sep 2017 05:26:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, npostavs@users.sourceforge.net Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150432992828373 (code B ref 28254); Sat, 02 Sep 2017 05:26:01 +0000 Received: (at 28254) by debbugs.gnu.org; 2 Sep 2017 05:25:28 +0000 Received: from localhost ([127.0.0.1]:41142 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1do0vv-0007NZ-R7 for submit@debbugs.gnu.org; Sat, 02 Sep 2017 01:25:28 -0400 Received: from mout.web.de ([217.72.192.78]:55361) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1do0vu-0007NF-AB for 28254@debbugs.gnu.org; Sat, 02 Sep 2017 01:25:26 -0400 Received: from drachen.dragon ([88.66.71.141]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0M8iPI-1deA5j1VNc-00CBOh; Sat, 02 Sep 2017 07:25:11 +0200 From: Michael Heerdegen References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> Date: Sat, 02 Sep 2017 07:25:07 +0200 In-Reply-To: <20170902041424.GA21189@holos.localdomain> (Mark Oteiza's message of "Sat, 2 Sep 2017 00:14:24 -0400") Message-ID: <87tw0lzn7w.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:07SFUTb6aXsLW8wWjKFEmBPO6uZI+qgTtG+PcQP0RQoCYy7sLsa dRTIVXKtt2frBCy4Ku/CT89GVyYJN4t7F0Qk6pqQduHAZ5R7eTu0Ohbhlng14th4Ji+wcpZ KitlidshSsvmTF5K31yeRvzzjxMGiue6aUyrWqrXQbkLXiG4ldLE1SRamTObP2YrV+o30Nr sid8ZtVww4FhWuYjznnUg== X-UI-Out-Filterresults: notjunk:1;V01:K0:86nyPqkUDKo=:z8AmAYnwI6s1YhXZxiA0FH 6V0OU8yP2+8ihfPGx61JIvUQyuEspv26zpvdyUqNlB84obyBFZIrVnwCydscOmPxqQDnVP4H1 vzyif1K584ltna6tIaR/TPM8nTXLntpXPgGyLaP9yCTxUTNF+m7c/j1hXH7VWnXl+wmeqev12 ulzPUD4XJYHi5PD7DKckWZXTWFqEv4pn0raZiDqrO37e4RDbeOExO3UevuQ9wc2Ir0cTHeZbr XuMsMX9HfPcj9liLLXaijh5RCfLnvZek0vMqmgcnxJkGqqjtTZxHCzCfBCVNv0TaJuj1gvYYc 4KnQADN7+S3PowD/4GIWx2+9bjKOryGsWXIyZfwwfIJ2lo6YjC0KsstvRX4uS46DmqAFhzy/U DzJvg/LclVdo2jUga0QCphJyLn1H9Xitvm8vdfwLTzDUAklXTd0TjFcCA/S1sTTnyNLop3JEr xqHOJoM+b61HQDSvQwxhcu3/5ZF7EzN1eN+txeTMU3hgTHOIVZ6REsj0+thU+9ez9uGurMX61 ZSYgILs9uSNEyk8O49IlZIs5td8DM1Cjskp2NbwbfVmUdQ5GbZBjFg5qgvFzQbhuQpcXM5QSL lnLuKHQxHFtpKYeRKefDUEM+HCTSHM5shFG69HQ/aCQT721bdAXJYOMDOvhsTWn3yDQ7KAXkd jomIiI/KH5jxUEdFDMzd7a0yafgAFv9TCV2dmD0MAD96OhQaKaCTx7voD2YpCwe5SYMyukQmf 6OjePIKsWMQlmaJEarr6uQx8L1lVmvbQN8QNvXINlYFQyuDJkzoTxfDENjKMxANySgonB2MTT oLLiUH/x3EI/qAWO5bNp7AbqBpKVERaii1JXdM8GL4McPYFV3w= X-Spam-Score: -3.5 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Mark Oteiza writes: > >> I didn't try writing it in the style of if-let*--perhaps if-let* could > >> be extended and all three macros would learn (EXPR). > > > >Yes, I think it's best if all foo-let* macros interpret the varlist in > >the same way. > > Alright, I'll look at it. Isn't there a problem with EXPR being a symbol S, which already has a different meaning (bind S to nil)? Though, this seems barely useful to me. Anyway, introducing (EXPR) would thus be backward incompatible. Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Sep 2017 13:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, npostavs@users.sourceforge.net Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150435937526123 (code B ref 28254); Sat, 02 Sep 2017 13:37:01 +0000 Received: (at 28254) by debbugs.gnu.org; 2 Sep 2017 13:36:15 +0000 Received: from localhost ([127.0.0.1]:41896 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1do8at-0006nH-5x for submit@debbugs.gnu.org; Sat, 02 Sep 2017 09:36:15 -0400 Received: from mail-qk0-f171.google.com ([209.85.220.171]:38043) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1do8aq-0006n1-S4 for 28254@debbugs.gnu.org; Sat, 02 Sep 2017 09:36:13 -0400 Received: by mail-qk0-f171.google.com with SMTP id n64so5402702qki.5 for <28254@debbugs.gnu.org>; Sat, 02 Sep 2017 06:36:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=3ws9QuIKSEyAKMd2N9+SHIS43VrI71OTIVnSGo3XjJY=; b=EwbHSdb5BHP+IY3ewsQo/JkZ/MiFbzHv6aVWNuCyCYuVtLOrSvXmhmb55u0LtPPsUb zfog10c8JWfYVywsusa1F08VVGYMmdNBtPdW6dh8RA4l+RZ+TggzRTRna3d/ZOarahxu etHLGNQaxzkv5njT06sHNsl2MdEcIuZnWWglDdUKJ1mBJd7vdDU9M05KKlBT8mxh8KBo VWBi3XJCkTU8j/bZJB/sEiJRCqg6/l/pSDTojLlW0ntL+WpUyfRfetPzsD8xUQo/m4Ag Go8y+mySw+BHGmwTgmda0HQ/O82edES2Gbss6orkjrBPss0WUepNYxmRkydFLjoZC/56 Qntg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=3ws9QuIKSEyAKMd2N9+SHIS43VrI71OTIVnSGo3XjJY=; b=Ertm072/8FOtdBq4wtbEX0tSjTO6ECck34wJrvQK9y0jWzl+svUn8WTFn0pvUOLK5O e28kqyy0mmtqVHjOxmS08rfwDsDURiv/pAsQ4fVdlshxylRHd15UOPeipTDCcTN7Piih Mn3Bg4x5x2wgDqlUNxRs3rygaj329Kswot8jntvuFkowxCGnGOaiHzr0sVmoBisi9z8V oMbJeNfb4gbpokqQkNWCTOiIxqw8zNkqMBPEfOVSyf6YE50wxjx34G+lioN4eazE1F5u ar0Na9jQDF8c5+s7ywfl0HkjpYdN+OHm2ATj+gBft2+CYD2svKesUEIIYHTkZptNbJFB s+QQ== X-Gm-Message-State: AHPjjUj3u1AEE5VzkwjQbCqx6IzqPMpfVcraJ4TnqcvsmK17wXZG30xp fptPM/9eZod3vh5pIJUrLw== X-Google-Smtp-Source: ADKCNb7N+ubcwBxV8rg+vs+zvof7HTnD3UUA7S1k+G+0pzh4sBi9QDzO3q4TRBdfJGQjfwDJHgImvA== X-Received: by 10.55.212.90 with SMTP id l87mr6545470qki.218.1504359366878; Sat, 02 Sep 2017 06:36:06 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id f6sm1845369qtb.68.2017.09.02.06.36.05 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sat, 02 Sep 2017 06:36:05 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 0BDBB69C52; Sat, 2 Sep 2017 09:36:05 -0400 (EDT) Date: Sat, 2 Sep 2017 09:36:04 -0400 From: Mark Oteiza Message-ID: <20170902133604.GA27251@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <87tw0lzn7w.fsf@drachen> User-Agent: Mutt/1.8.3 (2017-05-23) X-Spam-Score: -2.8 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) On 02/09/17 at 07:25am, Michael Heerdegen wrote: >Mark Oteiza writes: > >> >> I didn't try writing it in the style of if-let*--perhaps if-let* could >> >> be extended and all three macros would learn (EXPR). >> > >> >Yes, I think it's best if all foo-let* macros interpret the varlist in >> >the same way. >> >> Alright, I'll look at it. > >Isn't there a problem with EXPR being a symbol S, which already has a >different meaning (bind S to nil)? Though, this seems barely useful to >me. Anyway, introducing (EXPR) would thus be backward incompatible. Yeah, that is true. The following patch implements most of the previous, except it doesn't specially handle EXPR being just a symbol. All the incumbent subr-x-tests pass. This single tuple special case is troublesome IMO: (if-let* (x) "dogs" "cats") => "cats" (if-let* (x (y 2)) "dogs" "cats") => (void-function y) (if-let* (x (y 1) (z 2)) "dogs" "cats") => "cats" I'm curious if this was brought up in the old discussion when this was implemented. diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 849ac19d6a..eeacdbcfcd 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -83,10 +83,16 @@ thread-last `(internal--thread-argument nil ,@forms)) (defsubst internal--listify (elt) - "Wrap ELT in a list if it is not one." - (if (not (listp elt)) - (list elt) - elt)) + "Wrap ELT in a list if it is not one. +If ELT is of the form ((EXPR)), listify (EXPR) with a dummy symbol." + (cond + ((nlistp elt) (list elt)) + ((atom (car elt)) elt) + ((and (null (cdr elt)) + (let ((form (car elt))) + (or (listp form) (atom form)))) + (list (cl-gensym) (car elt))) + (t elt))) (defsubst internal--check-binding (binding) "Check BINDING is properly formed." @@ -122,8 +128,11 @@ if-let* Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of THEN is returned, or the last form in ELSE is returned. + Each element of VARLIST is a symbol (which is bound to nil) or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). +An element can additionally be of the form (EXPR), which is +evaluated and checked for nil. In the special case you only want to bind a single value, VARLIST can just be a plain tuple. \n(fn VARLIST THEN ELSE...)" @@ -134,18 +143,23 @@ if-let* (not (listp (car bindings)))) ;; Adjust the single binding case (setq bindings (list bindings))) - `(let* ,(internal--build-bindings bindings) - (if ,(car (internal--listify (car (last bindings)))) - ,then - ,@else))) + (if bindings + `(let* ,(setq bindings (internal--build-bindings bindings)) + (if ,(caar (last bindings)) + ,then + ,@else)) + `(let* () ,then))) (defmacro when-let* (bindings &rest body) "Bind variables according to VARLIST and conditionally eval BODY. Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of the last form in BODY is returned. + Each element of VARLIST is a symbol (which is bound to nil) or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). +An element can additionally be of the form (EXPR), which is +evaluated and checked for nil. In the special case you only want to bind a single value, VARLIST can just be a plain tuple. \n(fn VARLIST BODY...)" @@ -154,7 +168,12 @@ when-let* (defalias 'if-let 'if-let*) (defalias 'when-let 'when-let*) -(defalias 'and-let* 'when-let*) + +(defmacro and-let* (varlist &rest body) + "Bind variables according to VARLIST and conditionally eval BODY. +Like `when-let*', except if BODY is empty and all the bindings +are non-nil, then the result is t." + `(when-let* ,varlist ,@(or body '(t)))) (defsubst hash-table-empty-p (hash-table) "Check whether HASH-TABLE is empty (has 0 elements)." From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Noam Postavsky Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 02 Sep 2017 18:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: Michael Heerdegen , 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150437767119829 (code B ref 28254); Sat, 02 Sep 2017 18:42:02 +0000 Received: (at 28254) by debbugs.gnu.org; 2 Sep 2017 18:41:11 +0000 Received: from localhost ([127.0.0.1]:43859 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1doDLz-00059l-MG for submit@debbugs.gnu.org; Sat, 02 Sep 2017 14:41:11 -0400 Received: from mail-oi0-f49.google.com ([209.85.218.49]:34116) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1doDLx-00059X-Jq for 28254@debbugs.gnu.org; Sat, 02 Sep 2017 14:41:10 -0400 Received: by mail-oi0-f49.google.com with SMTP id w10so21997587oie.1 for <28254@debbugs.gnu.org>; Sat, 02 Sep 2017 11:41:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc; bh=3DQBA2W1UIkLsK5M+hClQdDPfOsjq2OU7Qfhov/JYnQ=; b=mKt9BQyKECCPdCSj0NlVDmvn6huQ07L5ivtNfwIp21UpSTFtOkVuDnkJVQbdEIw947 Yu5Kz467fBCNY5mbo/RQakb/ZZTYPhZ6Ne0oxdJU6ergXNNQUqyvnmAp+7UsQNrAmhyK vkMf/fuUselLwLDlMfKCoI2G/C8xQ7P41MNbpam6ViTXSIpDRUREJN3y6qCD/0WreFlF tFQfn1K07yqMMtkWmyp5IHUEYt91Dq3glTwAmePN0n1o5ZY/cV0jUbSI3LEhyy2eVMcw ky+tnjUJPjeup9tfYYoemIgXCgvMicglUUEpPUf8h9uaHbxhyEqP0DHf1fCoqWHSXr44 C4Aw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:sender:in-reply-to:references:from :date:message-id:subject:to:cc; bh=3DQBA2W1UIkLsK5M+hClQdDPfOsjq2OU7Qfhov/JYnQ=; b=i7Z+rsn7jxKyp9mo10PWvSNM/5kLQ/udWxrbOkhxpmIXze767fW1vTM8VRykNbdqMU x1Al2/oCxQfWtuO91oPE6tgDGXIbImy3YTP5Tog3Vc8jGa1D1e/dzxBoBFXFvM3xg3Z5 v8sX+E6tMIg3Y8aP0HKr5GrMkFwbbWq/LgE/rsZAjPMxbjr0fMxIAmfH92ZzYMP8CyQm 04nQ8GSzRV0C1LDR3HYzI18lIlD5WPMc13CRAU/VL6gfiWNdt8a/8siXdBIIMH4xJFM1 Nc489C7Yy0jN7usFan4GfSnjZlftym1oL+L4Re5J1dOoMPQaxboxMcDgJMhjdVsXBTVt oU+Q== X-Gm-Message-State: AHPjjUi9PIghBlIoVkR98uenn/Z3tX6YdiOY+4tXJSV6bSb6FQmtH/AO b41tkSy3yL1SWZLBqxz5fU/HCkPb0g== X-Google-Smtp-Source: ADKCNb7nsYy6KuDye0pFvnieBcq3zX5PuS0lHTRSbqEYsLB96I2kQMViKnRLzB76WEH7e9+Ol9EnR1wiVMiNRh3NgGs= X-Received: by 10.202.244.78 with SMTP id s75mr5345673oih.207.1504377663904; Sat, 02 Sep 2017 11:41:03 -0700 (PDT) MIME-Version: 1.0 Received: by 10.74.17.199 with HTTP; Sat, 2 Sep 2017 11:41:03 -0700 (PDT) In-Reply-To: <20170902133604.GA27251@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> From: Noam Postavsky Date: Sat, 2 Sep 2017 14:41:03 -0400 X-Google-Sender-Auth: WlxCQgLNO6nohzEyUDIQDYC8Viw Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.7 (/) On Sat, Sep 2, 2017 at 9:36 AM, Mark Oteiza wrote: > On 02/09/17 at 07:25am, Michael Heerdegen wrote: >> >> Isn't there a problem with EXPR being a symbol S, which already has a >> different meaning (bind S to nil)? Though, this seems barely useful to >> me. Anyway, introducing (EXPR) would thus be backward incompatible. What would be the point of binding S to nil? In the foo-let macros that would be equivalent to just putting nil (if non-list EXPRs are supported), no? > This single tuple special case is troublesome IMO: > > (if-let* (x) "dogs" "cats") => "cats" > (if-let* (x (y 2)) "dogs" "cats") => (void-function y) > (if-let* (x (y 1) (z 2)) "dogs" "cats") => "cats" > > I'm curious if this was brought up in the old discussion when this was > implemented. I think I'd be okay with dropping support for the S = (S nil) thing in foo-let macros, so that all of the above would give (void-variable x). Although perhaps the incompatibility with plain let would be annoying? To be honest I hardly ever make use of S = (S nil) in plain let either so it wouldn't hit me at all. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Sep 2017 17:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Noam Postavsky Cc: Mark Oteiza , 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150446091411419 (code B ref 28254); Sun, 03 Sep 2017 17:49:02 +0000 Received: (at 28254) by debbugs.gnu.org; 3 Sep 2017 17:48:34 +0000 Received: from localhost ([127.0.0.1]:46745 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1doZ0c-0002y7-6G for submit@debbugs.gnu.org; Sun, 03 Sep 2017 13:48:34 -0400 Received: from mout.web.de ([212.227.15.14]:52396) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1doZ0a-0002xv-Pv for 28254@debbugs.gnu.org; Sun, 03 Sep 2017 13:48:33 -0400 Received: from drachen.dragon ([88.66.71.141]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Mare6-1e4SEN2Rf0-00KPUt; Sun, 03 Sep 2017 19:48:17 +0200 From: Michael Heerdegen References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> Date: Sun, 03 Sep 2017 19:48:13 +0200 In-Reply-To: (Noam Postavsky's message of "Sat, 2 Sep 2017 14:41:03 -0400") Message-ID: <87vakzwu5e.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:H+EBLuyUylDK/WPyjMrhxwfBAi6qEe1ScECCzoA8vnzkdBp+Asu AMC/rm1IFnkcUxkvBchlipx3K56LwCqa1QyQyoIQBIOwQXh4dNl8WHZywt5FUQMkmGfK3Y7 1AM2aVCsPXG9gboYybaNTwDJCoMyzMWGpJjOQbW5bg/Lknd/WfkiHzY9t48ZdZWlPbq8GAF QFGejrVfkxqd6IEWh9m7Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:uxNF/jFKhTY=:aHbDUqpjGVoBgT/M5D688/ 1Rgxc5SuzI60A46fUBbnia/WPVYYSrWmZVC022qh1v3BzEHO01sfSMCPLR9R9m3FMvQ8ue+Si pV1LkrhdiH0/krBj94oZyHAhkfwo/C00b7u5YvSzR8sm4VPwCrPZxjClybUbukzthm2Dm+Afz EkIcgeI8CYcEJQrjYg/JMI9c34fHYI9JX4pWMtHwTdn0NmsdQJD2xADr6wmI2m4eKsp9B1Og8 6LXLPMDR+49UF9YgZykirkOhdMJVYKc250LB3l4ysg0kYNmSLf8BPjmNcW2guOxIABqIqmnGX G5S5m9AARqmeeRo+IzrOh+FF3Q99foe4yt2qN6BzLI5eaA0YySUv7IUbsaHp0MpiKBs4bo23P GusSkp8GjDrUMMmvAp+7XXlg6WRA05Yilk1iG2pmml80/ssgFI6zZAFeO9fVITxy4VknDmJWN 5LHyOxeGxFNsniHcOf8Mv/odtfyqH1r6inpajwonUq90k7IHY/VVyJNRqpcGADiTvthtBQSAa a2OY7JHpocvIDCsB1vANTliVCWYfJY1gF6ZV9HTcRo017VAeQEssdlQZJzSGYoymW82ai0D50 lfxshjspSWQXDylGRb1wRpWCLEEzxuI1kjQIpZbUyVRWO2RU07Lf6T0kqAf8hSsgAw7fTN/lo q8UwF+pZ/7HiIuX7rD51vrMHiUf1nKS3UPVlJ8WnZVPH0H6G9Mg/+YWsY/e3jDnPnUxmKbiDU 1q9dplBZVkys/3ApsJLi6pCTmD4TaN/gSEbpjYiK12md4UU0mxbtbMnwTF+py0DzNKE8SwEuG rpmclKqrlTRs5/GfMKadNYIQ1Ac1uVW8A/DXuwqQJx1gdrH94A= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Noam Postavsky writes: > On Sat, Sep 2, 2017 at 9:36 AM, Mark Oteiza wrote: > > On 02/09/17 at 07:25am, Michael Heerdegen wrote: > >> > >> Isn't there a problem with EXPR being a symbol S, which already has a > >> different meaning (bind S to nil)? Though, this seems barely > >> useful to > >> me. Anyway, introducing (EXPR) would thus be backward incompatible. > > What would be the point of binding S to nil? In the foo-let macros > that would be equivalent to just putting nil (if non-list EXPRs are > supported), no? Eh hmm - yes, I think so. It isn't useful. > I think I'd be okay with dropping support for the S = (S nil) thing in > foo-let macros, so that all of the above would give (void-variable x). > Although perhaps the incompatibility with plain let would be annoying? > To be honest I hardly ever make use of S = (S nil) in plain let either > so it wouldn't hit me at all. I think the main use case is to declare a local variable when you don't care about the init value. In the case of if-let, S = (S nil) is not useful, since you can't use that binding neither in the "then" clause (because it won't be executed) nor in the "else" clauses (which ignore all bindings). Even if an `if-let' form is the result of a macro expansion, the S = (S nil) case isn't of any value. So I see no reasons to not drop support for it. Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 03 Sep 2017 22:41:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.15044784094776 (code B ref 28254); Sun, 03 Sep 2017 22:41:02 +0000 Received: (at 28254) by debbugs.gnu.org; 3 Sep 2017 22:40:09 +0000 Received: from localhost ([127.0.0.1]:47049 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dodYn-0001Ex-5y for submit@debbugs.gnu.org; Sun, 03 Sep 2017 18:40:09 -0400 Received: from mail-qk0-f175.google.com ([209.85.220.175]:37175) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dodYl-0001El-9C for 28254@debbugs.gnu.org; Sun, 03 Sep 2017 18:40:07 -0400 Received: by mail-qk0-f175.google.com with SMTP id k126so16708209qkb.4 for <28254@debbugs.gnu.org>; Sun, 03 Sep 2017 15:40:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=WO+r3IAr1E9rZPTgg++oYnC6pIt9LFLhHgBHm1YScwM=; b=ZuLZZYaakl6WRzZvYh6oSL3K+zh12yGGphToXjald62IdPOGJAs5BaKdTw0t37Qcyv YrVYVdruiumadg+pwn5adhtsx4b9gGEzIJoYeAywYYDc5fr5PhRh2JQGBDDsrlVHhIgV Uol9ZykD6a6koewFQOLyHRIV1tvPSGar/pRG2Yn8LW9plgI2uBrvPfuI6dr5D3yMi4GF uxt83USpVc9us+IxKtr3bTiBMWjkxY/kQqVv2KTaTgU5te/U/s5W8AgI9FLKlVV/R9y5 8NjnUGZ329pM6TvG1PR+XDTXJd/9W7Fd7VXwfM2+jlbc/xcT9ANi3ZdATkbX2yfv/7gK i0Jg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=WO+r3IAr1E9rZPTgg++oYnC6pIt9LFLhHgBHm1YScwM=; b=GruYGOTrA+90eP8rKP1Hf7B83/MqdlywYknVWHqmLasyLuYJkpTd0IYV5Vt5BtLbvU s8OdJn50CRSxsNkOVQ59NL8dsQ2JZ4W3/4eMp2a8vmzQwZ8ArpT0q3Et/tYFT5EyqOda l5hNVC5uLxOBr6KIYtrXyDuPOU5PovK93fWV50OK59bOS9cUYju58NC4PHA41im4+yCN Axstpg7ZAxE7t+FLH+6gx+9nmotc/GSWP/8BmG1pW+W2W1w+POlFFGMfdpjCUT2yURWw OX2PqWbQ6nvGzNLjHR/W0mPTIRboBTRdPZJvd3LkxhrEYEutEkPX4kYa89QFQfgEblxl I9KQ== X-Gm-Message-State: AHPjjUh1cPHmW0zf1x3oyJknD43Yq+X1ce6rroioTSPnItX+0W/jhB5u 81qbIFfF9yc+BCBB8M1wbA== X-Google-Smtp-Source: ADKCNb72lLp5ydN7pF8wPf+cyAOj2/UQUpk4MVlFCZXtAkBy/i/8g+HhovzgXZBV+Grfd+JAcmMWvw== X-Received: by 10.55.93.67 with SMTP id r64mr11044641qkb.358.1504478401324; Sun, 03 Sep 2017 15:40:01 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id j61sm3973143qte.30.2017.09.03.15.40.00 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 03 Sep 2017 15:40:00 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id AA6C866207; Sun, 3 Sep 2017 18:39:59 -0400 (EDT) Date: Sun, 3 Sep 2017 18:39:59 -0400 From: Mark Oteiza Message-ID: <20170903223959.GA15782@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <87vakzwu5e.fsf@drachen> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: -2.8 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.8 (--) On 03/09/17 at 07:48pm, Michael Heerdegen wrote: >Noam Postavsky writes: > >> I think I'd be okay with dropping support for the S = (S nil) thing in >> foo-let macros, so that all of the above would give (void-variable x). >> Although perhaps the incompatibility with plain let would be annoying? >> To be honest I hardly ever make use of S = (S nil) in plain let either >> so it wouldn't hit me at all. > >I think the main use case is to declare a local variable when you don't >care about the init value. In the case of if-let, S = (S nil) is not >useful, since you can't use that binding neither in the "then" clause >(because it won't be executed) nor in the "else" clauses (which ignore >all bindings). > >Even if an `if-let' form is the result of a macro expansion, the S = (S >nil) case isn't of any value. So I see no reasons to not drop support >for it. If I'm understanding correctly, it is being agreed that (let ((x 1)) (and-let* (x) x)) ;; => 1 because the macro expands to (let* ((x (and t x))) (if x x)) The following patch achieves this, though it breaks some existing subr-x tests which I haven't yet looked at carefully. diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 849ac19d6a..ec1990110a 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -83,10 +83,22 @@ thread-last `(internal--thread-argument nil ,@forms)) (defsubst internal--listify (elt) - "Wrap ELT in a list if it is not one." - (if (not (listp elt)) - (list elt) - elt)) + "Wrap ELT in a list if it is not one. +If ELT is of the form ((EXPR)), listify (EXPR) with a dummy symbol." + (message "%S" elt) + (cond + ;; could this be cleaner? + ((null elt) (list elt)) + ((symbolp elt) (list elt elt)) + ((nlistp elt) (list elt)) + ((and (null (cdr elt)) + (atom (car elt))) + (list (cl-gensym) (car elt))) + ((and (null (cdr elt)) + (let ((form (car elt))) + (or (listp form) (atom form)))) + (list (cl-gensym) (car elt))) + (t elt))) (defsubst internal--check-binding (binding) "Check BINDING is properly formed." @@ -98,7 +110,10 @@ internal--check-binding (defsubst internal--build-binding-value-form (binding prev-var) "Build the conditional value form for BINDING using PREV-VAR." - `(,(car binding) (and ,prev-var ,(cadr binding)))) + (let ((var (car binding))) + (if (and (null (cdr binding)) (atom (car binding)) (not (symbolp (car binding)))) + `(,var (and ,prev-var ,var)) + `(,var (and ,prev-var ,(cadr binding)))))) (defun internal--build-binding (binding prev-var) "Check and build a single BINDING with PREV-VAR." @@ -122,8 +137,11 @@ if-let* Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of THEN is returned, or the last form in ELSE is returned. + Each element of VARLIST is a symbol (which is bound to nil) or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). +An element can additionally be of the form (EXPR), which is +evaluated and checked for nil. In the special case you only want to bind a single value, VARLIST can just be a plain tuple. \n(fn VARLIST THEN ELSE...)" @@ -134,27 +152,43 @@ if-let* (not (listp (car bindings)))) ;; Adjust the single binding case (setq bindings (list bindings))) - `(let* ,(internal--build-bindings bindings) - (if ,(car (internal--listify (car (last bindings)))) - ,then - ,@else))) + (if bindings + `(let* ,(setq bindings (internal--build-bindings bindings)) + (if ,(caar (last bindings)) + ,then + ,@else)) + `(let* () ,then))) (defmacro when-let* (bindings &rest body) "Bind variables according to VARLIST and conditionally eval BODY. Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of the last form in BODY is returned. + Each element of VARLIST is a symbol (which is bound to nil) or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). +An element can additionally be of the form (EXPR), which is +evaluated and checked for nil. In the special case you only want to bind a single value, VARLIST can just be a plain tuple. \n(fn VARLIST BODY...)" - (declare (indent 1) (debug if-let)) + (declare (indent 1) (debug if-let*)) (list 'if-let bindings (macroexp-progn body))) (defalias 'if-let 'if-let*) (defalias 'when-let 'when-let*) -(defalias 'and-let* 'when-let*) + +(defmacro and-let* (varlist &rest body) + "Bind variables according to VARLIST and conditionally eval BODY. +Like `when-let*', except if BODY is empty and all the bindings +are non-nil, then the result is non-nil." + (declare (indent 1) (debug when-let*)) + ;; `(when-let* ,varlist ,@(or body '(t))) + (if varlist + `(let* ,(setq varlist (internal--build-bindings varlist)) + (if ,(caar (last varlist)) + ,@(or body `(,(caar (last varlist)))))) + `(let* () ,@(or body '(t))))) (defsubst hash-table-empty-p (hash-table) "Check whether HASH-TABLE is empty (has 0 elements)." From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 04 Sep 2017 00:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150448613715906 (code B ref 28254); Mon, 04 Sep 2017 00:49:02 +0000 Received: (at 28254) by debbugs.gnu.org; 4 Sep 2017 00:48:57 +0000 Received: from localhost ([127.0.0.1]:47189 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dofZR-00048U-Ld for submit@debbugs.gnu.org; Sun, 03 Sep 2017 20:48:57 -0400 Received: from mail-qt0-f172.google.com ([209.85.216.172]:38624) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dofZQ-00048I-HO for 28254@debbugs.gnu.org; Sun, 03 Sep 2017 20:48:56 -0400 Received: by mail-qt0-f172.google.com with SMTP id w42so17716952qtg.5 for <28254@debbugs.gnu.org>; Sun, 03 Sep 2017 17:48:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=/qaMH0Ivin7O7nBHd+5qgEPfwHPLRrNEygRo0wBbd64=; b=IPSwbuNMlZhnJRZnCe+zqlwvDKDD1P6u01cuO3X4XO2hzsSkbLGtXsBV4lSeoKs0yS LZJIsbr/E67r19OiA1vtjZR7udZlQWGEdCl1DT2z928bZTZuBGMkO7lRBqtowIpUEuhC gFxjUBRdGRCr72TC2vvrmzVcpf7O/+SZsBf+0QGbyT4oPLwhUE1Ljw52QQ0xR9KFM42K e7bsc+Qb/Gh6x4uPdX/FuY9w7C9R5YcrHwjnEJm9e857RbDXKJ0u23wWzR2YIYmwYxLC +51zNunoKkKvxetgeu5YKFr6mkom+HWxcYdhkiQcjPLQimIoUDL+gdIc8zQkD+aP3BaL vKEw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=/qaMH0Ivin7O7nBHd+5qgEPfwHPLRrNEygRo0wBbd64=; b=fIjv52zlwe8l3UhHtsP11OnDt5UXVtUFE1CXqms0ub9mTaSpWj+eGK6ga4fXjqwcQ/ iz789H6UiVixV8FDNnCNcOsYkS59fSr89/ZetfA/EENNXlW73QRhJjwinBYJR7f2F5xD s6Tu3qE8CRANkzFX9fWBcVF3QQpCQCxXD3qdool1QjRZ2ARtfcgGQbkLySRkB9y8TZlw nfo3FdQBAD7SoFpv3qMteZXywcYnu2NUWh5JKrWecxV69Pyrz8a0ca9IRRh7zPE30QyZ G29H0jy8LNGQWR9bALf4e2ZW3nWchjvgBJ7Vnd/3guRhG592188HBeiG7sLNIW7xfVm7 ibQw== X-Gm-Message-State: AHPjjUjKeJy3lZS+UlSb393RKhGT+aI8LaoUqBZk2NB2rvvdM9OTDieY pivJeXQFcoy/6uXPeE1Seg== X-Google-Smtp-Source: ADKCNb7iA/rqyD1g3cS2yR0ADTSvYuQowit7YxtOQjRIPsx8BAmia9YMXrfFitvIs6tbHSPhK28saQ== X-Received: by 10.237.37.112 with SMTP id w45mr6724296qtc.254.1504486130564; Sun, 03 Sep 2017 17:48:50 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id 32sm4085736qth.81.2017.09.03.17.48.49 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 03 Sep 2017 17:48:49 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id D405266207; Sun, 3 Sep 2017 20:48:48 -0400 (EDT) Date: Sun, 3 Sep 2017 20:48:48 -0400 From: Mark Oteiza Message-ID: <20170904004848.GA19964@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> <20170903223959.GA15782@holos.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20170903223959.GA15782@holos.localdomain> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 03/09/17 at 06:39pm, Mark Oteiza wrote: >On 03/09/17 at 07:48pm, Michael Heerdegen wrote: >>Noam Postavsky writes: >>Even if an `if-let' form is the result of a macro expansion, the S = (S >>nil) case isn't of any value. So I see no reasons to not drop support >>for it. > >If I'm understanding correctly, it is being agreed that > > (let ((x 1)) (and-let* (x) x)) ;; => 1 > >because the macro expands to > > (let* ((x (and t x))) > (if x x)) > >The following patch achieves this, though it breaks some existing subr-x >tests which I haven't yet looked at carefully. The tests fail precisely because of this change--so I'm not bothered aside from having to adjust the test to account for it. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 04 Sep 2017 01:15:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Noam Postavsky Cc: Michael Heerdegen , 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150448764618051 (code B ref 28254); Mon, 04 Sep 2017 01:15:02 +0000 Received: (at 28254) by debbugs.gnu.org; 4 Sep 2017 01:14:06 +0000 Received: from localhost ([127.0.0.1]:47207 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dofxl-0004h4-Nk for submit@debbugs.gnu.org; Sun, 03 Sep 2017 21:14:05 -0400 Received: from mail-qt0-f180.google.com ([209.85.216.180]:33240) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dofxk-0004gU-9A for 28254@debbugs.gnu.org; Sun, 03 Sep 2017 21:14:04 -0400 Received: by mail-qt0-f180.google.com with SMTP id e2so17966139qta.0 for <28254@debbugs.gnu.org>; Sun, 03 Sep 2017 18:14:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=OPLqwN/5oKoLdIafxNo41tGcVRQjsnqSa+46bDpo96A=; b=cwW0yyY20fvXyAJaQQJhgQeqz7M3x5sWDyYsJ71rAT5LkjZf8bRdi0hqIl1UGfxh48 oYcfyd5ilKR+p6QrXC2pkyDxwz88hNYJDX/DG84Etdp9PQJWs3A8+4GMDrJpTqByfUb7 Ny48dK+7E/C/Qvhyv9KNbh2jdrWdQYtgWwydHwPyOKjADs7vEaTKbfbdlAZlSjWr9UbQ oNJtHdlsyl8LagVKY2E5c+Qv1iu4WUQJcEtJvWQNRm1HH6qNbJClW9nL1ka1Xkh5EyTX EjT3e2OBLIIkVaiB1ZwBOvPIkV/dRAWjVMCnXiN0wgseUBvgiUzuZrb8DhL0IjHvM0+F 70GQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=OPLqwN/5oKoLdIafxNo41tGcVRQjsnqSa+46bDpo96A=; b=BUHGvCkfapu3qtqu0Dm1mTKnNGkcoeAHyKyJWaEoI/NBlwbFSBva49vRzg7Ns1nvpN Tr6Rkz5pIguKKUXJYK66VU8TL8YNN7WvaTEcErafnUZhaPr5AI1fBL20q5HnirEHJRrC QOz0nGCRMtuTZ3Bn1ublchGSfkZQTbh1Is3sXDa+7yHZ7Dxfipr50cpmECjmMpQdrlA+ 41Lg8ceOvpk8W9UufPGTbqsJLASJR8AOYpwwAWd+eFb5RIxex9jxD6Yy9UNHV/PqJAlN 1nc69PmYI5nCxdxNQ+RNMRxIcFkrIuUctGTcasbMlhhA3aNSG1WgY4z3X4G5ZoI9YnPn CVcQ== X-Gm-Message-State: AHPjjUjA1/e1kTrnlzAj7Jkvk0c4AB6YMZqqArVom5fF9uDH78k9AUEj gKlxrPsmG8tZy2+iWX6n0A== X-Google-Smtp-Source: ADKCNb4sxsF3NLhNR9kgVUk5lTOmatg0ZSTV/B08xVXoEdrhFukEiZhvVXH9L/thP//MIqyOVw413g== X-Received: by 10.200.46.141 with SMTP id h13mr13322070qta.141.1504487637702; Sun, 03 Sep 2017 18:13:57 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id d58sm4250559qte.76.2017.09.03.18.13.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 03 Sep 2017 18:13:57 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 719AC66207; Sun, 3 Sep 2017 21:13:56 -0400 (EDT) Date: Sun, 3 Sep 2017 21:13:56 -0400 From: Mark Oteiza Message-ID: <20170904011356.GA21128@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 02/09/17 at 02:41pm, Noam Postavsky wrote: >On Sat, Sep 2, 2017 at 9:36 AM, Mark Oteiza wrote: >> This single tuple special case is troublesome IMO: >> >> (if-let* (x) "dogs" "cats") => "cats" >> (if-let* (x (y 2)) "dogs" "cats") => (void-function y) >> (if-let* (x (y 1) (z 2)) "dogs" "cats") => "cats" >> >> I'm curious if this was brought up in the old discussion when this was >> implemented. FWIW, this was brought up in the original thread. https://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00228.html IMO the original suggestion of having if-let and when-let be exclusively single binding, while the starred versions excluding the single binding special case would be more sane. P.S. I just realized I didn't copy the tuple part of if-let* into and-let* in the patch I just sent, and therefore missed the problem this special case causes in tests. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 04 Sep 2017 14:13:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150453433514931 (code B ref 28254); Mon, 04 Sep 2017 14:13:01 +0000 Received: (at 28254) by debbugs.gnu.org; 4 Sep 2017 14:12:15 +0000 Received: from localhost ([127.0.0.1]:48967 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dos6p-0003sl-Lf for submit@debbugs.gnu.org; Mon, 04 Sep 2017 10:12:15 -0400 Received: from mout.web.de ([212.227.15.3]:64814) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dos6m-0003sV-OG for 28254@debbugs.gnu.org; Mon, 04 Sep 2017 10:12:13 -0400 Received: from drachen.dragon ([88.66.71.141]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Lh6bn-1dAb3q00Zz-00oYMN; Mon, 04 Sep 2017 16:12:05 +0200 From: Michael Heerdegen References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> <20170903223959.GA15782@holos.localdomain> Date: Mon, 04 Sep 2017 16:12:01 +0200 In-Reply-To: <20170903223959.GA15782@holos.localdomain> (Mark Oteiza's message of "Sun, 3 Sep 2017 18:39:59 -0400") Message-ID: <87k21etuxa.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:9b0zy3xg14MizuTAsxhXDBZJsN45t1AYtWJCUBzRwTXI4YCQ4a/ vASNm5vKD9kqLdTLpaOz1+YqFVce1RFZsj9QPDLoGsKzKgXzhhzeAmiCFlegfUTDID9qX65 cJaBu2E9kysX2uGtl63QueyDVX8ceOdBInfcsC6ZdVHPnjuOQ2CdNcjvYkqUaeT4hc8C4v/ lL+uqfQi7m5O1YH8/Hv3A== X-UI-Out-Filterresults: notjunk:1;V01:K0:tv9Rpc70mLw=:F2G7J131+C9s3Qw/0OmIyn bh0rJ//z3x+d+jdZRFRnru3LtqMYnB0pJrrJ9YnxOmtYOmdZggWF/QyxXJKsr3icQdDDDs7FB sktrVl2LgTibeegNOB94g8HM6dqEVEsfxuyznp/5+kY3Ton9NiEMYct9xiu2WSSvid26HgIER i2WzKXdkWZXu+HpOj7tJ1upC1KrR+CKszyU4jD1V8zjdW2JSfWybrVwDw0cSjDCIYGNRqBdKw cWqip6m0grELcd/pCP7KADWCBQQT7/bTcTMD4XVMOdz2aP2NP1QwOLVG2Niu4l9jxxSuxDVS/ 8jp/uheZELgDnViaYx7fGw7Gcyz3iQ9Be1JjTeMIi2xgCYg+g7ta2utmrdR3zD18qfulK8Ntx 7B+DS8/g1z5K61Fs1zU8HHP6LUMQfBMi99EM+3r3Q81twYLNblLzUxVhLSHk+cQ8HyzVj8wqx U5gDb0H7OZGLzUgxbUqbyrQrAWpHybZIfErfrfkBlWD+5G3S9lquLTCvjcrVojp753+wYiL9g vuLl1g2/lNX3RyAkxM6URIPW3gNqDe7sE4EyBJ726VQ/WQ/YsZnQbI6BK4pv3lwKYidLj4jVs vWZSaoCBMKY5SF2nS/5kiSo8s5u5Lrd1ppnf87WZ3Cta7XPD2eT9J8r2dXfHSUrup0RV4t7jB LLCqDhP1PCk6DoET4lz9cJMLh2J9UI3TdJRbLcnFNKFprChNu6qLxpFZTpSKZcTsblCef9XeW vcDWqYtZ4egkkXylgUBlrc4ioz/XmV68Tv9oIVkUTZvNZJ6kgtziiszZdu8N6iM+nfH+z0pJ1 ardq9nn3W63z3szbWrmZGA7P5EDy4IDHQWLaq1jyRrUV7dXN40= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > The following patch achieves this, though it breaks some existing subr-x > tests which I haven't yet looked at carefully. I don't seem to be able to apply this patch. I try (shell-command-on-region 1476 5478 patch -d /home/micha/software/emacs/ -p1) (the region is just the patch lines) and get | patching file lisp/emacs-lisp/subr-x.el | patch: **** malformed patch at line 8: (defsubst internal--listify (elt) Any idea why I am seeing this? Thanks, Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Sep 2017 03:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150458327423165 (code B ref 28254); Tue, 05 Sep 2017 03:48:02 +0000 Received: (at 28254) by debbugs.gnu.org; 5 Sep 2017 03:47:54 +0000 Received: from localhost ([127.0.0.1]:49862 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dp4qA-00061Y-4D for submit@debbugs.gnu.org; Mon, 04 Sep 2017 23:47:54 -0400 Received: from mail-qt0-f180.google.com ([209.85.216.180]:33461) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dp4q9-00061K-1P for 28254@debbugs.gnu.org; Mon, 04 Sep 2017 23:47:53 -0400 Received: by mail-qt0-f180.google.com with SMTP id i50so8088546qtf.0 for <28254@debbugs.gnu.org>; Mon, 04 Sep 2017 20:47:52 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=T8UtDwkX0S46y5hKMLEfnXqxNp3LQyiEAbPyBJYZhKo=; b=uLKdud59q2SeVDTGh0wSAaFDT5xA4vopWdJBOlmV5085W2Tze+QlEMvX1iWGUxBbYt uw8bowrEfWtHvQEMSwdqjhmiSGY0UNKJtMFvBfJyjfJtNxTrCVmHOke7ynVor94b27iT zKQZBfx1b+swfsLernoPgU47cr25c6/PffM53AJNau3x5cEuYa0c1S6Il/5qQY1h7X+S lpa87VN0W4JdaIhBwHNCvgnrCjxw0urE2t99e3XRQWat0sj0bn9ZJtmxd0eqNwFbQtrt D1+1Q0McwuDKMwKz8Cn9nLVu/qJ9gFw+H+wK9aj4vA3A17Av/eMhjpwmAqAvliRoHOQk CJHg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=T8UtDwkX0S46y5hKMLEfnXqxNp3LQyiEAbPyBJYZhKo=; b=kg37wHI7YkTqfkz9WWsVGf0WFM7QLWxuqWzqI3/FztHTzEq2+yj5x8DrV2IhN55vJ6 ird5HasAln+jd6uXrkE1dyZg1DaiVpgprWY6+dc0n/P8nGUV+HiLKYdjPUNtcmlRJimW 7TMj/CPU5DgivrNiUlqFrCYOxFfvTU/3S6EZT7HvfB/VK7g+B0qTQJSgPfdEPN2IunRI igA16oQsbCATSx4BiuB7DRFQ72RVPLwpoxaNgWKwOUSuzQW+e4ZKfkirBdDTDc3swWV+ eIPDkx0FjfXz+8JTCtQnbmgwPVw6i2cl56bKjFHIh76eaPCEAo0w1reZ3y+kPsk9YKgV 4PLw== X-Gm-Message-State: AHPjjUiJKchynEl3HGO5J1yZyHHf3HRqaH3vxMF9h3Trqxe5KlY+XMEF 8axvSacLkYAETpaP36agBQ== X-Google-Smtp-Source: ADKCNb7zsjm0SJdcxKAPs8f3HeT9gC0hHd/K0/hMq8CS7WoWehEIq4z5dnXNPgkwj/zlp0Kg8oWJ6w== X-Received: by 10.200.46.146 with SMTP id h18mr3723859qta.137.1504583266932; Mon, 04 Sep 2017 20:47:46 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id b86sm4850259qkj.1.2017.09.04.20.47.44 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 04 Sep 2017 20:47:44 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 58FE56BF86; Mon, 4 Sep 2017 23:47:44 -0400 (EDT) Date: Mon, 4 Sep 2017 23:47:44 -0400 From: Mark Oteiza Message-ID: <20170905034744.GA11331@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> <20170903223959.GA15782@holos.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20170903223959.GA15782@holos.localdomain> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 03/09/17 at 06:39pm, Mark Oteiza wrote: >On 03/09/17 at 07:48pm, Michael Heerdegen wrote: >>Noam Postavsky writes: >> >>>I think I'd be okay with dropping support for the S = (S nil) thing in >>>foo-let macros, so that all of the above would give (void-variable x). >>>Although perhaps the incompatibility with plain let would be annoying? >>>To be honest I hardly ever make use of S = (S nil) in plain let either >>>so it wouldn't hit me at all. >> >>I think the main use case is to declare a local variable when you don't >>care about the init value. In the case of if-let, S = (S nil) is not >>useful, since you can't use that binding neither in the "then" clause >>(because it won't be executed) nor in the "else" clauses (which ignore >>all bindings). >> >>Even if an `if-let' form is the result of a macro expansion, the S = (S >>nil) case isn't of any value. So I see no reasons to not drop support >>for it. > >If I'm understanding correctly, it is being agreed that > > (let ((x 1)) (and-let* (x) x)) ;; => 1 > >because the macro expands to > > (let* ((x (and t x))) > (if x x)) > >The following patch achieves this, though it breaks some existing subr-x >tests which I haven't yet looked at carefully. Resending patch, looks like I messed it up: diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 849ac19d6a..ec1990110a 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -83,10 +83,21 @@ thread-last `(internal--thread-argument nil ,@forms)) (defsubst internal--listify (elt) - "Wrap ELT in a list if it is not one." - (if (not (listp elt)) - (list elt) - elt)) + "Wrap ELT in a list if it is not one. +If ELT is of the form ((EXPR)), listify (EXPR) with a dummy symbol." + (message "%S" elt) + (cond + ((null elt) (list elt)) + ((symbolp elt) (list elt elt)) + ((nlistp elt) (list elt)) + ((and (null (cdr elt)) + (atom (car elt))) + (list (cl-gensym) (car elt))) + ((and (null (cdr elt)) + (let ((form (car elt))) + (or (listp form) (atom form)))) + (list (cl-gensym) (car elt))) + (t elt))) (defsubst internal--check-binding (binding) "Check BINDING is properly formed." @@ -98,7 +110,10 @@ internal--check-binding (defsubst internal--build-binding-value-form (binding prev-var) "Build the conditional value form for BINDING using PREV-VAR." - `(,(car binding) (and ,prev-var ,(cadr binding)))) + (let ((var (car binding))) + (if (and (null (cdr binding)) (atom (car binding)) (not (symbolp (car binding)))) + `(,var (and ,prev-var ,var)) + `(,var (and ,prev-var ,(cadr binding)))))) (defun internal--build-binding (binding prev-var) "Check and build a single BINDING with PREV-VAR." @@ -122,8 +137,11 @@ if-let* Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of THEN is returned, or the last form in ELSE is returned. + Each element of VARLIST is a symbol (which is bound to nil) or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). +An element can additionally be of the form (EXPR), which is +evaluated and checked for nil. In the special case you only want to bind a single value, VARLIST can just be a plain tuple. \n(fn VARLIST THEN ELSE...)" @@ -134,27 +152,43 @@ if-let* (not (listp (car bindings)))) ;; Adjust the single binding case (setq bindings (list bindings))) - `(let* ,(internal--build-bindings bindings) - (if ,(car (internal--listify (car (last bindings)))) - ,then - ,@else))) + (if bindings + `(let* ,(setq bindings (internal--build-bindings bindings)) + (if ,(caar (last bindings)) + ,then + ,@else)) + `(let* () ,then))) (defmacro when-let* (bindings &rest body) "Bind variables according to VARLIST and conditionally eval BODY. Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of the last form in BODY is returned. + Each element of VARLIST is a symbol (which is bound to nil) or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). +An element can additionally be of the form (EXPR), which is +evaluated and checked for nil. In the special case you only want to bind a single value, VARLIST can just be a plain tuple. \n(fn VARLIST BODY...)" - (declare (indent 1) (debug if-let)) + (declare (indent 1) (debug if-let*)) (list 'if-let bindings (macroexp-progn body))) (defalias 'if-let 'if-let*) (defalias 'when-let 'when-let*) -(defalias 'and-let* 'when-let*) + +(defmacro and-let* (varlist &rest body) + "Bind variables according to VARLIST and conditionally eval BODY. +Like `when-let*', except if BODY is empty and all the bindings +are non-nil, then the result is non-nil." + (declare (indent 1) (debug when-let*)) + ;; `(when-let* ,varlist ,@(or body '(t))) + (if varlist + `(let* ,(setq varlist (internal--build-bindings varlist)) + (if ,(caar (last varlist)) + ,@(or body `(,(caar (last varlist)))))) + `(let* () ,@(or body '(t))))) (defsubst hash-table-empty-p (hash-table) "Check whether HASH-TABLE is empty (has 0 elements)." From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Sep 2017 03:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Noam Postavsky Cc: Michael Heerdegen , 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150458375723832 (code B ref 28254); Tue, 05 Sep 2017 03:56:01 +0000 Received: (at 28254) by debbugs.gnu.org; 5 Sep 2017 03:55:57 +0000 Received: from localhost ([127.0.0.1]:49872 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dp4xx-0006CJ-2z for submit@debbugs.gnu.org; Mon, 04 Sep 2017 23:55:57 -0400 Received: from mail-qt0-f173.google.com ([209.85.216.173]:38073) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dp4xv-0006C4-Ma for 28254@debbugs.gnu.org; Mon, 04 Sep 2017 23:55:56 -0400 Received: by mail-qt0-f173.google.com with SMTP id q8so3756478qtb.5 for <28254@debbugs.gnu.org>; Mon, 04 Sep 2017 20:55:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=fFEvg5NHsZw/CHnGDEHmvGEumspdifvC6j4qskN2W0A=; b=BnxR1+hlYhbL7I2ByyFFowLVKPCDlsqqNeO0wC+e/vqkZmELvbJDEeqt12jzYXtWNN xgvnTKC1obMBOgblK/fpCafftXzHp7uq2fI9J6Nd0pAkC3vK3PmRYI5RYfnshC08CG6B i42O4dsbir7FdxH4WI6pizUG8kAjeqFTB4I/TsiniNG7JkK2GDiDGJYMS91PxjZy/q+T Q+Ytaga96cx4vyl6rXcWz5OoUjvxHai8h3Gh0snWbOfwaKR/TOJEXLArbdPv39SpNaQG WVPdZ96qSTJ/dlPJiwwSHua2TIale9KeVUpIYZj6L/zo0I0m35f9weEDbgntSWFX7xUo idDQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=fFEvg5NHsZw/CHnGDEHmvGEumspdifvC6j4qskN2W0A=; b=XNRPFjZmVMTRHbgayDw5SmXEtkf1UdiDMT5JcMu5dkFRI5sa/MombfzVUUgIhj9mBs MPNo14gTcwWclMCFbaSwFFVAuAgrP+iHxuHHBWvu+iWkN0VMgQcHzBnJiDsh0N8oxpHT 2et1y/JPLw6ytdiQPS+3X2Jw9MzgGU1YkT3K0GPI+D2Tbiqiypjzbc5UQKoxmYkzZX5j JTe4l7X041CDgAPp33dC4m2pvzxs4U880Zsb3ApVAC2+Ti+s2PEGtPeDSVHx2F5ZuG9J sdMqCw/HJPnwYZfUnlw+Lck04be7SycVkXG/8MJJUmWFFLypYCdY/osLGMuY+Sk69gSb 5oTw== X-Gm-Message-State: AHPjjUj74X7kZMV1wYSyOX9+5kwkq3/Njdy+C8Q2qr7ReYBnrmIVN5/V Fpd8j3G1gTEsb0rnZ95RVw== X-Google-Smtp-Source: ADKCNb7G208HT7ZhJ3f6EvMmXQ9t8czIlgibAffQ6iCkM7mP35G0j4DqAKutm20OFPT9WKKt/zvfvQ== X-Received: by 10.200.39.188 with SMTP id w57mr3548456qtw.285.1504583749868; Mon, 04 Sep 2017 20:55:49 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id z187sm4721533qke.4.2017.09.04.20.55.49 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 04 Sep 2017 20:55:49 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id CBE906BF86; Mon, 4 Sep 2017 23:55:48 -0400 (EDT) Date: Mon, 4 Sep 2017 23:55:48 -0400 From: Mark Oteiza Message-ID: <20170905035548.GB11331@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20170904011356.GA21128@holos.localdomain> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 03/09/17 at 09:13pm, Mark Oteiza wrote: >On 02/09/17 at 02:41pm, Noam Postavsky wrote: >>On Sat, Sep 2, 2017 at 9:36 AM, Mark Oteiza wrote: >>>This single tuple special case is troublesome IMO: >>> >>> (if-let* (x) "dogs" "cats") => "cats" >>> (if-let* (x (y 2)) "dogs" "cats") => (void-function y) >>> (if-let* (x (y 1) (z 2)) "dogs" "cats") => "cats" >>> >>>I'm curious if this was brought up in the old discussion when this was >>>implemented. > >FWIW, this was brought up in the original thread. >https://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00228.html > >IMO the original suggestion of having if-let and when-let be exclusively >single binding, while the starred versions excluding the single binding >special case would be more sane. > >P.S. I just realized I didn't copy the tuple part of if-let* into >and-let* in the patch I just sent, and therefore missed the problem this >special case causes in tests. This is a patch implementing the above: if-let and when-let only take single tuple, while {if,when,and}-let* lose the single tuple special case. diff --git a/etc/NEWS b/etc/NEWS index 2b0c86d7af..24568d637b 100644 --- a/etc/NEWS +++ b/etc/NEWS @@ -1120,6 +1120,14 @@ be disabled by setting 'byte-compile-cond-use-jump-table' to nil. --- ** The alist 'ucs-names' is now a hash table. +--- +** Semantics of 'if-let', 'when-let', 'if-let*', and 'when-let*' have +changed. 'if-let' and 'when-let' now only accept a single tuple to +bind a single symbol. 'if-let*' and 'when-let*' no longer accept the +single tuple special case. New macro 'and-let*' is an implementation +of the Scheme SRFI-2 syntax of the same name. 'if-let*' and +'when-let*' now accept the same binding syntax as 'and-let*'. + --- ** 'C-up', 'C-down', 'C-left' and 'C-right' are now defined in term mode to send the same escape sequences that xterm does. This makes @@ -1479,10 +1487,6 @@ It avoids unnecessary consing (and garbage collection). +++ ** 'car' and 'cdr' compositions 'cXXXr' and 'cXXXXr' are now part of Elisp. ---- -** 'if-let*', 'when-let*', and 'and-let*' are new in subr-x.el. -The incumbent 'if-let' and 'when-let' are now aliases. - --- ** Low-level list functions like 'length' and 'member' now do a better job of signaling list cycles instead of looping indefinitely. diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 849ac19d6a..e59211a1dc 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -83,10 +83,15 @@ thread-last `(internal--thread-argument nil ,@forms)) (defsubst internal--listify (elt) - "Wrap ELT in a list if it is not one." - (if (not (listp elt)) - (list elt) - elt)) + "Wrap ELT in a list if it is not one. +If ELT is of the form ((EXPR)), listify (EXPR) with a dummy symbol." + (cond + ((symbolp elt) (list elt elt)) + ((and (null (cdr elt)) + (let ((form (car elt))) + (or (listp form) (atom form)))) + (list (cl-gensym) (car elt))) + (t elt))) (defsubst internal--check-binding (binding) "Check BINDING is properly formed." @@ -98,7 +103,10 @@ internal--check-binding (defsubst internal--build-binding-value-form (binding prev-var) "Build the conditional value form for BINDING using PREV-VAR." - `(,(car binding) (and ,prev-var ,(cadr binding)))) + (let ((var (car binding))) + (if (and (null (cdr binding)) (atom (car binding)) (not (symbolp (car binding)))) + `(,var (and ,prev-var ,var)) + `(,var (and ,prev-var ,(cadr binding)))))) (defun internal--build-binding (binding prev-var) "Check and build a single BINDING with PREV-VAR." @@ -117,44 +125,62 @@ internal--build-bindings binding)) bindings))) -(defmacro if-let* (bindings then &rest else) +(defmacro if-let* (varlist then &rest else) "Bind variables according to VARLIST and eval THEN or ELSE. Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of THEN is returned, or the last form in ELSE is returned. + Each element of VARLIST is a symbol (which is bound to nil) -or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). -In the special case you only want to bind a single value, -VARLIST can just be a plain tuple. -\n(fn VARLIST THEN ELSE...)" +or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value +of VALUEFORM). +An element can additionally be of the form (EXPR), which is +evaluated and checked for nil." (declare (indent 2) - (debug ([&or (&rest [&or symbolp (symbolp form)]) (symbolp form)] + (debug ((&rest [&or symbolp (symbolp form) (sexp)]) form body))) - (when (and (<= (length bindings) 2) - (not (listp (car bindings)))) - ;; Adjust the single binding case - (setq bindings (list bindings))) - `(let* ,(internal--build-bindings bindings) - (if ,(car (internal--listify (car (last bindings)))) - ,then - ,@else))) + (if varlist + `(let* ,(setq varlist (internal--build-bindings varlist)) + (if ,(caar (last varlist)) + ,then + ,@else)) + `(let* () ,@else))) -(defmacro when-let* (bindings &rest body) +(defmacro when-let* (varlist &rest body) "Bind variables according to VARLIST and conditionally eval BODY. Each binding is evaluated in turn with `let*', and evaluation stops if a binding value is nil. If all are non-nil, the value of the last form in BODY is returned. -Each element of VARLIST is a symbol (which is bound to nil) -or a list (SYMBOL VALUEFORM) (which binds SYMBOL to the value of VALUEFORM). -In the special case you only want to bind a single value, -VARLIST can just be a plain tuple. -\n(fn VARLIST BODY...)" + +VARLIST is the same as in `if-let*'." + (declare (indent 1) (debug if-let*)) + (list 'if-let* varlist (macroexp-progn body))) + +(defmacro and-let* (varlist &rest body) + "Bind variables according to VARLIST and conditionally eval BODY. +Like `when-let*', except if BODY is empty and all the bindings +are non-nil, then the result is non-nil." + (declare (indent 1) (debug when-let*)) + (let (res) + (if varlist + `(let* ,(setq varlist (internal--build-bindings varlist)) + (if ,(setq res (caar (last varlist))) + ,@(or body `(,res)))) + `(let* () ,@(or body '(t)))))) + +(defmacro if-let (spec then &rest else) + "Bind variables according to SPEC and eval THEN or ELSE. +Like `if-let*' except SPEC is of the form (SYMBOL VALUEFORM)" + (declare (indent 2) (debug ((symbolp form) form body))) + (if spec + `(let (,spec) (if ,(car spec) ,then ,@else)) + `(let () ,@else))) + +(defmacro when-let (spec &rest body) + "Bind variables according to SPEC and conditionally eval BODY. +Like `when-let*' except SPEC is of the form (SYMBOL VALUEFORM)" (declare (indent 1) (debug if-let)) - (list 'if-let bindings (macroexp-progn body))) - -(defalias 'if-let 'if-let*) -(defalias 'when-let 'when-let*) -(defalias 'and-let* 'when-let*) + (list 'if-let spec (macroexp-progn body))) (defsubst hash-table-empty-p (hash-table) "Check whether HASH-TABLE is empty (has 0 elements)." From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 05 Sep 2017 15:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150462385517589 (code B ref 28254); Tue, 05 Sep 2017 15:05:01 +0000 Received: (at 28254) by debbugs.gnu.org; 5 Sep 2017 15:04:15 +0000 Received: from localhost ([127.0.0.1]:51569 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpFOg-0004Za-RS for submit@debbugs.gnu.org; Tue, 05 Sep 2017 11:04:15 -0400 Received: from mout.web.de ([212.227.15.4]:59385) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpFOf-0004ZI-Lo for 28254@debbugs.gnu.org; Tue, 05 Sep 2017 11:04:14 -0400 Received: from drachen.dragon ([88.66.71.141]) by smtp.web.de (mrweb003 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Lylol-1dRken1HeB-0166XE; Tue, 05 Sep 2017 17:04:06 +0200 From: Michael Heerdegen References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> <20170903223959.GA15782@holos.localdomain> <20170905034744.GA11331@holos.localdomain> Date: Tue, 05 Sep 2017 17:04:02 +0200 In-Reply-To: <20170905034744.GA11331@holos.localdomain> (Mark Oteiza's message of "Mon, 4 Sep 2017 23:47:44 -0400") Message-ID: <87a829jifx.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:W3i3TWyMhdyMsXxpOJB9RXnTbNUQHE3F3f0rcj6A6hAJjna7H5n QtzMzyXoPppsKHjANiyJXY9kkhQPVEt4U1AAvZwkl0SH5R5dA3XTgMGHuHm9iYkCDkkTZeb q7Nmlw0dkSqsxjazWeEgpy2IGBVVOoZb0e2ruKg8Xb4CycMWfP05KheMkUyDkbFhSZTKV1L U2+CCR3IIdfooTPogKSKQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:JmBjMeLaM6k=:Pld+K9zOBfwI5K5oDOGh0P cdJIzMDJbPLA0EqN+xoPdMzwqj7HY2lJF+YYghOYn06KuqkhjEDHt9FjTGC2IWoeqBhdJUl9q xTShJKWv63LfLuWbRVOYc883UBYt+orxsM/u5o3rVOSgGey/KAMyeGxkRbO8/X++kjtq1L3Ks aQNr2K1j1+0cKIGrzUTOXy/DieTh1kseEWILr1bhP5aIcNhQyA5qvBfgQeELaRow2A8LNzjcX nUi/tKU4uZ5NfqZJ8ous0DvtiFAdbCAYBkRZl9votEDuyechrQQv+gGWCph4lNo/uSHLZHABR XG7/tonmtJkmyAK7tmgjHAdpYp944+FayG7J0fJ5eyqx7SyB9L5VHE3HM4t7EjBrlFH/rVNfK 26lov05UncoFieYYOEp8f1vzzceo1QxX0QbXImM8sGv7MdQUctu3x0TaeXRhtW/ZUd8C/NrtW rxaGrGH0cB80WO2Up7pBxrqvHN+QClemFFzDCQHpMujMpfKLUc2R9US0MtO9rUeyThpC69BsA 7XCwXi/hJkXfB8Hf2V2F9pK/LERf/GX9Vg6x7T3zuBm0Dq/M27R5IhkCsEm3Ob/IIKwwuleph m0X0zYAj75pY3om2db0j6Ez8f4OwLgr9jO4fZ/WYeexuAImh4nJsk4FgDHt+DTQAgYzE98cVk Rdz0LQamx93Gy8ee62tISAyZS0WyPaXkzpGQguwmT8LKZ8U0MpNd11kAIqkgtK+nV7xgoAHdw xYHg7ofxPXc84orJf2HmR2fGHcmPUqkqCv5Io7hN6V9GTauS7+P12JmUQ7qIbv8JEB1R6mrWm cva1CmcLAAtdzWG06qJrA7z8fvGOTzYsNWSU5ocpdvIkpCnRh4= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > Resending patch, looks like I messed it up: Thanks. Hmm, still getting the same error. Also git apply says "corrupt patch at line 8". Maybe I'm doing something wrong... Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 06 Sep 2017 12:14:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150469999016977 (code B ref 28254); Wed, 06 Sep 2017 12:14:01 +0000 Received: (at 28254) by debbugs.gnu.org; 6 Sep 2017 12:13:10 +0000 Received: from localhost ([127.0.0.1]:52410 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpZCg-0004Pk-7t for submit@debbugs.gnu.org; Wed, 06 Sep 2017 08:13:10 -0400 Received: from mout.web.de ([212.227.15.3]:53462) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpZCe-0004PW-D0 for 28254@debbugs.gnu.org; Wed, 06 Sep 2017 08:13:08 -0400 Received: from drachen.dragon ([88.66.71.141]) by smtp.web.de (mrweb001 [213.165.67.108]) with ESMTPSA (Nemesis) id 0MhlT9-1eAggp10M7-00MrXg; Wed, 06 Sep 2017 14:12:52 +0200 From: Michael Heerdegen References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> <20170903223959.GA15782@holos.localdomain> <20170905034744.GA11331@holos.localdomain> Date: Wed, 06 Sep 2017 14:12:48 +0200 In-Reply-To: <20170905034744.GA11331@holos.localdomain> (Mark Oteiza's message of "Mon, 4 Sep 2017 23:47:44 -0400") Message-ID: <87vakwhvpb.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:4E/6zF1xpyQSv1VQJd/x7s9YZpZRjwmUa5YTcooYktLiIb4mWOY gm0n9iUdmhjet2GgS9eg5eJSkNFU/G6SdtAPNkYsLMPpSlC1Pc3VIDHM94euvFUpWxEWdHk J8FhC6vsw8kS4rzXMYcTqf2KjsDwbdBGbh6F0Ig4Sy1NCCXVNvK0OH6okdZZOMbmZ30HKPU 5yK55Rem5r4+URlwlaobQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:BHuJIophnB4=:y0fY/55I8yafR/zofucZA8 pF1wQq+DXe3Zc8Ya0eqxbL1IbLrULxAFN9tpyjjVJLS4PAkWVr9BCXmyeeIiqKUq5FhWlznuM aWU0CmqwJYFP7tTSxVd0VeGNgouRm0xR/b77MqW/CuCwBP8P+ShCKcXy16N0GGNw1yz5ehlF7 gwN70DqEoeOyDMPBre1yGu28TGTYGn/lM7pAESZQUlNZovFhyxFUruFSqnTNkBPT5dIWO9ARl mvgaz55EyOCJuvCkIjCXAoB180k6ovDxUQ2BAiFeFGIs977xv1VAl0hg6N90M5LQYbQbR+aI2 wExDxfIry3duVggLlHNV5Asn1sTYHk83yA1RHYJi0TOehtoIwvJlHqzd9Pt+OJbnovrm1Mz0d NWwu+GWTY2BzvQXKbk+YQjaLIf0xrRaONwHmgDl3noCoiC703eOBW40eqxbAEmPcjIet2koNh gv4lkvnXo3tSk6a11kvK8Wfk8J8XkK8iPqREd0D/qSQd8vp6Ehov/cG9Z55SXrcVhDxTHTBPA 18ARjjVHe3G4PcJLGs1lP6cJqO6mhi0hegNpHPB8vq2vgvrw5D57auEz4Iza70SC4Z7m2+Pq+ Xe/7RV8L1PM4okai2GFbYDkIde3VCzUZkNwgbttcUyoUTKkv7gVgG5ccnq3QuP5EVr8OHDPFX 5/h/zIqKi5o+jSjAe2hQTcS4CKNdY6Q1/TB+4/rxLynyPXNX3a0xIuw3lV7GAgsw56z9cwSR4 okhCv13SA64osAS4ATQ8Dgxg0SDqajQ8cYiCW5Qw9Ya8WyTNqSigM53jxdNfLs5yicm4D1o59 m6qG6YZSXwljZsFb13f4gqrSLFk8418F/i2KIckc2Y+4UOCcKo= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Hi Mark, I just had a quick look. One detail: > + (cond > + ((null elt) (list elt)) > + ((symbolp elt) (list elt elt)) > + ((nlistp elt) (list elt)) > + ((and (null (cdr elt)) > + (atom (car elt))) > + (list (cl-gensym) (car elt))) > + ((and (null (cdr elt)) > + (let ((form (car elt))) > + (or (listp form) (atom form)))) > + (list (cl-gensym) (car elt))) ^^^^^^^^^ Wouldn't this mean we would have to (require 'cl-lib) (without `eval-when-compile') in subr-x? I'm not sure if that would be acceptable. Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 06 Sep 2017 13:07:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150470321021826 (code B ref 28254); Wed, 06 Sep 2017 13:07:02 +0000 Received: (at 28254) by debbugs.gnu.org; 6 Sep 2017 13:06:50 +0000 Received: from localhost ([127.0.0.1]:52465 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpa2b-0005fy-O4 for submit@debbugs.gnu.org; Wed, 06 Sep 2017 09:06:49 -0400 Received: from mail-qt0-f181.google.com ([209.85.216.181]:36962) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpa2a-0005fl-CG for 28254@debbugs.gnu.org; Wed, 06 Sep 2017 09:06:48 -0400 Received: by mail-qt0-f181.google.com with SMTP id h15so19458924qta.4 for <28254@debbugs.gnu.org>; Wed, 06 Sep 2017 06:06:48 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=+iCZniTDgTXbUrUcK5Stm7if13YKrBkpQyqYv6LoHV8=; b=SyFZ51a6cVZ4Ckmg5i41htFCrT7sxspeP9oloxFxNz+P+Nnz3UMFYltvLMEYd77Oty lxvm25d2Yp6sNVoYtRJ7K6cWqGEC/NyQHPDRt0e02jtN38OwiOD/ShJMxeUzZ9bpKTGa /PCCf+zhF3zKF6Sw1slRk8gQqX99OwkpKCZG7vlKVhMrqNzfliu7lVaqwXJqGWxDkkCv dIMdRXxXz1MalKQG9IO2OolDviHQ1rUPZ6YPpEg5z34qnRr+a29+j+zVRTSp8bUujxI/ O1JY8dltOf9TEIfuYLgzYMDd8q2m8Is8iXY9aNzqE5QX1a17ab1S693u9MTmBtvLd6wQ 4cCA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=+iCZniTDgTXbUrUcK5Stm7if13YKrBkpQyqYv6LoHV8=; b=oktxhC74fqJoDwP8FNqH+cQSOAnt995rcEYVrRQ2/+bvAkV3x8UZfbmWf9M1NXreZO +pzUZX2zcPaaHUKHxZZBYnO06txrNCRSGMsBMW9ebTdDOhXFw28iUfHMpZ/4d5PJIwgq SJGCuRZZWcPGgA22cS29lckksoeKI9+WXHWd7vBLQaV5W/pjB0vgJZVXFUczeVwjaiXF 79pnWtANe/fg5ryj2g+SBWbuMNBWaGWOeXEqAVg9PpT5SlN80LB9Z54/nIAlGHlQub8d jXSkFAV45QzTBkzlnnNARNbc7abY4Fel2l3fvLB/XlQjVkwCZtMBYn2Ax8EanBPh43au sKKw== X-Gm-Message-State: AHPjjUiA0hp+fZQ2Dq8Et2Evsx+XJQiq0/o6+m6YBn2/QTsK8rlRacky VjoWuFj7vCEIslJHOEOIHw== X-Google-Smtp-Source: ADKCNb4VimuoDI5VE94hf1HLPMumHjeD4uvbP9zo+YX5heqy3bfq74vloCF2p/RZzW+4kRb3/KEMMQ== X-Received: by 10.200.58.165 with SMTP id x34mr3270382qte.261.1504703202403; Wed, 06 Sep 2017 06:06:42 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id x124sm2248559qka.85.2017.09.06.06.06.40 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 06 Sep 2017 06:06:41 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 5CFAA68E62; Wed, 6 Sep 2017 09:06:40 -0400 (EDT) Date: Wed, 6 Sep 2017 09:06:40 -0400 From: Mark Oteiza Message-ID: <20170906130640.GA1063@holos.localdomain> References: <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> <20170903223959.GA15782@holos.localdomain> <20170905034744.GA11331@holos.localdomain> <87vakwhvpb.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <87vakwhvpb.fsf@drachen> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: -0.2 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) On 06/09/17 at 02:12pm, Michael Heerdegen wrote: >Hi Mark, > >I just had a quick look. One detail: > >> + (cond >> + ((null elt) (list elt)) >> + ((symbolp elt) (list elt elt)) >> + ((nlistp elt) (list elt)) >> + ((and (null (cdr elt)) >> + (atom (car elt))) >> + (list (cl-gensym) (car elt))) >> + ((and (null (cdr elt)) >> + (let ((form (car elt))) >> + (or (listp form) (atom form)))) >> + (list (cl-gensym) (car elt))) > ^^^^^^^^^ > >Wouldn't this mean we would have to (require 'cl-lib) (without >`eval-when-compile') in subr-x? I'm not sure if that would be >acceptable. Ah, yes. That will just have to change to (make-symbol "x") or similar. (It made debugging a lot easier) From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 06 Sep 2017 19:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.15047246954715 (code B ref 28254); Wed, 06 Sep 2017 19:05:01 +0000 Received: (at 28254) by debbugs.gnu.org; 6 Sep 2017 19:04:55 +0000 Received: from localhost ([127.0.0.1]:53367 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpfd9-0001Dz-49 for submit@debbugs.gnu.org; Wed, 06 Sep 2017 15:04:55 -0400 Received: from mout.web.de ([212.227.17.11]:52351) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dpfd6-0001Dl-RY for 28254@debbugs.gnu.org; Wed, 06 Sep 2017 15:04:53 -0400 Received: from drachen.dragon ([92.74.180.55]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MN4Oy-1dnUq34BXE-006jD9; Wed, 06 Sep 2017 21:04:36 +0200 From: Michael Heerdegen References: <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <87vakzwu5e.fsf@drachen> <20170903223959.GA15782@holos.localdomain> <20170905034744.GA11331@holos.localdomain> <87vakwhvpb.fsf@drachen> <20170906130640.GA1063@holos.localdomain> Date: Wed, 06 Sep 2017 21:04:31 +0200 In-Reply-To: <20170906130640.GA1063@holos.localdomain> (Mark Oteiza's message of "Wed, 6 Sep 2017 09:06:40 -0400") Message-ID: <87zia7r6m8.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:uyq6MslbSElQsCJPC7rZUOQofvAyg5NUw29tU5tlL4/0AnlfgLY vTcHa+5O//YqNFavmOPvWHOAPoq3HitWA+ujMXdjYR5CklIYu0oyNm9VFAjwgSrroF7Ga2b uF41xUwfLtWuicpYZx3svf26G0Kcrd0PhKlvQKX5E4RlhnjsceW0uoa9CT1sMH3hB0uY4Hk 7J3miMj9G85QqkUQ8WYNw== X-UI-Out-Filterresults: notjunk:1;V01:K0:vrZn40DRfrw=:Hl9vED0mM0u+T8OR91FSjN beZAY/EtPAyRMY2PzONvJQcMMcOs1DOcqDQp4T/kee6AS3jwaSHa4o0sJD8nzcOghrg2vvE5L uRV++5oaOTKWNa9QDq2Q3GEuELoLODijWk13+57Tg/lrVBjcgXKmrxuRePmN1kL62KGMIY6aC lu7FfqWK2ZMB0bMYJ1TfyCb2ZO1rjkynsjPU/DSZe1jna1JpE1vmaELBWkFCvMI2n9NoS+dtz SAKe7nA7IYeb7cB8ikjoJ6r7EMdIJINMxW73IW40DJqT86vpbt69ur+0DIvdANp7dJrSnyOan utwcjpbuApW7UbDiyJVu3W9M3+VnNAA+AqWIh9+1fKa+v2geG+wO8ueViU5bdjUjc47yF5wnZ +ph9CCU2zM+IR3ufAqG1qdW3WlvtGpu3xNoC66bLSoY35AN4DYAEWetq4MWosmmIaT0D6x8CF eRoLcMzNuIN4eulbPDrFNgMtxkVfn6ol5eqMND20u8unl7k/+MXn65SDXpRJ7lW29oFKWw5o1 EC4X4pVxc69FqdAVead4iNdYcvpPD22wuRcETZZHcTbpG+wwH/SJwG+FTQFcM8F8N3XpbzTQI mJajNrgZ1QftFuZl4Qi7AapJNZkbh7W7rB/GJfYGFpCPoceU07GVyj1s/Mz3FBgDcEy5/VxY/ 5VpXcwYe6p+TLWQ3TBrw7N6L7oqTS+nJJI2XZLV+Ha+BHTjmUbyB89bMwPQ1RZZGL9X3vqd8+ waarBOC4OKy2pHUhT9J6OKJmGBHzGIkA5eZUyz+bPxoIB34n8TiE+Z0l0Glc9Kj2xbY9X0M/2 +VRWMIYtA9gEh+VsBPlhN7iNpUuf1r8GG3REA4EiRODSAXVHBs= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > (It made debugging a lot easier) Ah, I see - just like the `message' call some lines above that ;-) Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 09 Sep 2017 00:35:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Noam Postavsky Cc: Michael Heerdegen , 28254@debbugs.gnu.org Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.15049172478399 (code B ref 28254); Sat, 09 Sep 2017 00:35:01 +0000 Received: (at 28254) by debbugs.gnu.org; 9 Sep 2017 00:34:07 +0000 Received: from localhost ([127.0.0.1]:56589 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dqTip-0002BP-18 for submit@debbugs.gnu.org; Fri, 08 Sep 2017 20:34:07 -0400 Received: from mail-qk0-f172.google.com ([209.85.220.172]:36183) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dqTil-0002Av-IJ for 28254@debbugs.gnu.org; Fri, 08 Sep 2017 20:34:04 -0400 Received: by mail-qk0-f172.google.com with SMTP id z143so9907071qkb.3 for <28254@debbugs.gnu.org>; Fri, 08 Sep 2017 17:34:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=TkpLytzI9RexWUJKFldu5VfhecsxGI+nC2YGAzegHUI=; b=ctoOcEmQorAFpEvEQbGPrWisV8SNdwh9gJiuqlvfYh/6JW1Il1HVr1myOIUt9wKRu5 uwfRrt9vl1TLsNbSU1BXVhrzFsABg3olNQzvKERdeqmkA3lc9NIYOtvaxeGcWiCXBmaj RI700vq7BPfCw0b9/ovVziBGGImmnBDNIFu242Q0qq+oRgHf/3KuXHJU2jGGNV9bJaTW /vRwf5GpvhPNWzMf0OygZPJYO3U1TApU79RLkRTluc9K3W3cuiTEnYuyjlnSG4USy6KC gUKOqdqnvE9pd+JGvp/cwr7JZ4SZvgN9kiHoQxgl0P1jYTIWGetSiKuj/UEuMXEmia0p e/rA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=TkpLytzI9RexWUJKFldu5VfhecsxGI+nC2YGAzegHUI=; b=TEuxQo3Z5/CWZ2rYdzwtKT3NayWPPw+0C+LXRR6R7TXcX5Ws4oqamanpaPZ9ntiBIg olwaWBAdOc6DF7VPHnlTXUiVZ2n30PuMCBplEZRBSPLno1sLqCLTE7F1YGHG13wRMs6G DbWlh3UjKSxlp/lblRnI5tEyd4LlipDGA1mPmqR753vk8kRhESXSFv7BBayoHEEN64ho 4r6MS6iZf4Fb+dveWWDmHfDSxjj5l4RYtpE6kEG57AKMt+PriBWAsdlA1L8Q4SYVT7be ElCOoWPE+p0JaH4Top+/OBKLZEQRdxMaiv4Lfy/K3UTcKMSRD7A36p3U4mZh2R4iR+jl sy1w== X-Gm-Message-State: AHPjjUhEySvkmCMa9aN97UHCgghS/xvhuy3IFAEnCm7HuoS785YSSpvH hxVumuGyyR4GrXLZ2bEQuw== X-Google-Smtp-Source: AOwi7QBFiFvbkb8FS26nfRmTX8cQ3fbiC32+Mr3krRxQXsFj0zbmJ9xlEnNR6/eOeBxNzNog90N0qw== X-Received: by 10.55.149.70 with SMTP id x67mr6003919qkd.149.1504917237630; Fri, 08 Sep 2017 17:33:57 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id l11sm2148803qke.19.2017.09.08.17.33.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 08 Sep 2017 17:33:56 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 8EED768E62; Fri, 8 Sep 2017 20:33:55 -0400 (EDT) Date: Fri, 8 Sep 2017 20:33:55 -0400 From: Mark Oteiza Message-ID: <20170909003355.GA3363@holos.localdomain> References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <20170905035548.GB11331@holos.localdomain> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) On 04/09/17 at 11:55pm, Mark Oteiza wrote: >On 03/09/17 at 09:13pm, Mark Oteiza wrote: >>On 02/09/17 at 02:41pm, Noam Postavsky wrote: >>>On Sat, Sep 2, 2017 at 9:36 AM, Mark Oteiza wrote: >>>>This single tuple special case is troublesome IMO: >>>> >>>>(if-let* (x) "dogs" "cats") => "cats" >>>>(if-let* (x (y 2)) "dogs" "cats") => (void-function y) >>>>(if-let* (x (y 1) (z 2)) "dogs" "cats") => "cats" >>>> >>>>I'm curious if this was brought up in the old discussion when this was >>>>implemented. >> >>FWIW, this was brought up in the original thread. >>https://lists.gnu.org/archive/html/emacs-devel/2014-08/msg00228.html >> >>IMO the original suggestion of having if-let and when-let be exclusively >>single binding, while the starred versions excluding the single binding >>special case would be more sane. >> >>P.S. I just realized I didn't copy the tuple part of if-let* into >>and-let* in the patch I just sent, and therefore missed the problem this >>special case causes in tests. > >This is a patch implementing the above: if-let and when-let only take >single tuple, while {if,when,and}-let* lose the single tuple special >case. Any comments? From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Sep 2017 12:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150521842425884 (code B ref 28254); Tue, 12 Sep 2017 12:14:02 +0000 Received: (at 28254) by debbugs.gnu.org; 12 Sep 2017 12:13:44 +0000 Received: from localhost ([127.0.0.1]:34870 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drk4W-0006jO-IS for submit@debbugs.gnu.org; Tue, 12 Sep 2017 08:13:44 -0400 Received: from mout.web.de ([212.227.15.14]:50985) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drk4V-0006jB-29 for 28254@debbugs.gnu.org; Tue, 12 Sep 2017 08:13:43 -0400 Received: from drachen.dragon ([194.166.167.125]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0M0Qxx-1dakRu2ynF-00uXsL; Tue, 12 Sep 2017 14:13:27 +0200 From: Michael Heerdegen References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> Date: Tue, 12 Sep 2017 14:13:26 +0200 In-Reply-To: <20170905035548.GB11331@holos.localdomain> (Mark Oteiza's message of "Mon, 4 Sep 2017 23:55:48 -0400") Message-ID: <87lglkcdy1.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:19jVH3D8w9HpFkoswy1vKtjJ07RI0yP0107GDLqYbZTwkWhNanH VVDjl4y1A72L2ZTlwwbtwYoebLi8GQHgEbRwre1kOrxZl3JVf3I7EkN5OjxEySUc1/kS2Cz mawELhdbOynl/TCNgR7X1fC9J07vkZ2v+AWWdfH/tVOzRIAKTwWdxEFh2VIPnIDtk84qZGh Gifeu+KN26jMy/LRL8tQw== X-UI-Out-Filterresults: notjunk:1;V01:K0:jjUEsP9EGfc=:KX/9suvJmT58cdSWc1Kqyq EGQxQNBBmBWQb00WIjd0YvV82d8kHhRHaEV0EEgyS/A+um4A+msFlo3yvXnY37aZOZ4M8PpB3 0PszPL7cOs0Jnpc2qspM4G+JoOQFB4d9kzCF3XV+U5s9soIwcsUP2zHJIo3s+Au6zxAkvU4/4 IP1T5zcNsv+U1S0gQ3/BdkE71/hq3cHlX7lwb1z/0sBJ8hdA1YbeXt61JFQSeOjlVL3WSKueE abZmIYJNJEQp70TulLofR84Fbcp5B8sOXTrPbZUtkwvzbvn38CdAKkpo+TfN2shMY0Fuw9FyX jhtMWF3hOb5bv5UAwWz7jAac/9t6bt8MzDdz871kClfometIUNBKe9ifP5F6PNs1TldseRl8n l3VFju6f5fVGEG40gvtVt9i0Se4cIyuQjOaPXSYxGAFG/FqmV+cfwf7abw4O7LhoMiL6qlX+C 82XV6b/ad567dzzZ2K2VXVskLNP4IFFaVBQgVjrViuUyHhEHmk+OCm+V8S7kG/GQsZMKhgPN3 WK2njc0xnXD+W2+7tmk+piENLgKo/6cE21/S0tK383RTaFkTB5ufxYjdo7Lz6VIubUWwh6wCR sBq7TlFbOFi6nc4X/GlHhKdzed0OQJTxLgwKUq0cYx/z0vXz61WGwgDhHAL2iGfK5Qo+XVbIj FwDKrmHZ+JQrFWy7C+mvMcd0UxIftn9DrtC99DlMvIs64vAgxJ3jwjf8WI5i8u/TE3/DTPgRl DcAuU3O3nhpqNjorh9wtjKOsqDToeTPhXtTEjpsh6ALVpFOtsLy1Dced6oidvCU3irI0xhqct mTLb4SutbmV27Z7lA9JC2+mbQl0TtXcV2Vqc8UYgPLv4S9LcPQ= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > This is a patch implementing the above: if-let and when-let only take > single tuple, while {if,when,and}-let* lose the single tuple special > case. I wonder if we should mark if-let and when-let obsolete instead. Because it is only a special case of the if-let* and when-let* forms (with only one binding), so it is absolutely redundant. Also, I find the new syntax breaking with the binding-list syntax of let confusing. Finally, it would ease the transition for programmers: the modified if-let and when-let break existing code, and it's not obviously for programmers what's suddenly wrong. Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Sep 2017 12:41:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150522002028457 (code B ref 28254); Tue, 12 Sep 2017 12:41:01 +0000 Received: (at 28254) by debbugs.gnu.org; 12 Sep 2017 12:40:20 +0000 Received: from localhost ([127.0.0.1]:34893 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drkUG-0007Ou-57 for submit@debbugs.gnu.org; Tue, 12 Sep 2017 08:40:20 -0400 Received: from mout.web.de ([212.227.15.3]:57164) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drkUD-0007Oc-Ir for 28254@debbugs.gnu.org; Tue, 12 Sep 2017 08:40:18 -0400 Received: from drachen.dragon ([194.166.167.125]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0Md4ZG-1e8jP02iyQ-00ICa0; Tue, 12 Sep 2017 14:40:00 +0200 From: Michael Heerdegen References: <87a82kdb4e.fsf@holos> <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> Date: Tue, 12 Sep 2017 14:39:59 +0200 In-Reply-To: <20170909003355.GA3363@holos.localdomain> (Mark Oteiza's message of "Fri, 8 Sep 2017 20:33:55 -0400") Message-ID: <87efrcccps.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:jxF2mJ9rz9TzXPI48QWjJd25PTIy+WHD5p9FIDpcckD9A/NKhQL rTRr88XXfDMh7hFvjJY950lywc2mgmLc30x69UBeGvgEZ/fVNoB9LggtqoD2qzsz87fFx8N evT4Uk+SsdEYefr3m+slfVuzzxUEfvitqkU5vYFWXLeA7uHIxoRBJX8eetzrQLITGS1YQhI xMxBPe+quQ+oi000AY9UA== X-UI-Out-Filterresults: notjunk:1;V01:K0:Q2OmgA+NxMI=:HOI1FePBgTemWRX6hm50c2 AHfNR7rZgTk7p01QJ7UHRm6q6XQpbNrSBlAV/YqoYSnu9irc9uJ4DByCtH3/ppEVfYxkZRi3U efErH3fV9vlQE0Dku4z3lCid3yngWUQbJYIyg8svK1/jKSwNYprxVMmP31zhqachObe6feABw fE29QOV66QMqpZhLBYbUkY7GYkanusQA82Cy2iXBs6VgR2yW3aP3SkSk6P7k8knkfLZaLAKqG vvUYgsu7sYaFEKOCsVsWgRzqyLn5O/zzXFQt1Pl/hjuhLciBHyrviP2ZTsfkdKdfu1bZzivmH ihZ7zrUsv68CKxTmEuXD1RmB+V340osv43JgtFxKsOYJYiKhuYl3fPKR1DYZttQ4unkiN59yn dL+Qtc4ESs4QuUCEG0mmujpzRCWFLJMUuid/D4mFC9cr0DThnANMANZjrU+hFT38SpJwehNVr te2iZpIMATdPZGQ41nA2Y4wPeOK3vUh44YG26pjNsje/4cAjdx+eyL3YcCvaB7jjy66VTi8H3 +mnS+DCWlK7sKp6Xhng3tHMuM7/2dfBXeXoBHq/Vs3aGTEC//3MgnvjqXE0sMyEEkz8Edtyd+ fMJCinE9rijrMSDSDqPOckVtbr3jOB2IpFX9nVyzA2lZhFpNUhLfIDaJ8MS29yzgoi/ffq7DR uH0ij0iQ8eL7HmiBtiidHR695ipEz06bQO90OE5apV+0msaXdSmsNtMKoKcZRtszqlIP0OjUZ k0+R3WHOkp0ijn9VzWL7kmI3Sq7Dz9BOKUTE8teA3mPyyOHI5WVQqdKnrKxAI1TILVHGA/yVS NhIs6DBpo2QjRE1GAAqsslDjOpWkUi0nm9755Ac2wdsLq1ugck= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > Any comments? Some notes on the documentation of `if-let*' after your patch: | "Bind variables according to VARLIST and eval THEN or ELSE. | Each binding is evaluated in turn with `let*', Maybe comparing with `let*' is confusing after the change, because not all bindings must look like (SYMBOL EXPRESSION) any more. I think when we just remove the two words "with `let*'", the documentation is still fine. | and evaluation stops if a binding value is nil. If all are non-nil, | the value of THEN is returned, or the last form in ELSE is returned. Not really related to your change, but: Maybe we should additionally say that THEN can refer to the bindings made in the VARLIST, but ELSE to none, not even to those that resulted in non-nil values before "failing". | Each element of VARLIST is a symbol (which is bound to nil) [...] Did we agree that we drop this useless case? Thanks, Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Sep 2017 13:10:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150522179831539 (code B ref 28254); Tue, 12 Sep 2017 13:10:02 +0000 Received: (at 28254) by debbugs.gnu.org; 12 Sep 2017 13:09:58 +0000 Received: from localhost ([127.0.0.1]:34930 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drkww-0008Cd-4T for submit@debbugs.gnu.org; Tue, 12 Sep 2017 09:09:58 -0400 Received: from mail-qk0-f173.google.com ([209.85.220.173]:35736) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drkwt-0008CN-1C for 28254@debbugs.gnu.org; Tue, 12 Sep 2017 09:09:55 -0400 Received: by mail-qk0-f173.google.com with SMTP id r141so24837494qke.2 for <28254@debbugs.gnu.org>; Tue, 12 Sep 2017 06:09:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=P0QD8Xea8guICfkf/v+X6WXLq0+yg3+g0Da3yzr4Y4k=; b=lXiHX9GM0EaSAb9N5Ta3dCjbID9hoUboCEWh3sBrsyF9sjd3wdejz2LpNh0luApUOl SF0MFjIpdsQ77GfSOWfkf+tBzkxk62JEELpPF0EDTB6uBI+2Md2ZeENYwN00+cgIwBS/ 5+lmItzcgfqbOcKUhnzft/nzfj+o/jKCf+1hOqbmoi6ZX2Wp00rFYxOR//Khc2JyniKP nMQDQ0Bp6lTkC0Fx1rZ9C5TV1/TcTpapVmmsH+Ok+PhmH/jmo3LCx/euqn7On2m7kiCz 71fY27wcI0pXNt9fXhuo+V+BZ3V+QHoWmXGqz5dVi0NEQSscV+fYwhK3dn3sNZFYByDR QKYA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=P0QD8Xea8guICfkf/v+X6WXLq0+yg3+g0Da3yzr4Y4k=; b=f4EeXNWNqmuJqSWGT+Xm7L8GdYbfoRRWKUI03RTibu12Nj+SLPAUOWgCayXLuTqB69 +olQl36TjK4YeswC2Z8wKjzsfHxBLuMvr+qHnPHKGGVvnCEc8X4LM+jRAzA0uyL3zYHV /EJIb4vRGTRu1C6gULxYSO7YdSr4KX2gH4f8k43R7m3LuIJmskWv9hLOYOjhDGaz9OyI LmuJ5em0yu3kyZUo2gJdHZ9vZjpP4weYgDJHb+P2wLACDWaCDFn+2KvqWRtm5OtifJtt 3Ql2sVlbnzFMe8d9NqRBdORL04N2xgUqCbU18J83r6ZXgmJcyGNWFL+C1tbXFgMlMCDD pRow== X-Gm-Message-State: AHPjjUg9R6nOXlZoKIST2qTKe5NuZtyT3d/+F/bdPQuudhcC+oGd5C8U VhJdX9sVO1dTFUg/di/x1g== X-Google-Smtp-Source: AOwi7QDrNgm5ZifIwl8V+WGjOPlhpLGCduqDvlTVA0yyCiNk6e2qp5J4ipODmaPtKH5eABneWXLs/w== X-Received: by 10.55.45.199 with SMTP id t190mr4190066qkh.230.1505221789137; Tue, 12 Sep 2017 06:09:49 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id l89sm8095324qkh.69.2017.09.12.06.09.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Sep 2017 06:09:48 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 173B868221; Tue, 12 Sep 2017 09:09:47 -0400 (EDT) Date: Tue, 12 Sep 2017 09:09:47 -0400 From: Mark Oteiza Message-ID: <20170912130947.GA23119@holos.localdomain> References: <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87efrcccps.fsf@drachen> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 12/09/17 at 02:39pm, Michael Heerdegen wrote: > Mark Oteiza writes: > > > Any comments? > > Some notes on the documentation of `if-let*' after your patch: > > | "Bind variables according to VARLIST and eval THEN or ELSE. > | Each binding is evaluated in turn with `let*', > > Maybe comparing with `let*' is confusing after the change, because not > all bindings must look like (SYMBOL EXPRESSION) any more. I think when > we just remove the two words "with `let*'", the documentation is still > fine. I agree, thanks. > | and evaluation stops if a binding value is nil. If all are non-nil, > | the value of THEN is returned, or the last form in ELSE is returned. > > Not really related to your change, but: Maybe we should additionally say > that THEN can refer to the bindings made in the VARLIST, but ELSE to > none, not even to those that resulted in non-nil values before > "failing". That's not true though--you can refer to the bindings in either branch: (if-let* ((x 2) (y nil)) x (list x y)) => (let* ((x (and t 2)) (y (and x nil))) (if y x (list x y))) > | Each element of VARLIST is a symbol (which is bound to nil) [...] > > Did we agree that we drop this useless case? Ah yes, this is no longer the case in this patch. Good catch, thank you. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Sep 2017 14:31:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.15052266077685 (code B ref 28254); Tue, 12 Sep 2017 14:31:02 +0000 Received: (at 28254) by debbugs.gnu.org; 12 Sep 2017 14:30:07 +0000 Received: from localhost ([127.0.0.1]:35952 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drmCV-0001zt-KS for submit@debbugs.gnu.org; Tue, 12 Sep 2017 10:30:07 -0400 Received: from mail-qt0-f179.google.com ([209.85.216.179]:33424) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drmCR-0001y7-CX for 28254@debbugs.gnu.org; Tue, 12 Sep 2017 10:30:05 -0400 Received: by mail-qt0-f179.google.com with SMTP id i50so26007691qtf.0 for <28254@debbugs.gnu.org>; Tue, 12 Sep 2017 07:30:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=2n8/8Cm7mR6lwBynlCU7i7qRAbPVGGZk2VB72H7Lrdw=; b=ipM0sjW9CLZhwRHOv+F4luI8PzSJS2vEjORA2xjxhaz5yqkEGxr0k0ckfPoWHxELCa wJEZ4xliUNCCG6hcs5cvS7vdAf18q/fivZmTIQve+9BRdS/b5a6mT7NOQ4Wn2oTgJC8b FCvvBiE2vbUZrB+yyEbQxTsCm3dSH3xEVaBhcwc6HdV22yo+2j7SnMgvKCHnU0tvjEkS fOwpO97TmtodT3yPrZH7GBNw5zhV8GQPwFa/8XC+RiiKFRc6GzNhP72F8F8cCBAHO7iG B6lkOrYHTfVX7kuk0kgQXFiqDGSb9CN+IExX+aMHM5T4tPCAAdAuuzsxFRk/bAoOvRNJ AnTA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=2n8/8Cm7mR6lwBynlCU7i7qRAbPVGGZk2VB72H7Lrdw=; b=f3NAw2LFjBWHwML10Avtc+4EHN8Anrp9RfDA4WY0eVsA/3W+gazkjpcnlGGTmQZS6P iRrw+RLeAtGhqwdeV7u8AFsKcjZTF1U+uEjHOFRQuwnjcDczfPHqnsPOtnpyd9ttkaoU yrFf227K6fq1M5hp/kqZjpFJVBnJOrwuLx0rMRo6hTp1STy97OgxI5ASa8ZoNUKnwnrL Kl/oAZkheLt1g0LXR9vlVSAMbhPi0D+OP1OAxmZuA2xHa4HoeYzsJ65hl3fCMbQc7B/m 3sIXMVOaFZBZZAFq0CYlGnHyIB/DJ263QP7KyEfNMjA9aiOS898a4RdriLS15l+vxGju tEqA== X-Gm-Message-State: AHPjjUiE1K/KjPY5FFVM3VS4nSS5kXMDMIUs/u2cYzkJ6iLjpaDk4Wrl TG65yQHlUghPnJGO+dkArg== X-Google-Smtp-Source: AOwi7QARVpdFSQWVU5YXfOtfGT4JlVfUO0pgCC2It7Y2HoNQiay4crGsXXC9lNHg2ctS1HwB9daKxQ== X-Received: by 10.200.49.36 with SMTP id g33mr20518825qtb.221.1505226597573; Tue, 12 Sep 2017 07:29:57 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id f4sm8053607qtg.35.2017.09.12.07.29.56 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Sep 2017 07:29:56 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id C0CCA68221; Tue, 12 Sep 2017 10:29:55 -0400 (EDT) Date: Tue, 12 Sep 2017 10:29:55 -0400 From: Mark Oteiza Message-ID: <20170912142955.GA31269@holos.localdomain> References: <87inh36sap.fsf@users.sourceforge.net> <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <87lglkcdy1.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87lglkcdy1.fsf@drachen> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: -0.2 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.2 (/) On 12/09/17 at 02:13pm, Michael Heerdegen wrote: > Mark Oteiza writes: > > > This is a patch implementing the above: if-let and when-let only take > > single tuple, while {if,when,and}-let* lose the single tuple special > > case. > > I wonder if we should mark if-let and when-let obsolete instead. > Because it is only a special case of the if-let* and when-let* forms > (with only one binding), so it is absolutely redundant. Also, I find > the new syntax breaking with the binding-list syntax of let confusing. > Finally, it would ease the transition for programmers: the modified > if-let and when-let break existing code, and it's not obviously for > programmers what's suddenly wrong. Sounds good to me. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Sep 2017 18:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150524187031529 (code B ref 28254); Tue, 12 Sep 2017 18:45:02 +0000 Received: (at 28254) by debbugs.gnu.org; 12 Sep 2017 18:44:30 +0000 Received: from localhost ([127.0.0.1]:36308 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drqAg-0008CT-E6 for submit@debbugs.gnu.org; Tue, 12 Sep 2017 14:44:30 -0400 Received: from mout.web.de ([212.227.17.11]:59417) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drqAf-0008CD-6B for 28254@debbugs.gnu.org; Tue, 12 Sep 2017 14:44:29 -0400 Received: from drachen.dragon ([194.166.167.125]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MgO8g-1e6mFO40pS-00Nkwu; Tue, 12 Sep 2017 20:44:13 +0200 From: Michael Heerdegen References: <20170902021043.GA7509@holos.localdomain> <878thx7qcc.fsf@users.sourceforge.net> <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> Date: Tue, 12 Sep 2017 20:44:11 +0200 In-Reply-To: <20170912130947.GA23119@holos.localdomain> (Mark Oteiza's message of "Tue, 12 Sep 2017 09:09:47 -0400") Message-ID: <87k213oiys.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:5EOQFgQX4RgmHDgO96euozaAVBOO7UDCi7GSNqyguuNRcuXyZW7 PtA0r+B6oivqq/IZ2vA3UdbBxI+jxxiT0PcB3g7VJk1SGHE45/Llw8bWlbN7f8CUnQLRvU1 1jKJU5u8JcJxLvjNP7P8IEeexRhmzQHO3bochMQJ6nUoDS2r5eu6pXkO0sIYkXYs9D/bRGJ qXmHIiv46unOvsVQq79qA== X-UI-Out-Filterresults: notjunk:1;V01:K0:v6c2mnXij2s=:VD90ynlZWimLewYAFRjaHV bL8ov2CC/wLo0Vz43f/mm8veW4iNLiQmg/3hzurTpofoiPl/q4oR4cwlZ8My3TNTElitSeeo7 zxuvRRcBUzlQ9GBYY29b1qyDtd4+kmOtzelTH0HjAtA0kcRuBIlxLIxOBRKwTe2ulDrwY9l5U l3DUUuHoZ64JsEXIdYlnQSqlslGw5V2lYnx5xm/Yi2EylkkdOxZM2L4Kvhpdin1LIZ/r1IHTV qqlU8qMYsxp74ry/DYu8CLrdDie3p4GYgWGMDdJXiF8VQ1Rh5Z+04XrYFdnytlH5USoQ18PbS CH3i5siWb1kDI/nxWQ+bZkkIxN5IB76B9AcjG3R14VsdChJ2wn+pwbfGeORXRo3IL7qIeDS9G jZqqzQcqzYfqIaFL1iIUboPqyIjwdGXjE9vmTIL3nM+XgBLnJbRa8WnE+004i2fZpx8Ak5IPm KZz0xh8FZ3Ib3+nU93zX96nZq9z285z9q7VTr6nR+BiOPlOwhdUYcPjh1OlsatXFD8kRaUeOv 4InGvcJzRqHoRB9CObUc3JYnZUE9Rel/ZGpSwFz/XqRMtMFgDFdrYETXHLfNqzcJoVEtb7E6C iGw+uz7S7Onk/NQvPa32KAlLznIcQ6UYfH+LBnB92cEtYsIus4kcYnblymsFt7jyLHO6kxBox 1tPBQ8wgFnJgAavmM/ZTU07cSbeIvIvZcTFGP3lxSDJ18OBGSsz7C3W8nxaupBhtxNSv7aTPr BHwl1lGHdYYxQFM1pW+326nZepkd2ljUmN+4a+19YM1STfMUVCTtNLg4HKARPiSx+5WaXM+y5 Sbz2yZYSiggcrOWO1WYEUsHneDUqzXSRfhvdheskD8hOsWuLo0= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > > Not really related to your change, but: Maybe we should additionally > > say that THEN can refer to the bindings made in the VARLIST, but > > ELSE to none, not even to those that resulted in non-nil values > > before "failing". > > That's not true though--you can refer to the bindings in either branch: Hmm, that feels strange. FWIW, all the scheme implementations I looked at implemented it in a way that binding variables stops after the first nil. OTOH I would expect that all bindings are only available from the THIS branch (this is my personal opinion). In our case, we have something third: always all bindings are visible in the ELSEs, e.g. (let ((z 1)) (if-let* ((nil) (z 100)) (doesnt-matter) z)) ==> nil That doesn't feel right. I have two more questions: In `internal--listify': (defsubst internal--listify (elt) "Wrap ELT in a list if it is not one. If ELT is of the form ((EXPR)), listify (EXPR) with a dummy symbol." (cond ((symbolp elt) (list elt elt)) ((and (null (cdr elt)) (let ((form (car elt))) (or (listp form) (atom form)))) (list (make-symbol "s") (car elt))) (t elt))) isn't (or (listp form) (atom form)) always true? Secondly, in `internal--build-binding-value-form': (defsubst internal--build-binding-value-form (binding prev-var) "Build the conditional value form for BINDING using PREV-VAR." (let ((var (car binding))) (if (and (null (cdr binding)) (atom (car binding)) (not (symbolp (car binding)))) `(,var (and ,prev-var ,var)) `(,var (and ,prev-var ,(cadr binding)))))) how can it happen that (car binding) is an atom but not symbolp? And if (car binding) == var is not a symbol, how does the returned binding make sense? Thanks, Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 12 Sep 2017 20:22:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.15052477047913 (code B ref 28254); Tue, 12 Sep 2017 20:22:02 +0000 Received: (at 28254) by debbugs.gnu.org; 12 Sep 2017 20:21:44 +0000 Received: from localhost ([127.0.0.1]:36385 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drrgm-00023Y-CE for submit@debbugs.gnu.org; Tue, 12 Sep 2017 16:21:44 -0400 Received: from mail-qk0-f170.google.com ([209.85.220.170]:37100) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1drrgj-00023G-TY for 28254@debbugs.gnu.org; Tue, 12 Sep 2017 16:21:42 -0400 Received: by mail-qk0-f170.google.com with SMTP id b82so27659980qkc.4 for <28254@debbugs.gnu.org>; Tue, 12 Sep 2017 13:21:41 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=B5OkUiN+jh09ocIVjOoGmqefctKyw1E1zcr3M4/ev8w=; b=KpfVjRIAM2mIghIRKat+r6dd92KNHHuHNdPfRFHpM9O9Auyykq7uCljYlcM5WIr0MN IktPkbJn6yT2rPVdaCsbJQQE8hv5fdRyku6juPdVbYljHDsX9Jqh8MWWdRt/skVXvveF DNQTO4puaKdY90Xe0t2Qd8BFfh/oYK3kXGksUhHjwCouoZnBmzIRz7oVlmX/nmgxWnTJ l85RxrLyaQcpwyBLbcY32HM3V7O5qTwxOLnIMVEtpKz4gZB9SkSgWKhpLlVfrsH3ETJg RahP3vhpKfMaZsJ1TXXRejo7hIjTtk48pk/99Rqi/8JxBnE2B1XJL9dGXUDJCplTdqMB muGQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=B5OkUiN+jh09ocIVjOoGmqefctKyw1E1zcr3M4/ev8w=; b=G9v3Fr/JtD9HKdOLgDtZJlBhW+pbUscWIgDsMqBCTqcJGqQOBmuK6tLxBW3gitMPeo HUgroZaXwhfHkOhysDHB99MPXj4XLegFs4hzwX/5gdz+XdYUmMgp+doiw9a2xJkZyMrA 7AMSFUEp3x6Oj1c2A47jCU7wj1QrVywzC7J8sagJV6EvSJkOHKK1/TeFWVZSi74RQk8m Nd4hChoAFWAFOjHogTFtcBdYEKncuy5IGLkYXKU+BFLfFv/tD8xEtf9iKslqboQ7bPSn vs3TCqQZa2AszokFc43KB+8Cfv4DBi/9jONZ3CQbw21srvWN02Qa1TjIcpua/eApMqLD bF3Q== X-Gm-Message-State: AHPjjUhSDszMsPaLBRkrVqvWq6gMJkLa8DkYKacXfW+3HO+/M1hgBSGE q19/AmGszmEtXy4baZjUufn3 X-Google-Smtp-Source: AOwi7QDNSHTqq3v1D0yGO8f8qXVjR7q4snwiBotWJtc9fRYLgP8xB3gnO7f+BVhZM6mKyZx3QT2W1Q== X-Received: by 10.233.244.5 with SMTP id y5mr21090529qkl.162.1505247696189; Tue, 12 Sep 2017 13:21:36 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id g132sm8016762qke.11.2017.09.12.13.21.35 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Tue, 12 Sep 2017 13:21:35 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id A2F2668221; Tue, 12 Sep 2017 16:21:34 -0400 (EDT) Date: Tue, 12 Sep 2017 16:21:34 -0400 From: Mark Oteiza Message-ID: <20170912202134.GA14004@holos.localdomain> References: <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87k213oiys.fsf@drachen> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 12/09/17 at 08:44pm, Michael Heerdegen wrote: > Mark Oteiza writes: > > > > Not really related to your change, but: Maybe we should additionally > > > say that THEN can refer to the bindings made in the VARLIST, but > > > ELSE to none, not even to those that resulted in non-nil values > > > before "failing". > > > > That's not true though--you can refer to the bindings in either branch: > > Hmm, that feels strange. FWIW, all the scheme implementations I looked > at implemented it in a way that binding variables stops after the first > nil. OTOH I would expect that all bindings are only available from the > THIS branch (this is my personal opinion). In our case, we have > something third: always all bindings are visible in the ELSEs, e.g. > > (let ((z 1)) > (if-let* ((nil) (z 100)) > (doesnt-matter) > z)) > > ==> nil > > That doesn't feel right. Yeah, it's a product of how this is written as building a list of shortcircuiting bindings instead of recursively or otherwise--not sure if there's more to it than that. I can't say I fully understood the Guile implementation when I read it last. Worth thinking about. > In `internal--listify': > isn't (or (listp form) (atom form)) always true? Yes, that could instead be (or form (null form)). It's meant to catch things like this: (should (equal nil (and-let* ((nil) (x 1))))) > Secondly, in `internal--build-binding-value-form': > How can it happen that (car binding) is an atom but not symbolp? And if > (car binding) == var is not a symbol, how does the returned binding make > sense? It's an expression, like a number. (should (equal 1 (and-let* ((2) (x 1))))) From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Sep 2017 10:18:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150529783027691 (code B ref 28254); Wed, 13 Sep 2017 10:18:01 +0000 Received: (at 28254) by debbugs.gnu.org; 13 Sep 2017 10:17:10 +0000 Received: from localhost ([127.0.0.1]:37169 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ds4jE-0007CU-KN for submit@debbugs.gnu.org; Wed, 13 Sep 2017 06:17:10 -0400 Received: from mout.web.de ([212.227.17.12]:49593) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ds4jD-0007C8-7N for 28254@debbugs.gnu.org; Wed, 13 Sep 2017 06:17:07 -0400 Received: from drachen.dragon ([193.83.60.48]) by smtp.web.de (mrweb102 [213.165.67.124]) with ESMTPSA (Nemesis) id 0LeLWz-1d4Ulb1MlB-00q7L5; Wed, 13 Sep 2017 12:16:50 +0200 From: Michael Heerdegen References: <20170902041424.GA21189@holos.localdomain> <87tw0lzn7w.fsf@drachen> <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> <20170912202134.GA14004@holos.localdomain> Date: Wed, 13 Sep 2017 12:16:48 +0200 In-Reply-To: <20170912202134.GA14004@holos.localdomain> (Mark Oteiza's message of "Tue, 12 Sep 2017 16:21:34 -0400") Message-ID: <8760cm299r.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:KOZ5VWiIXehx4jqCCTu0TWHE4JwoHRW1a2h7eXm3Tm0NgRUVnAt BmmW7QRKZDZJmdmo8QmYK5+n3lgFJuV8jof1xhkmbfjYCL8Hv8DCTClTmHj+VituIM+ZyST hJFJ32u5OVTWXbnYuCDbTxh8BOcms74EXnTQkI5kYdoiy/rRo3PE4CIO6wBUEoKqb5qJJ2D 5SPburrskCn+YuRVxzCKQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:iNFoilA9Mjg=:hH1qXMJ0lF/2GD69pAa8T3 VsVIhMj1gDn5o3CDyAvbAdPNIljr1gY2Hso0F4tpqkMe7NpPJ9dnl03XOwObWLiRUbseHW8nF V0QOFN+rikCfKgvSnfllU2hRi205YFHSfYNCht3JFGFFBrir/PTk1OMrVNRxZdq04fdIk1PDr 1ITjnVKP0/KMAxGdTeAM4sOZt+sTHVFsXNKiC1RV1boKLlCdnH00wIAzYSoUjZGiuEAdbbY3f dqAsk94sC6AQvwqGu1jBOcwAfmdhMXajDa9hYZ0B+u0xn4SlBkbZeKJlUe5hyMNhYi9B1O7RG N2iW6dtPbkpJdzsh/8LhYFDpK7fI6aHqZgASJ/JwSFeGXdYQ6GG8bpsGrgROlSjH0wIm38nJ3 OcsWV+/TxsO+iuKJQMgk1yCPZ0aEplhimFt7sBp5LUJQv5bdiX8C131DsSvSYAcn+2whdbRIz pVZtBsrCdNdzLPZsj4Vjt34oeRF1+Q1Xi0kGbp50Z1yMXvWLTuzpY97scfL2R13llbRWTHqEv plX+W7IaM7yICU/ysSJq3iTaYlxq8t2blEmkruOEFlO8vB2EOrfR9ft0NMYhx9uNrHNZTaXkw ul0JkiL65+kV7BSkKoKURJbVlPGLLSg+S+3757IXb8zasJ3q4cqo09FE2hqSKduPyBZ/f+aA0 GXaqAqvcWDlqNtfmZ5OAwu9W+jIxAGNYowuybLt+n8wALuOyHBABfX1zCEzLGRrXhlYaRXjyK re0HnhWpThA8wdOdZJJ1o2NSkJMIoVyH21HCpa8ws7Tg7Zrb0faR0GjDcxA7OE4hXkKDuMIAm T8J3ba23PFj7Nr2QPDMBDhx9ji0fFz5gJ/TXotvheJCgfidJSk= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > > In `internal--listify': > > isn't (or (listp form) (atom form)) always true? > > Yes, that could instead be (or form (null form)). It's meant to catch > things like this: > > (should (equal nil (and-let* ((nil) (x 1))))) Why can't we just replace it with the equivalent `t' (and simplify the code accordingly)? > > Secondly, in `internal--build-binding-value-form': > > How can it happen that (car binding) is an atom but not symbolp? And if > > (car binding) == var is not a symbol, how does the returned binding make > > sense? > > It's an expression, like a number. > > (should (equal 1 (and-let* ((2) (x 1))))) AFAICT, this doesn't run the code I mention. If I trace `internal--build-binding-value-form' and try this, I get 1 -> (internal--build-binding-value-form (#:s nil) t) 1 <- internal--build-binding-value-form: (#:s (and t nil)) ====================================================================== 1 -> (internal--build-binding-value-form (x 1) #:s) 1 <- internal--build-binding-value-form: (x (and #:s 1)) In both cases, (car binding) evals to a symbol. Thanks, Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Sep 2017 11:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.150530333810783 (code B ref 28254); Wed, 13 Sep 2017 11:49:02 +0000 Received: (at 28254) by debbugs.gnu.org; 13 Sep 2017 11:48:58 +0000 Received: from localhost ([127.0.0.1]:37252 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ds6A6-0002nr-Hu for submit@debbugs.gnu.org; Wed, 13 Sep 2017 07:48:58 -0400 Received: from mail-qk0-f178.google.com ([209.85.220.178]:35563) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ds6A4-0002na-LH for 28254@debbugs.gnu.org; Wed, 13 Sep 2017 07:48:57 -0400 Received: by mail-qk0-f178.google.com with SMTP id r141so30978852qke.2 for <28254@debbugs.gnu.org>; Wed, 13 Sep 2017 04:48:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:content-transfer-encoding:in-reply-to :user-agent; bh=FXp0CQ+b2TtSFNcY/yD2N/g52UgAL7WSfdu+oV2o+d8=; b=KZKs2yO2bTS67atHI3YXz1xGJZDdD/E+fjB1wdWEuU5kDSDjDff4zKGF+E6g9+5ed1 ttSQeEK+A0FGjFzAylx+LX/QqvzdeNg2MlQFedOmnMUH9I1eeeOdF+Fo6CgWq7u2VBw7 v81wNclg8HI5Fs62Vh5LcOYLaSRn6KsKoPuQJubIbFuK5futk+2Mxghc2XFnp8lUph8B QZqbSMwS8NXUcOND4VGaY0EU03ejTIiBP0hdXcwtIUrrfsvEdMjji0GAdFwPavY5AEnu a5aAFtnAmN3UFDYJy++aovI7K6pAH8MfWUQStYEZufvmb5HxdLtWQJ+HXBcORt2D3fUL N1pQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:content-transfer-encoding :in-reply-to:user-agent; bh=FXp0CQ+b2TtSFNcY/yD2N/g52UgAL7WSfdu+oV2o+d8=; b=rheBoZYTOeGqBL4bi4qUCpfC4UNZwiy5o8DUYlVm3MN39tdQPvEZwUdb6jI7v4pRVP uhZYk40GoWRo7cEx5kkAv+4WGrHEAzvyOJ3RfR2CRUTKtS2y0rJ+3kiYZumRNIhgizsI HU4ptlbj6tNTDMvBmhC0KActW+nzzDU4YxT/gZctLtXH5xHfBfgdG/Muyrv7pkbbCS/k lKj8Lu7tIiO9xsdkuUEHltslyTDtOeEeDRVQHJ982sMWVRwZhzmkd79Hc4de2bm+n5Rc vowQKg3w7g0iGEB3wWolpZPZMcTqIO0IGIHED4ScBdnpjal/JmV8q0pkAneU4eSJQHQV af9A== X-Gm-Message-State: AHPjjUgUmjOZT14+l6Ea5yznBpOSvwpvui1H8xbX9wYlHHYRbVimBT9l Eg+pX+o7MoKrnrKWhmyo/w== X-Google-Smtp-Source: AOwi7QAM41BjpRBPJt1g+x6xtWz9Vq2rsaQBEpxDTTDB9Ed5bOT0BoZCztV0Q2YqwCQ2TmoYXXmnig== X-Received: by 10.55.79.79 with SMTP id d76mr25893405qkb.173.1505303329341; Wed, 13 Sep 2017 04:48:49 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id o17sm7820674qkl.14.2017.09.13.04.48.47 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 13 Sep 2017 04:48:48 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 6648169FA0; Wed, 13 Sep 2017 07:48:46 -0400 (EDT) Date: Wed, 13 Sep 2017 07:48:46 -0400 From: Mark Oteiza Message-ID: <20170913114846.GA25686@holos.localdomain> References: <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> <20170912202134.GA14004@holos.localdomain> <8760cm299r.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <8760cm299r.fsf@drachen> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 13/09/17 at 12:16pm, Michael Heerdegen wrote: > Mark Oteiza writes: > > > > In `internal--listify': > > > isn't (or (listp form) (atom form)) always true? > > > > Yes, that could instead be (or form (null form)). It's meant to catch > > things like this: > > > > (should (equal nil (and-let* ((nil) (x 1))))) > > Why can't we just replace it with the equivalent `t' (and simplify the > code accordingly)? Oh goodness… thanks. > > > Secondly, in `internal--build-binding-value-form': > > > How can it happen that (car binding) is an atom but not symbolp? And if > > > (car binding) == var is not a symbol, how does the returned binding make > > > sense? > > > > It's an expression, like a number. > > > > (should (equal 1 (and-let* ((2) (x 1))))) > > AFAICT, this doesn't run the code I mention. If I trace > `internal--build-binding-value-form' and try this, I get > > 1 -> (internal--build-binding-value-form (#:s nil) t) > 1 <- internal--build-binding-value-form: (#:s (and t nil)) > ====================================================================== > 1 -> (internal--build-binding-value-form (x 1) #:s) > 1 <- internal--build-binding-value-form: (x (and #:s 1)) > > In both cases, (car binding) evals to a symbol. I guess the following is fine then--thanks for finding these. diff --git a/lisp/emacs-lisp/subr-x.el b/lisp/emacs-lisp/subr-x.el index 3ea01065c8..ba0ab6cb4c 100644 --- a/lisp/emacs-lisp/subr-x.el +++ b/lisp/emacs-lisp/subr-x.el @@ -87,9 +87,7 @@ internal--listify If ELT is of the form ((EXPR)), listify (EXPR) with a dummy symbol." (cond ((symbolp elt) (list elt elt)) - ((and (null (cdr elt)) - (let ((form (car elt))) - (or (listp form) (atom form)))) + ((null (cdr elt)) (list (make-symbol "s") (car elt))) (t elt))) @@ -104,9 +102,7 @@ internal--check-binding (defsubst internal--build-binding-value-form (binding prev-var) "Build the conditional value form for BINDING using PREV-VAR." (let ((var (car binding))) - (if (and (null (cdr binding)) (atom (car binding)) (not (symbolp (car binding)))) - `(,var (and ,prev-var ,var)) - `(,var (and ,prev-var ,(cadr binding)))))) + `(,var (and ,prev-var ,(cadr binding))))) (defun internal--build-binding (binding prev-var) "Check and build a single BINDING with PREV-VAR." From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Sep 2017 16:48:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-submit@debbugs.gnu.org id=B28254.15053212347149 (code B ref 28254); Wed, 13 Sep 2017 16:48:02 +0000 Received: (at 28254) by debbugs.gnu.org; 13 Sep 2017 16:47:14 +0000 Received: from localhost ([127.0.0.1]:38579 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsAok-0001rE-0X for submit@debbugs.gnu.org; Wed, 13 Sep 2017 12:47:14 -0400 Received: from mout.web.de ([212.227.15.3]:56016) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsAoi-0001r1-Dq for 28254@debbugs.gnu.org; Wed, 13 Sep 2017 12:47:12 -0400 Received: from drachen.dragon ([193.83.60.48]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0M89fV-1dVzAP0Lth-00vdyC; Wed, 13 Sep 2017 18:46:56 +0200 From: Michael Heerdegen References: <20170902133604.GA27251@holos.localdomain> <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> <20170912202134.GA14004@holos.localdomain> <8760cm299r.fsf@drachen> <20170913114846.GA25686@holos.localdomain> Date: Wed, 13 Sep 2017 18:46:54 +0200 In-Reply-To: <20170913114846.GA25686@holos.localdomain> (Mark Oteiza's message of "Wed, 13 Sep 2017 07:48:46 -0400") Message-ID: <87tw06sg01.fsf@drachen> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:Cw8Gx4nE7saXZBXgY9DXXWP5Ib6+WyHDFdxiwRYIFmGqITYmhYY YbKz8CCB1bxQ3fIPTWnw91tHjjuIdsVpTtWJGlR2M9YjlYnevgU10m1Q8iy49z4CRs43Bxi /VlSTVIhtldT95nhg/rIaadLxpWQL1nBzRqsvtwHhGOrfc2IDH6oLHTHtwkl7Non2JrLOD3 aGEwTTYxVkzbiJyz3jz1Q== X-UI-Out-Filterresults: notjunk:1;V01:K0:JuNamnABtAw=:UMNyoE55m2ED6VGkavUMoz paP9lV3DBxGSvLJL5iznSv1pp6yFDTU+K+vm9sKKNat2KGD4xyOqqWbAXBXAuB2uuGCBAGTzB fQ48yNwQ5syzHPXm3CA4rGpL7F9QNHdm+0J2OyVHhvlqW23TrwJarAXHLP/GhefQ7rAWhfPac y1TaGDUX4U2IcfSquZ+D131X6DqjSW1DWsFyme1tOgxxeq47JyGgY02i3lC6LqjJjZRZZK7f3 /Y1/K5XgjKB8tTwKITBoe8CoWYwmdDid9Sw+skyBVkRlz7h7Zg2PdKIBwiDO7n4x5M56YeoD1 Vve1dB+GLR/6+WC2lt8UUcXuwBBKlQDo1Uw9u20J80QR6qyDTAQ1SEsu8VjKIjcdxP0mK4+Jr 3o5wuauytYxg44OywtdZoHIUtpPCfXTtS3RDdodGw2iVzfUeCN7r/CsLavpcG9CLZht4PukVt PutunSI3aygpSZ+/9FINESqhLADbQq6E2wm/r+nmqtX6ZeB3cT/W0wX6CYaYgNmdrzAji4XJ1 fef4uXrDxoj5RQQQonOtvQ4UPMXAtDYzxAv6cGuiPRYDgZ9DovgfmyYhnzjUrZChyGRn6SXlF rA2ERrznl/Dvzj7K2MtxS7pUMAaKvilOfptW9zfAeoOXu67CnEpv5EjLqYA27Qe5zhH3f9s6w 4soouLORByQvPbk47JtX9K+vYy4o/oPFyINTMzDh1V5/Jl8AZmhORWQurRG9k8WIOfdcg6RGH bLuVpAJb6y+MtwCFK8lzkAfqfEyfR4lbLZLiD8IZP+oWkB5Kf//kJcLCNgYv7DgpzGopDxjRQ vIRPxVN6cenrF6uTiQwfZg2sebkUruPynkIwmchJCiUuQTkhjU= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > I guess the following is fine then--thanks for finding these. Yes, that's what I meant. If you are sure it's ok, please install, and thanks. Michael. From unknown Sat Jun 21 03:10:16 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: Mark Oteiza Subject: bug#28254: closed (Re: bug#28254: 26.0.50; SRFI-2 and-let*) Message-ID: References: <20170913164917.GA12381@holos.localdomain> <87a82kdb4e.fsf@holos> X-Gnu-PR-Message: they-closed 28254 X-Gnu-PR-Package: emacs Reply-To: 28254@debbugs.gnu.org Date: Wed, 13 Sep 2017 16:50:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1505321402-7387-1" This is a multi-part message in MIME format... ------------=_1505321402-7387-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #28254: 26.0.50; SRFI-2 and-let* which was filed against the emacs package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 28254@debbugs.gnu.org. --=20 28254: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D28254 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1505321402-7387-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 28254-done) by debbugs.gnu.org; 13 Sep 2017 16:49:26 +0000 Received: from localhost ([127.0.0.1]:38585 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsAqs-0001uI-Eh for submit@debbugs.gnu.org; Wed, 13 Sep 2017 12:49:26 -0400 Received: from mail-qt0-f180.google.com ([209.85.216.180]:46687) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsAqq-0001u5-Mn for 28254-done@debbugs.gnu.org; Wed, 13 Sep 2017 12:49:25 -0400 Received: by mail-qt0-f180.google.com with SMTP id s18so1963712qta.3 for <28254-done@debbugs.gnu.org>; Wed, 13 Sep 2017 09:49:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=mQ9K570ksThZvX1bluhoa2fBXlmHKVzL+3/hAVf6+7A=; b=VcjkTIsyBqVxF1zyEfyzXCa32/iwzJA31OnfwjEeX6mWwu+f6dyD185xL62O6VpEN5 t2/2+lVVczbcBSgzTwf+dWRRAx6WUTJQYWnwSWUiukan8plL1ZI9AwCngIACxnJpxDhy uombkQQFtZxZ7zlHCorq7u3znPOVwToLSlLR2+onL9KBHziuEOGSLNbD1mxZE/MrzIM+ fSob+QJTeP70ojFZp/sNz6GaxJBkgfC3CncbeCjvwmwD77JZLzfM1gE3wnqbxRbQrE7b C/zMWwy0nnJ0UxfyDhdq3avx6RIkTDw3U5IOxXZPXengUerawdAzYuGxRuU3fJ992gGB cu1A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=mQ9K570ksThZvX1bluhoa2fBXlmHKVzL+3/hAVf6+7A=; b=Mx157iStVNzr9lp7F//k31VVZQUn/0bo7MFS0LYVp0gZA9+XJeN5DiF4KRXKMBFjZj Szfph255TO+kj9Io95A53AxGZGwDePXKIgAgEhx3oKIqw9zPL3/ionA0PfBj/3zGtZ9L fVJyX7lst27rTlWegnljEcHcbNKnK6641TBZGiGLQ5308VBfXORxff8XEWABHbfaWxmd AAB556J/+mBHhvosgDNo9eses84LeDJNGVD40ShCQxmk1/z8aIgWNAVSdg54jSupfGIC YNAO5SRy2mXn9PHUTZIX2PL0/nRAtlh4X4p9xVtFsJS6xKhoHR8r6v7IpZn7/h1JHcz6 Ib5w== X-Gm-Message-State: AHPjjUgPEAzwmvLzWPu2//gyudy0GG3FuksvMgPUvm4INVoflfm+mRsM vT6Tjbi/THMZ9nExCXM1alRG X-Google-Smtp-Source: AOwi7QAf9ZhJSlEU7Sbc4S4hIezM8tKEr8OSQiuu+P5bjCQaXpzmoO0Ppd+/L9MnrwNj5yNNkD0CJw== X-Received: by 10.237.37.182 with SMTP id x51mr28032710qtc.9.1505321358670; Wed, 13 Sep 2017 09:49:18 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id m34sm10009077qtc.26.2017.09.13.09.49.17 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 13 Sep 2017 09:49:17 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 5999269FA0; Wed, 13 Sep 2017 12:49:17 -0400 (EDT) Date: Wed, 13 Sep 2017 12:49:17 -0400 From: Mark Oteiza To: Michael Heerdegen Subject: Re: bug#28254: 26.0.50; SRFI-2 and-let* Message-ID: <20170913164917.GA12381@holos.localdomain> References: <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> <20170912202134.GA14004@holos.localdomain> <8760cm299r.fsf@drachen> <20170913114846.GA25686@holos.localdomain> <87tw06sg01.fsf@drachen> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87tw06sg01.fsf@drachen> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: -0.0 (/) X-Debbugs-Envelope-To: 28254-done Cc: 28254-done@debbugs.gnu.org, Noam Postavsky X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.0 (/) On 13/09/17 at 06:46pm, Michael Heerdegen wrote: > Mark Oteiza writes: > > > I guess the following is fine then--thanks for finding these. > > Yes, that's what I meant. > > If you are sure it's ok, please install, and thanks. Ok, great. All tests passed, so I installed it. Closing! ------------=_1505321402-7387-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 27 Aug 2017 20:11:49 +0000 Received: from localhost ([127.0.0.1]:58326 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dm3uP-0002E6-EF for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:42139) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dm3uM-0002Dt-Oe for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:47 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dm3uG-0008FR-Hf for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:41 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=BAYES_20,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:42882) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1dm3uG-0008F5-Et for submit@debbugs.gnu.org; Sun, 27 Aug 2017 16:11:40 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33005) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dm3uE-0004Xn-6u for bug-gnu-emacs@gnu.org; Sun, 27 Aug 2017 16:11:40 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dm3u9-00085O-UT for bug-gnu-emacs@gnu.org; Sun, 27 Aug 2017 16:11:38 -0400 Received: from mail-qt0-x231.google.com ([2607:f8b0:400d:c0d::231]:38370) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dm3u9-00082u-M0 for bug-gnu-emacs@gnu.org; Sun, 27 Aug 2017 16:11:33 -0400 Received: by mail-qt0-x231.google.com with SMTP id q53so17589938qtq.5 for ; Sun, 27 Aug 2017 13:11:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=SlQ7QbIDMQq0ZOg++ivrJ41neSd8P8aHSCwo83XvHSM=; b=k3cQjqel0sjziZ8aVq3y0KirtNdDKSwMOAKdEabubixQHQl9CvgyPJ3NnOt8itXhgP B4vlO5IzPA5/9Mn1N6Y5QgA2LksBhzhPN04gaOLiHB0bcQOIb2Pbg2fNMJrcYtWSCUV1 Cti6FHhrvzC2nofE60fvGYuPhg+7mjI//Wc8GaU/exUkELreQ3fa78HF3Ko0nSEuxrSP etUOc7gsfrsrucd9mEkHb0LX2YGSbORvOcEB/S/2lxlwWBt6Tqcz/nq47MBIy0i8SqCh pIL7A/dEHVsBnoQkzQYAwGYD3yoUmqX5Nl6jnf7xJ85O6VTXXDn7TohQn36JHfGnP04Z q74w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=SlQ7QbIDMQq0ZOg++ivrJ41neSd8P8aHSCwo83XvHSM=; b=hUG4ejtAAWJGsz6NXvovlljkpJU4+QtsKoHtjU9STm5e2hFeoj6oYeImV04jR+757X AVZdZmDHmUMCqb4+FO1NYQ2hU9WVh5kVuoC33+fYJv61ejQGZr3sNaWb4VuaEPkJgGJJ gpzjxBV4s/JV0hXTd1yreAV7E+L8dY+Goq14bCoo/52qY+d17sSzWw0kKStE0tSK5Lhh BK2fqMy4bGpn0PkJS8J6r9Ciq3YS460ZfWeYKtqL6zzxLbqCNqwbWO5HyZn9C/Dy0PHj 0ZCqofTLtD/FhvnPS1eMN3GYfqBHwzEezM3upJPMXCHNBBSV/b2glSC7OvxORLsidFje tBXA== X-Gm-Message-State: AHYfb5jhZcd9M7dj4fukpxhdrgX9PkQEKGVn+w7o8XAEodyJum+FFU5V BJIHhAiUGbL0b9LsrbykDA== X-Received: by 10.237.33.129 with SMTP id l1mr6497653qtc.279.1503864691155; Sun, 27 Aug 2017 13:11:31 -0700 (PDT) Received: from holos.localdomain (pool-173-64-88-95.bltmmd.fios.verizon.net. [173.64.88.95]) by smtp.gmail.com with ESMTPSA id o13sm7683818qtg.47.2017.08.27.13.11.29 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Sun, 27 Aug 2017 13:11:30 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 32BB66B4DB; Sun, 27 Aug 2017 16:11:29 -0400 (EDT) From: Mark Oteiza To: bug-gnu-emacs@gnu.org Subject: 26.0.50; SRFI-2 and-let* Date: Sun, 27 Aug 2017 16:11:29 -0400 Message-ID: <87a82kdb4e.fsf@holos> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.3 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.3 (----) Hi, A while ago I aliased and-let* to when-let* in subr-x in be10c00d. Some time later I implemented it and promptly forgot about it. While this could be cleaned up and dropped into subr-x, it could just as well be in its own file--its behavior overlaps with when-let* but each has things the other lacks. https://www.gnu.org/software/guile/manual/html_node/SRFI_002d2.html https://srfi.schemers.org/srfi-2/srfi-2.html (defmacro and-let* (varlist &rest body) "Bind variables according to VARLIST and conditionally eval BODY. Like `when-let*' except if BODY is empty and all the bindings are non-nil, then the result is t. Elements of VARLIST can additionally be of the form (EXPR), which is evaluated and checked for nil." (declare (indent 1) (debug ([&or (&rest &or symbolp atom (symbolp &optional form) (form)) (symbolp form)] body))) (let (res (prev-var t) (i 0)) (dolist (binding varlist) (push (cond ((symbolp binding) (prog1 `(,binding (and ,prev-var ,binding)) (setq prev-var binding))) ((atom binding) binding) ((and (listp binding) (null (cdr binding)) (let ((form (car binding))) (or (listp form) (atom form)))) (let ((new (cl-gensym))) (prog1 `(,new (and ,prev-var ,(car binding))) (setq prev-var new)))) (t (prog1 `(,(car binding) (and ,prev-var ,(cadr binding))) (setq prev-var (car binding))))) res)) `(let* ,(nreverse res) ,(if (null body) prev-var `(when ,prev-var ,@body))))) (ert-deftest srfi-2-test-empty-varlist () (should (equal 1 (and-let* () 1))) (should (equal 2 (and-let* () 1 2))) (should (equal t (and-let* ())))) (ert-deftest srfi-2-test-group-1 () (should (equal nil (let ((x nil)) (and-let* (x))))) (should (equal 1 (let ((x 1)) (and-let* (x))))) (should (equal nil (and-let* ((x nil))))) (should (equal 1 (and-let* ((x 1))))) (should-error (and-let* (nil (x 1))) :type 'setting-constant) (should (equal nil (and-let* ((nil) (x 1))))) (should-error (and-let* (2 (x 1))) :type 'wrong-type-argument) (should (equal 1 (and-let* ((2) (x 1))))) (should (equal 2 (and-let* ((x 1) (2))))) (should (equal nil (let ((x nil)) (and-let* (x) x)))) (should (equal "" (let ((x "")) (and-let* (x) x)))) (should (equal "" (let ((x "")) (and-let* (x))))) (should (equal 2 (let ((x 1)) (and-let* (x) (+ x 1))))) (should (equal nil (let ((x nil)) (and-let* (x) (+ x 1))))) (should (equal 2 (let ((x 1)) (and-let* (((> x 0))) (+ x 1))))) (should (equal t (let ((x 1)) (and-let* (((> x 0))))))) (should (equal nil (let ((x 0)) (and-let* (((> x 0))) (+ x 1))))) (should (equal 3 (let ((x 1)) (and-let* (((> x 0)) (x (+ x 1))) (+ x 1)))))) (ert-deftest srfi-2-test-rebind () (should (equal 4 (let ((x 1)) (and-let* (((> x 0)) (x (+ x 1)) (x (+ x 1))) (+ x 1)))))) (ert-deftest srfi-2-test-group-2 () (should (equal 2 (let ((x 1)) (and-let* (x ((> x 0))) (+ x 1))))) (should (equal 2 (let ((x 1)) (and-let* (((progn x)) ((> x 0))) (+ x 1))))) (should (equal nil (let ((x 0)) (and-let* (x ((> x 0))) (+ x 1))))) (should (equal nil (let ((x nil)) (and-let* (x ((> x 0))) (+ x 1))))) (should (equal nil (let ((x nil)) (and-let* (((progn x)) ((> x 0))) (+ x 1)))))) (ert-deftest srfi-2-test-group-3 () (should (equal nil (let ((x 1)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y))))) (should (equal nil (let ((x 0)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y))))) (should (equal nil (let ((x nil)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y))))) (should (equal (/ 3.0 2) (let ((x 3.0)) (and-let* (x (y (- x 1)) ((> y 0))) (/ x y)))))) ------------=_1505321402-7387-1-- From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Sep 2017 17:06:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254-done@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-done@debbugs.gnu.org id=D28254.15053223558821 (code D ref 28254); Wed, 13 Sep 2017 17:06:02 +0000 Received: (at 28254-done) by debbugs.gnu.org; 13 Sep 2017 17:05:55 +0000 Received: from localhost ([127.0.0.1]:38609 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsB6p-0002IB-44 for submit@debbugs.gnu.org; Wed, 13 Sep 2017 13:05:55 -0400 Received: from mout.web.de ([212.227.15.3]:58334) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsB6n-0002Hz-5A for 28254-done@debbugs.gnu.org; Wed, 13 Sep 2017 13:05:53 -0400 Received: from drachen.dragon ([193.83.60.48]) by smtp.web.de (mrweb002 [213.165.67.108]) with ESMTPSA (Nemesis) id 0LjaVE-1dGvXu10Ei-00be2B; Wed, 13 Sep 2017 19:05:38 +0200 From: Michael Heerdegen References: <20170904011356.GA21128@holos.localdomain> <20170905035548.GB11331@holos.localdomain> <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> <20170912202134.GA14004@holos.localdomain> <8760cm299r.fsf@drachen> <20170913114846.GA25686@holos.localdomain> <87tw06sg01.fsf@drachen> <20170913164917.GA12381@holos.localdomain> Date: Wed, 13 Sep 2017 19:05:37 +0200 In-Reply-To: <20170913164917.GA12381@holos.localdomain> (Mark Oteiza's message of "Wed, 13 Sep 2017 12:49:17 -0400") Message-ID: <87r2vawmu6.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:yv9Y8JyEcuVrLrDu9JuHbRlXDSR+qKNNVRMw+y/Byg/W8/mA84S HDLAwmoC9ynNlnJj+YoV2tGlg86D9tdzMPqjaLmKFvLDrBgsCmLodfLndVmFxQKpfhfVrVe oWOuArmIbnT5L8iFBdf+nTjM1oVaEXWaPb4JYUd3k0RVQx/3hxoo5hQPaPN4gr69BP8ozRg laNNfQWyiXF1lhNum1GtA== X-UI-Out-Filterresults: notjunk:1;V01:K0:DXjwFyinLLw=:5379U/PlYHdVohbSMty5ZS 6zJkWMGgSUfYwOOzqn7u9Fj2+pvmIH603kJG0SdQoTnx2rx8vPZ3z1eYkiFCUVm9hWhT8Z0MP sSdTxw2+VXsSOYcUjLyf+zjDKCJOv5RsoTXN5CeRKYkMU0Hp2UrzvlKK5eU+SvL/M4bTkNLim /tRoIZYJv1N7XOleyjZpqQHZz10uYQ2RW1ukoEXkL0/6EBpAMzxK3rdkuBzPY+7vZ2x37X+60 ZwKukxV+uxq/j2g7Yepy11gzu0MNA7yomineITwsE3ny7PytEVfljVR77vPEjWaCHaxj6tqva IVpbzifipoqgBHlmJd5nVvpC+d1GAiU2YxJ71YICFLREBRCVLtjNSlaP/gafEI42Blt2n5+xu o0inbVhGSBsY4XdJQ1vJvsGqLJpjdgBo1aw5rpjwiyiOi6yXpwPXNdkfzw9GKEw99UpdMttCZ U9IuAj/EsB6enIjK8qQ/yKgabEbbK0PyQI8RTK/UsDlKAq7wiBKUphWa//y6Oh3pDFYQzS+C3 qHpZUhyylwHSJw8xKZ53NvfmIw0llUO2rozErl0XM31nVThUbQ5jMFMk1k21iSLIfAWhLmeVz j7CY9WMsusk51/Mwc/egtOnaphzbCHYGxnNJIvgsiVDhalqTSBIhsfnhMLAti+t3kD+lJCI4n CFAzKqFn8qgR3NZVudF5zf/6u0CNd9h5jz2xuyps0JDnoKHv2/ZiwF0VPZbrjMY7nYR+4FISG ixwn4nf4kadC9lIck1lAMX/I70dobAAvkb1i8oeqOTV//bYNwmpk3Bn/nhRNuPPa4BPe7SeG5 42yGmlHliPLYDusArmzX3wvVHMDjXFNsFACzD37MOHezcs9T6Y= X-Spam-Score: -0.7 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) Mark Oteiza writes: > Ok, great. All tests passed, so I installed it. Closing! Thanks, good work. One more small thing I thought about after Stefan's question: We have this sentence in the doc of `if-let*': | An element can additionally be of the form (VALUEFORM), which is | evaluated and checked for nil. Would it ease understanding if we would add something like "i.e. you can omit the SYMBOL if you are only interested in the test result". Oh, and I find we have some inconsistency: I haven't looked how the behavior was before, but I see that `if-let*' (and thus `when-let*') treats an empty VARLIST as failure (the ELSEs are executed). Contrary to `and-let*', which treats it as success. IMO, `and-let*' does what is expected, and we should change `if-let*' to behave accordingly (and as the documentation suggests). WDYT? Thanks, Michael. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Mark Oteiza Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Sep 2017 17:29:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Michael Heerdegen Cc: 28254-done@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-done@debbugs.gnu.org id=D28254.150532373010885 (code D ref 28254); Wed, 13 Sep 2017 17:29:01 +0000 Received: (at 28254-done) by debbugs.gnu.org; 13 Sep 2017 17:28:50 +0000 Received: from localhost ([127.0.0.1]:38648 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsBSz-0002pV-VW for submit@debbugs.gnu.org; Wed, 13 Sep 2017 13:28:50 -0400 Received: from mail-qt0-f171.google.com ([209.85.216.171]:47543) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsBSw-0002pH-HF for 28254-done@debbugs.gnu.org; Wed, 13 Sep 2017 13:28:47 -0400 Received: by mail-qt0-f171.google.com with SMTP id b1so2202203qtc.4 for <28254-done@debbugs.gnu.org>; Wed, 13 Sep 2017 10:28:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=udel-edu.20150623.gappssmtp.com; s=20150623; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to:user-agent; bh=rso9O6UrJUYwaVtlhvNkfPewA780wRFuX994K3Incds=; b=rP7HzBvEQOUHBtWCB32qNPNjBwIn27SwV3D1GWgW+FziD9KqWr8U4yxw3gChDEL6Sg s0Hot5YkwOzDnAg3CkHx4uywoq6UExE5iar4SgLolT8C4VfYiMMAEff8ZCf1CCG06txM e+7N/zfbbYs4gMGIhVopex0JeSaQjYGht8eaJeEd5GIooJJthzFKHePb1+/pVVBaRngh aSVM10OogGvhFocyQlv0MsIKSs2oZxqNSEVlOlcdjGt+Y5bZlKiGWXoI7rpB8qhq/ZW/ anL/EDVVnqluvU/JovRJNFYmnRdcCgBTCCZ9LWqBJCDaluC/CGOFUO5KRvmtI9P2I39g 6XZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to:user-agent; bh=rso9O6UrJUYwaVtlhvNkfPewA780wRFuX994K3Incds=; b=cfWPfgskH5gpWF18JYxsc6CgNRJANUNK8ETGGUueAU6UcwAzQp+Fo2xGLhDnR86PR5 jX/QqU6Ut8n6i7qFR1qPIZQrSG4Ik/5HqcA9KgwqwcnAs0V5iMVduNoCX+sMFhCgh8KW 1LBeXqID4LwGxmSp0a/JNnRU5Ui9tfOvzWhJuSFsfi87nyXIfr3Jm7LH6lTFHPVcjCgs bw1715bvMGYEN66lTbGFezTa/0Ac+y21zKMDXPWn2X5PK/iuBgq5l30WonCg/BgoVwE0 JQdAgtl+duj8VFi9kW+1pYtMclytkzrlZF+5eAtEGF2T0qAGovt7bTKK02JXIE/wCwTY 6mOA== X-Gm-Message-State: AHPjjUipW6Z7JIcfmWxqQNCjFrAz6OF7TC5UbkwHp7il3kVNaMefrRyH dY/HyIB+d/b9Iah/8Pl5Kdii X-Google-Smtp-Source: AOwi7QDXzrv6POfDcors8zNPn/QH/ia//jOJ3A817u8RyreDxkk3FrigUSJqbNpOhRjd1yvJtkjMvg== X-Received: by 10.200.47.184 with SMTP id l53mr22422099qta.120.1505323720685; Wed, 13 Sep 2017 10:28:40 -0700 (PDT) Received: from holos.localdomain (pool-173-67-36-61.bltmmd.fios.verizon.net. [173.67.36.61]) by smtp.gmail.com with ESMTPSA id s90sm9756400qkl.81.2017.09.13.10.28.39 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Wed, 13 Sep 2017 10:28:39 -0700 (PDT) Received: by holos.localdomain (Postfix, from userid 1000) id 2F30369FA0; Wed, 13 Sep 2017 13:28:39 -0400 (EDT) Date: Wed, 13 Sep 2017 13:28:39 -0400 From: Mark Oteiza Message-ID: <20170913172839.GA12710@holos.localdomain> References: <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> <20170912202134.GA14004@holos.localdomain> <8760cm299r.fsf@drachen> <20170913114846.GA25686@holos.localdomain> <87tw06sg01.fsf@drachen> <20170913164917.GA12381@holos.localdomain> <87r2vawmu6.fsf@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <87r2vawmu6.fsf@web.de> User-Agent: Mutt/1.9.0 (2017-09-02) X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.5 (/) On 13/09/17 at 07:05pm, Michael Heerdegen wrote: > Mark Oteiza writes: > > > Ok, great. All tests passed, so I installed it. Closing! > > Thanks, good work. > > One more small thing I thought about after Stefan's question: We have > this sentence in the doc of `if-let*': > > | An element can additionally be of the form (VALUEFORM), which is > | evaluated and checked for nil. > > Would it ease understanding if we would add something like "i.e. you can > omit the SYMBOL if you are only interested in the test result". I think so. > Oh, and I find we have some inconsistency: I haven't looked how the > behavior was before, but I see that `if-let*' (and thus `when-let*') > treats an empty VARLIST as failure (the ELSEs are executed). Contrary > to `and-let*', which treats it as success. IMO, `and-let*' does what is > expected, and we should change `if-let*' to behave accordingly (and as > the documentation suggests). > > WDYT? Agreed. Pushed a change for both points. From unknown Sat Jun 21 03:10:16 2025 X-Loop: help-debbugs@gnu.org Subject: bug#28254: 26.0.50; SRFI-2 and-let* Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 13 Sep 2017 17:50:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 28254 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Mark Oteiza Cc: 28254-done@debbugs.gnu.org, Noam Postavsky Received: via spool by 28254-done@debbugs.gnu.org id=D28254.150532497812762 (code D ref 28254); Wed, 13 Sep 2017 17:50:01 +0000 Received: (at 28254-done) by debbugs.gnu.org; 13 Sep 2017 17:49:38 +0000 Received: from localhost ([127.0.0.1]:38673 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsBn8-0003Jl-By for submit@debbugs.gnu.org; Wed, 13 Sep 2017 13:49:38 -0400 Received: from mout.web.de ([217.72.192.78]:60085) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dsBn6-0003JX-30 for 28254-done@debbugs.gnu.org; Wed, 13 Sep 2017 13:49:36 -0400 Received: from drachen.dragon ([193.83.60.48]) by smtp.web.de (mrweb101 [213.165.67.124]) with ESMTPSA (Nemesis) id 0MORiL-1doctA29CP-005p2C; Wed, 13 Sep 2017 19:49:21 +0200 From: Michael Heerdegen References: <20170909003355.GA3363@holos.localdomain> <87efrcccps.fsf@drachen> <20170912130947.GA23119@holos.localdomain> <87k213oiys.fsf@drachen> <20170912202134.GA14004@holos.localdomain> <8760cm299r.fsf@drachen> <20170913114846.GA25686@holos.localdomain> <87tw06sg01.fsf@drachen> <20170913164917.GA12381@holos.localdomain> <87r2vawmu6.fsf@web.de> <20170913172839.GA12710@holos.localdomain> Date: Wed, 13 Sep 2017 19:49:20 +0200 In-Reply-To: <20170913172839.GA12710@holos.localdomain> (Mark Oteiza's message of "Wed, 13 Sep 2017 13:28:39 -0400") Message-ID: <87d16uwktb.fsf@web.de> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Provags-ID: V03:K0:TOhm/bDOKhrTs1MIld3iozuzpobTQcf3sob43COQB/eCA8aUuHX Ac4dzydrMJAeA8Y53FcpQmNSTfvS4VOs/jjl+FcDNbDyWBDQrd6GRHG2p5nvQEBrhDC+ajX bYH+A3PnAza743ABKKYaDZXdnEMMu7QQYULiMyXSzN2lwtzEESB/r0z8FaKUEiL+Yxm586e xSlirYtweKlEPEIbIeLaQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:1Ny0zISG0aE=:v3AFzGZcBuGVRDpB/Es+Z+ 2FEEss3N4AwykNNz3NdQBRXS/koXr8wEwpfqxi+qS5VX51qKn5DV5JKT4tnY5lK1ic+ldPYx+ /b88I9+KoGoWk1p4HTP/yr45D/IWDTVFwfOhwVjbhvsT2aMo9y/IbrshfYW/TcyxaODzAQePE /cZNG8oEWaDXL3Cvu+6ym4huYN4WKO1Y1F2ZC8d2gX9YjbWXXa0DljQMk77dr/lmJCp8S3kmW 3UdykHQgWhUcCKd4tp4CG3/ObHrEYf2oaZyUdZ9C9uwJXeJsHfBEM7ijTGmvOJIE+hByE5W77 dKq2aVHgAZ0iK0MoE0oOHHp24x0SbA/x3acPzqvisxPActsaN3lu7YK/6QpnRD3+xAk36a3fw uBTO5EQc3PLEjJ2wJ80Khs1wzm09ccUPj0Z0LnGVqLgJX/KSApzU91XLR4buR+SaTd5ZWU51N lSEUCrhlJ+KHy+0+V8ndzLKpkMqLCftNG7vglwAPWkIY5WfzIde5RP4TVOJyxHQJAH7DjCZu3 K2Mh5b1165Lq78zvGeQOISW4DFYWbQ7owS0ienf04oQtZwsrNuWO/GzZe1KU/LCTl3AUSs6Oq eiHpMcvsKhstLqBH3lEOoUs9R9D7egrHmL0X2lUqCbl7SLAeZ4d199ztEqx2pPCib7EHHPTaD b7cxfQpPJ3k4xoApdBYWSokeY1m0Lgqejh9Yz6LCHLDUJvy+Zu4b3GCO3/p+YA/1Zbr2vLNAj 5pxZ7DgG6NsvEsDZoDr4xe9Mrj5kUzsM2QIb7BRbnYM/R/wyh+ffK8NWRhQ7WfFtm2NmEg9VN P0v+n/fe5VWgrHN/posVFtPZidAsU4u/XcmFNxKHx5DiJpx9Xc= X-Spam-Score: -3.5 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.5 (---) Mark Oteiza writes: > Agreed. Pushed a change for both points. Thanks! Michael.