From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Drew Adams" Newsgroups: gmane.emacs.bugs Subject: bug#12314: 24.2.50; `add-to-history': use `setq' with `delete' Date: Sat, 8 Sep 2012 09:35:57 -0700 Message-ID: <60F244B0F8424BD6B776F2F8012D9052@us.oracle.com> References: <7602D24B74DE42CF9901322634B85CA2@us.oracle.com><87sjas4mc2.fsf@gnu.org> <83ipbomv6e.fsf@gnu.org><2C45207ADF0E46BC98AF1B486695F632@us.oracle.com><83fw6smti6.fsf@gnu.org><9A8F619FD7584123A6319BD089E444E4@us.oracle.com><83bohgmrdv.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit X-Trace: ger.gmane.org 1347122207 31530 80.91.229.3 (8 Sep 2012 16:36:47 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 8 Sep 2012 16:36:47 +0000 (UTC) Cc: 12314@debbugs.gnu.org, cyd@gnu.org To: "'Andreas Schwab'" , "'Eli Zaretskii'" Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Sep 08 18:36:49 2012 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1TAO1V-0006Qv-Ih for geb-bug-gnu-emacs@m.gmane.org; Sat, 08 Sep 2012 18:36:45 +0200 Original-Received: from localhost ([::1]:52243 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TAO1S-0001CT-D8 for geb-bug-gnu-emacs@m.gmane.org; Sat, 08 Sep 2012 12:36:42 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:49303) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TAO1P-0001CB-BG for bug-gnu-emacs@gnu.org; Sat, 08 Sep 2012 12:36:40 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TAO1N-0004id-WF for bug-gnu-emacs@gnu.org; Sat, 08 Sep 2012 12:36:39 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:39310) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TAO1N-0004iZ-TM for bug-gnu-emacs@gnu.org; Sat, 08 Sep 2012 12:36:37 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1TAO1l-0007D7-PT for bug-gnu-emacs@gnu.org; Sat, 08 Sep 2012 12:37:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: "Drew Adams" Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 08 Sep 2012 16:37:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 12314 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 12314-submit@debbugs.gnu.org id=B12314.134712219727683 (code B ref 12314); Sat, 08 Sep 2012 16:37:01 +0000 Original-Received: (at 12314) by debbugs.gnu.org; 8 Sep 2012 16:36:37 +0000 Original-Received: from localhost ([127.0.0.1]:48856 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TAO1M-0007CR-H3 for submit@debbugs.gnu.org; Sat, 08 Sep 2012 12:36:36 -0400 Original-Received: from acsinet15.oracle.com ([141.146.126.227]:49964) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1TAO1K-0007CI-8H for 12314@debbugs.gnu.org; Sat, 08 Sep 2012 12:36:34 -0400 Original-Received: from ucsinet22.oracle.com (ucsinet22.oracle.com [156.151.31.94]) by acsinet15.oracle.com (Sentrion-MTA-4.2.2/Sentrion-MTA-4.2.2) with ESMTP id q88Ga7m2025437 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Sat, 8 Sep 2012 16:36:08 GMT Original-Received: from acsmt357.oracle.com (acsmt357.oracle.com [141.146.40.157]) by ucsinet22.oracle.com (8.14.4+Sun/8.14.4) with ESMTP id q88Ga6CU023391 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO); Sat, 8 Sep 2012 16:36:07 GMT Original-Received: from abhmt101.oracle.com (abhmt101.oracle.com [141.146.116.53]) by acsmt357.oracle.com (8.12.11.20060308/8.12.11) with ESMTP id q88Ga66K013496; Sat, 8 Sep 2012 11:36:06 -0500 Original-Received: from dradamslap1 (/71.202.147.44) by default (Oracle Beehive Gateway v4.0) with ESMTP ; Sat, 08 Sep 2012 09:36:06 -0700 X-Mailer: Microsoft Office Outlook 11 In-Reply-To: X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 Thread-Index: Ac2N3dEoseLH+oUiRRC3xxbjT9APkAAAMJtw X-Source-IP: ucsinet22.oracle.com [156.151.31.94] X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:63957 Archived-At: > > Then the manual should be corrected to state that much more > > explicitly than it does now. Perhaps it shouldn't even talk > > about destructive removal, as that will surely spread > > confusion. For me "destructive" means "in-place", and no > > amount of describing how 'delete' works internally will ever > > be able to countermand that. > > Even if the element is not the first one, you always have to > think about other references that may exist to the cons that > is removed. Exactly. That too merits an explicit mention. That is an even more insidious source of hard-to-find bugs. There is no harm in driving this point home, even at the risk of some repetition. Destructive operations should not be used without extra care. It is a gotcha that newbies sometimes learn the hard way. In particular, thinking that such operations are only about performance, and understanding that they can be more performant, newbies sometimes start using them right off the bat (premature optimization). And because the gotchas only surface in some situations, they don't necessarily notice problems right away. IIRC, the Common Lisp manual was pretty good at essentially warning readers not to use destructive operations unless they really understand them well. I don't recall just what was said, though. A simple guideline to set your variable to the list returned by such an operation will go a long way, I think. But we should of course explain why also.