From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.help Subject: Re: side effects, list sharing [was: `append' vs. `nconc'] Date: Thu, 31 Dec 2015 20:00:30 +0100 Message-ID: <8760zev3xt.fsf@debian.uxu> References: <568164D8.6050700@ojkastl.de> <87io3iyr7t.fsf@debian.uxu> <87si2kezg1.fsf@mithlond.arda> <87a8osrlj4.fsf_-_@debian.uxu> <87lh8bgafa.fsf@mithlond.arda> <87r3i3ch63.fsf@kuiper.lan.informatimago.com> <87si2jqee2.fsf@debian.uxu> <20151231093045.GB19900@tuxteam.de> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1451588468 32486 80.91.229.3 (31 Dec 2015 19:01:08 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Thu, 31 Dec 2015 19:01:08 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Thu Dec 31 20:00:59 2015 Return-path: Envelope-to: geh-help-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 1aEiT2-0004Ii-4p for geh-help-gnu-emacs@m.gmane.org; Thu, 31 Dec 2015 20:00:56 +0100 Original-Received: from localhost ([::1]:56587 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aEiT1-0003r8-Ow for geh-help-gnu-emacs@m.gmane.org; Thu, 31 Dec 2015 14:00:55 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56315) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aEiSq-0003qi-E7 for help-gnu-emacs@gnu.org; Thu, 31 Dec 2015 14:00:45 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1aEiSl-0003pg-B6 for help-gnu-emacs@gnu.org; Thu, 31 Dec 2015 14:00:44 -0500 Original-Received: from plane.gmane.org ([80.91.229.3]:50970) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1aEiSl-0003pU-41 for help-gnu-emacs@gnu.org; Thu, 31 Dec 2015 14:00:39 -0500 Original-Received: from list by plane.gmane.org with local (Exim 4.69) (envelope-from ) id 1aEiSi-0003xp-6w for help-gnu-emacs@gnu.org; Thu, 31 Dec 2015 20:00:36 +0100 Original-Received: from nl106-137-56.student.uu.se ([130.243.137.56]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 31 Dec 2015 20:00:36 +0100 Original-Received: from embe8573 by nl106-137-56.student.uu.se with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Thu, 31 Dec 2015 20:00:36 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Original-Lines: 57 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: nl106-137-56.student.uu.se Mail-Copies-To: never User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.5 (gnu/linux) Cancel-Lock: sha1:Ld4NUPC6eyxnkCvhzb2yLO1hBm4= X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 80.91.229.3 X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:108558 Archived-At: Drew Adams writes: > _Just don't use side effects_, at least those such > as `nconc' that share list structure, is the right > starting place, and is definitely the best rule of > thumb. You will _never_ go wrong with it as your > motto, in code you write. As a rule of thumb it is too general to be useful, as a motto I suppose it is OK. > Lisp is Lisp. It is not Haskell or lambda calculus. That's exactly right. There was a guy here, namely Rusi, who spent much effort advocating FP. We'll see if he jumps into the discussion. > The two guidelines that Thomas listed are fine. > But the most important use case for side effects using > functions such as `nconc' has to do primarily with > neither space nor time optimization: it is _sharing of > list structure_ for combined effect. Yeah, we understand that is what `nconc' do. I think the reason Thomas said that is that was the direction the discussion went because it all started with having my configuration not having to copy the list as would happen with `append'. But other then time/space optimization, what would you say is the reason not to play it safe/sane and just return stuff, new stuff if necessary, but instead modify them directly? Besides a possible time/space gain, I can only see really creative/insane programmers doing that! > This is Real Lisp (TM), and it is not for the > faint-hearted. And yes, we can all be bitten > occasionally by the gotchas, and we _all are_. > And it can be difficult to track down the culprit > code. Difficult or fun, depending on how much free > time you have and how much you enjoy playing > with Lisp. Indeed, only I think it is the other way around: I would get an heart attack instantly if I were to think, argue, and code like the FP fanatics. Math is another thing tho because math only has to make sense and be correct, it doesn't have to work. Programming has to work and if it makes sense all the better :) -- underground experts united http://user.it.uu.se/~embe8573