all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Philipp Stephani <p.stephani2@gmail.com>, Eli Zaretskii <eliz@gnu.org>
Cc: Alexander Miller <alexanderm@web.de>,
	Emacs developers <emacs-devel@gnu.org>,
	yyoncho <yyoncho@gmail.com>,
	Stefan Monnier <monnier@iro.umontreal.ca>
Subject: RE: Questions about throw-on-input
Date: Thu, 14 May 2020 09:56:13 -0700 (PDT)	[thread overview]
Message-ID: <4506133a-5e63-4ae7-9b5d-830359e8b673@default> (raw)
In-Reply-To: <CAArVCkTmvkR2vY2+5kGGead_CE3KUFTUokCXm8ihcwjnO0uSDg@mail.gmail.com>

> > Your ideal world seems to be based on an editor design that is very
> > different from what Emacs is.  The absolute majority of objects which
> > an average Lisp program manipulates are globally visible -- buffers,
> > windows, frames, global variables, the obarray, etc., and doing that
> > in non-blocking ways is not really trivial.
> 
> And that's what I'd call one of the biggest problems in current
> Emacs's design. Much of the development in programming practices over
> the last few decades has been moving away from global mutable state,
> in order to increase robustness and predictability, and also to make
> concurrency without subprocesses possible.

Ah, but Emacs and Emacs Lisp are not just about
programming and writing Elisp libraries.

Certainly, a purely functional (or purely
logic/relational) language has advantages
(many, many!) from a programming point of view.

But Emacs Lisp, and in particular the global
thingies you decry, and in particular dynamic
binding, are very useful for Emacs _users_,
for easy customization/extension.

Again, I point to the rationale:

https://www.gnu.org/software/emacs/emacs-paper.html#SEC17

https://www.gnu.org/software/emacs/emacs-paper.html#SEC18

Emacs Lisp is not Haskell, and it's not Scheme.
You may say, "Alas", but until you or someone
else comes up with a reasonably useful "editor"
on the order of Emacs and Elisp, but which uses
only pure Lisp (no side effects) or Haskell, I
remain skeptical.

The argument for the presence of such dynamic,
and sometimes global, thingies is not an argument
against lexical etc. or an argument in favor of
abusing or exaggerating the use of global etc.
thingies.  It's just to point out that they have
their place, in a context such as Emacs.  They're
not just things to be purged in some blanket
cleanup campaign.



  parent reply	other threads:[~2020-05-14 16:56 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-05-10 13:47 Questions about throw-on-input Alexander Miller
2020-05-11 14:13 ` Eli Zaretskii
2020-05-11 15:21   ` Stefan Monnier
2020-05-11 16:19     ` Eli Zaretskii
2020-05-11 17:27       ` Stefan Monnier
2020-05-11 17:39         ` Alexander Miller
2020-05-11 18:23           ` Eli Zaretskii
2020-05-11 18:24           ` Stefan Monnier
2020-05-11 19:48             ` Alexander Miller
2020-05-11 20:14               ` Stefan Monnier
2020-05-12 22:33                 ` Alexander Miller
2020-05-13 14:43                   ` Eli Zaretskii
2020-05-13 18:47                     ` Alexander Miller
2020-05-14  8:32                     ` Philipp Stephani
2020-05-14 14:23                       ` Eli Zaretskii
2020-05-14 14:37                         ` Philipp Stephani
2020-05-14 16:56                       ` Drew Adams [this message]
2020-05-15  3:21                         ` Richard Stallman
2020-05-15  3:54                           ` Stefan Monnier
2020-05-15  8:19                             ` Arthur Miller
2020-05-15 15:45                               ` Stefan Monnier
2020-05-15 16:46                                 ` Yuan Fu
2020-05-15 17:31                                   ` Stefan Monnier
2020-05-15 17:50                                     ` yyoncho
2020-05-15 18:44                                       ` Alexander Miller
2020-05-15 18:55                                         ` Stefan Monnier
2020-05-15 19:46                                         ` Philipp Stephani
2020-05-15 18:00                                     ` Andrea Corallo
2020-05-15 17:35                                 ` Arthur Miller
2020-05-15 19:47                                 ` chad
2020-05-16 11:29                                   ` Eli Zaretskii
2020-05-12  2:39           ` Daniel Colascione
2020-05-12 14:37             ` Eli Zaretskii
2020-05-11 18:17         ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2020-05-09 13:09 Alexander Miller
2020-05-10 11:11 ` yyoncho
2020-05-07  7:31 Ivan Yonchovski
2020-05-07 12:36 ` Eli Zaretskii
2020-05-07 14:28   ` Ivan Yonchovski
2020-05-07 21:11   ` yyoncho
2020-05-08  1:58     ` Stefan Monnier
2020-05-08  4:36       ` yyoncho
2020-05-08  4:43         ` yyoncho
2020-05-12  4:15       ` Michael Heerdegen
2020-05-08 10:41     ` Eli Zaretskii
2020-05-08 11:23       ` Ivan Yonchovski
2020-05-08 11:45         ` Eli Zaretskii
2020-05-08 11:55           ` yyoncho
2020-05-08 14:55         ` Stefan Monnier
2020-05-08 18:04           ` yyoncho
2020-05-07 13:49 ` Stefan Monnier
2020-05-07 15:36   ` Ivan Yonchovski

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=4506133a-5e63-4ae7-9b5d-830359e8b673@default \
    --to=drew.adams@oracle.com \
    --cc=alexanderm@web.de \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=monnier@iro.umontreal.ca \
    --cc=p.stephani2@gmail.com \
    --cc=yyoncho@gmail.com \
    /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.