all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Emanuel Berg <embe8573@student.uu.se>
To: help-gnu-emacs@gnu.org
Subject: Re: side effects, list sharing   [was: `append' vs. `nconc']
Date: Thu, 31 Dec 2015 20:00:30 +0100	[thread overview]
Message-ID: <8760zev3xt.fsf@debian.uxu> (raw)
In-Reply-To: d33aa2e4-3f3a-44f9-8e24-61bbe3af6313@default

Drew Adams <drew.adams@oracle.com> 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




  reply	other threads:[~2015-12-31 19:00 UTC|newest]

Thread overview: 38+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-12-28 16:35 Error: Setting the shell in sh-mode via a local variable does not work Johannes Kastl
2015-12-29  1:32 ` Emanuel Berg
2015-12-29 18:33   ` Johannes Kastl
2015-12-30 14:53     ` Emanuel Berg
2015-12-30 15:15       ` Robert Thorpe
2015-12-30 15:30         ` Emanuel Berg
2015-12-30 17:42         ` Johannes Kastl
2015-12-30 15:19   ` Teemu Likonen
2015-12-30 15:41     ` `append' vs. `nconc' (was: Re: Error: Setting the shell in sh-mode via a local variable does not work) Emanuel Berg
2015-12-30 16:37       ` `append' vs. `nconc' Teemu Likonen
2015-12-31  3:37         ` Emanuel Berg
     [not found]         ` <mailman.1400.1451533083.843.help-gnu-emacs@gnu.org>
2015-12-31  3:45           ` Pascal J. Bourguignon
2015-12-31  4:00             ` Emanuel Berg
2015-12-31  9:22               ` tomas
2015-12-31 18:48                 ` Emanuel Berg
     [not found]             ` <mailman.1402.1451534421.843.help-gnu-emacs@gnu.org>
2015-12-31  5:36               ` Pascal J. Bourguignon
2015-12-31  3:50         ` Emanuel Berg
     [not found]         ` <mailman.1401.1451533833.843.help-gnu-emacs@gnu.org>
2015-12-31  5:37           ` Pascal J. Bourguignon
2015-12-31  7:13             ` Emanuel Berg
2015-12-31  9:30               ` tomas
2015-12-31 17:56                 ` side effects, list sharing [was: `append' vs. `nconc'] Drew Adams
2015-12-31 19:00                   ` Emanuel Berg [this message]
2015-12-31 19:15                     ` Drew Adams
2016-01-01 13:20                       ` Emanuel Berg
2015-12-31 18:51                 ` `append' vs. `nconc' Emanuel Berg
     [not found]                 ` <mailman.1440.1451588113.843.help-gnu-emacs@gnu.org>
2016-01-01  2:53                   ` Barry Margolin
2016-01-01 13:26                     ` Emanuel Berg
     [not found]             ` <mailman.1406.1451546036.843.help-gnu-emacs@gnu.org>
2015-12-31  8:54               ` Pascal J. Bourguignon
2015-12-31  7:31           ` Teemu Likonen
2015-12-31 18:35             ` Emanuel Berg
2015-12-31 20:04               ` Teemu Likonen
2016-01-01 13:23                 ` Emanuel Berg
2016-01-01 14:02                   ` Teemu Likonen
2016-01-01 18:31                     ` Emanuel Berg
     [not found]             ` <mailman.1438.1451586967.843.help-gnu-emacs@gnu.org>
2016-01-01  6:25               ` Pascal J. Bourguignon
2016-01-01 13:31                 ` Emanuel Berg
2016-01-01 15:04                   ` Drew Adams
     [not found]     ` <mailman.1353.1451490125.843.help-gnu-emacs@gnu.org>
2015-12-30 16:18       ` Pascal J. Bourguignon

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=8760zev3xt.fsf@debian.uxu \
    --to=embe8573@student.uu.se \
    --cc=help-gnu-emacs@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.