From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#34708: alist-get has unclear documentation Date: Mon, 04 Mar 2019 19:22:28 +0100 Message-ID: <874l8iebyz.fsf@web.de> References: <87wolhr5k6.fsf@web.de> <87y35xdu4w.fsf@web.de> <87mumcdu7f.fsf@web.de> <875zsyhakx.fsf@ericabrahamsen.net> <87fts2h9we.fsf@web.de> <871s3mh85d.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="230267"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: 34708@debbugs.gnu.org To: Eric Abrahamsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Mar 04 20:56:37 2019 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:256) (Exim 4.89) (envelope-from ) id 1h0thU-000xn6-2P for geb-bug-gnu-emacs@m.gmane.org; Mon, 04 Mar 2019 20:56:36 +0100 Original-Received: from localhost ([127.0.0.1]:60064 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h0thS-0007mV-Tb for geb-bug-gnu-emacs@m.gmane.org; Mon, 04 Mar 2019 14:56:35 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:46975) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1h0sEy-00047N-OB for bug-gnu-emacs@gnu.org; Mon, 04 Mar 2019 13:23:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1h0sEx-0001Bd-2Q for bug-gnu-emacs@gnu.org; Mon, 04 Mar 2019 13:23:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:46613) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1h0sEw-00018Z-06 for bug-gnu-emacs@gnu.org; Mon, 04 Mar 2019 13:23:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1h0sEv-0002dk-NG for bug-gnu-emacs@gnu.org; Mon, 04 Mar 2019 13:23:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 04 Mar 2019 18:23:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 34708 X-GNU-PR-Package: emacs Original-Received: via spool by 34708-submit@debbugs.gnu.org id=B34708.155172376710101 (code B ref 34708); Mon, 04 Mar 2019 18:23:01 +0000 Original-Received: (at 34708) by debbugs.gnu.org; 4 Mar 2019 18:22:47 +0000 Original-Received: from localhost ([127.0.0.1]:60157 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h0sEg-0002cq-F7 for submit@debbugs.gnu.org; Mon, 04 Mar 2019 13:22:47 -0500 Original-Received: from mout.web.de ([212.227.17.11]:43419) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h0sEe-0002cW-2c for 34708@debbugs.gnu.org; Mon, 04 Mar 2019 13:22:44 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1551723749; bh=8LLff89G2mGR6htJ9l17EKG+fK49PTOwrSAGTHKDQSE=; h=X-UI-Sender-Class:From:To:Cc:Subject:References:Date:In-Reply-To; b=kli3rAtwDNgIKLGby+BxbQgVnucJg4kl8vUXcIkbleBEiXRQoLiHuWQFily/f1IsN wSxF8zJucm8l05Or/DvzG7q3PIAWot0H8d1dlVpV/l7e19F2rbi3lezCBOZ4W7Xbmt dPWLzFJuO3XHStFs7JUbWxuKW+SvR/UkCrli3JDY= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Original-Received: from drachen.dragon ([88.67.111.211]) by smtp.web.de (mrweb103 [213.165.67.124]) with ESMTPSA (Nemesis) id 0Lz3FM-1h5K9l20X2-014FQf; Mon, 04 Mar 2019 19:22:29 +0100 In-Reply-To: <871s3mh85d.fsf@ericabrahamsen.net> (Eric Abrahamsen's message of "Mon, 04 Mar 2019 09:16:46 -0800") X-Provags-ID: V03:K1:3pETMjPqRNJEfwsCWvaXM1lANYNuzr8cfL+RH81m3JJbQbuqcoo QO9RlhO8W0PU66NYkZgipVAS0GCuLTKleWx9ulL7cG2jpGcvt8WXqPvOxDfr1xunIY5vjtz K/7Jpp4HAzzIa9WQsNLzvFpD3J6YXzy+3Q2Yz0TKoourIRyMR+CsiWeO0ey7OIc8tOWXqra VzRlkepQJzCFzQVvhx4ng== X-UI-Out-Filterresults: notjunk:1;V03:K0:ZdXDALwK7oE=:scKcHVHt7E390sCNeGLkVN 0hrLYazCZrX+ss99qN/9xFDn6pW7d6yRRbGmtd45saCp9PeX/2b5XKhnVSEfD83+ppo+3Jj7m eOONiaUvJv4hnE4RiUWXbufSnfUg+ViDADY5cUN94xV4MbUwBEg+cof45Ly7h/ayJcS+R+NuB 2zYscADC3Ntd2cvuSeJFyMyh+hsP0r1Bpjq2BEJUUklR5HswmOkLIbmWMBAccE/7tKV0jcHW8 UnNTfvzyP64gjRyc62jOSUCILsofOnSp5KwjKQ+AZwqQUZagn1vA5AmN6ISi7K0n5vJXh/wxd yPxLRvaF8PgNkC9vRKk+DJZXyyyBM8lNC/YznZV7ppMkT9WRIdfQup9kxdfxVkmy9DMZI2qeM jqFDMzFQ80CBZGURyQFzLuaJbr9wUj8t3WEMidKKX3dPR4dgz3n+ms7+qPTdG7QaTCGZZ0/ci oShkqP6cYwCyGfCb5+tXxnBkWPNmujFrjhTdyNRTypJSFyZju6wSboM0P5NFLaTFQwPdyVGho 3nRsCX26Pm6kQSKX+A0G1HnQNa9FzhQuiNq7Y3yYLu543wNDqsbS2tlkuNmH7WXv5rTOQiRyt D1zPY4P1QkVu21YDFEICNRcaOEykt4ou9vAdtydfhIl4FSGSAgPseiuklmv0UrOt2vm9q9SaT tN5b8IQRkhUcyqQPSjI4fYr87Y7JFgSalzis3QXXmrf3l5cRq/B1ks+ttFlx3iJ1Nztosvq9D ez7PyeV4yftyIaa71CJE7P/hKTTHdgJfbcQR9PxsI8o5mOkKaeS66CkVp/PYisTQBi3mii66 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 209.51.188.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:156038 Archived-At: Eric Abrahamsen writes: > While we're here, you mentioned up-thread that REMOVE isn't intuitive > if you don't understand what the DEFAULT arg is doing. Obviously I > don't understand that: would you elaborate? Ok, I try to repeat with different words. Too many words, sorry. What I wanted to say was actually simple. In most cases what (setf (alist-get KEY ...) ...) should do is clear: change the association of an existing key, or add a key-value association. In case of using the DEFAULT argument - we don't yet speak of setf at all here - (alist-get key alist default) returns DEFAULT if KEY is not found. But it also returns DEFAULT if KEY is found in ALIST and happens to be associated with DEFAULT. This makes a call like (setf (alist-get key alist default) default) ambiguous: the "goal" (which is making (alist-get key alist default) eval to DEFAULT) can be reached in two ways: (1) by making KEY being associated with DEFAULT in ALIST and (2) by removing any existing association for KEY. You can choose which behavior you want via the REMOVE argument which comes after the DEFAULT arg: specifying REMOVE non-nil gives you (2) - remove it - else you get (1). BTW, a simpler way to delete an association in an alist is (setf (alist-get key alist) nil) This will do most of the time unless it's important that the alist doesn't grow too much. Maybe it's because of this that the remove facility is a bit hidden. Michael.