From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Heime Newsgroups: gmane.emacs.help Subject: RE: [External] : Re: Printing alist pairs to a dedicated buffur Date: Fri, 26 Apr 2024 16:57:05 +0000 Message-ID: <0jOwJ1JGd7GPBxiL3BuPtprxSM5D4xW8PgySDUa_0MCvTTjrr6Id3vGol5CLLhXfFya5WJ0HGiJHnMqcD2bcKgSMxdRd3NEH4V3o8S2-zCk=@protonmail.com> References: <87plukbbod.fsf@ledu-giraud.fr> <87jzkss5w8.fsf@dataswamp.org> <87y1919iu1.fsf@dataswamp.org> <87msph9ehc.fsf@dataswamp.org> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35455"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Emanuel Berg , "help-gnu-emacs@gnu.org" To: Drew Adams Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Fri Apr 26 19:00:03 2024 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1s0OvZ-0008vo-Aa for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 26 Apr 2024 19:00:01 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1s0OvA-0004Wk-MS; Fri, 26 Apr 2024 12:59:36 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s0Ov6-0004WK-L0 for help-gnu-emacs@gnu.org; Fri, 26 Apr 2024 12:59:32 -0400 Original-Received: from mail-40141.protonmail.ch ([185.70.40.141]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1s0Ov4-00065O-Cc for help-gnu-emacs@gnu.org; Fri, 26 Apr 2024 12:59:32 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1714150762; x=1714409962; bh=YO8xbrbQL+E3zJc4rWeEJpGrxVA4yXxlaZcgsFHlDtU=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=rlHcd6P+Wkc1L2qL88h1yV3TncCotGRCJ5u3/Qk4rfvZ83/6G3EJLTNkj/lJ4/cd0 b2mQyCuzRwjwcPVx6fZzwRkCMakhjBnirOeDe8TCIp1hN9mH0tY3TQ6kLtvWKqIVru Qy/G7Y4ydOZCCKGkTy+c14B5BHK1d5VT5DiSkigsCQp2nouvYAT6mXpoHFbh/S9/9p FEVr6N2x5i2qCePDJtT3+GEc6yOYlHcVpDaWZ+n2lhT2Hu+Ns/fW9Yo0ux9ClCYUTu vi0cuO3UJPP9sUPW0UTAXMlziTMpboHQ/u3rhDpPrS0fM4Ypw6AzYb1LMjDeE0ZY2A mhYNHJZbASUsQ== In-Reply-To: Feedback-ID: 57735886:user:proton X-Pm-Message-ID: 90275fc072d1435432f20d4387defdf929b4e4fc Received-SPF: pass client-ip=185.70.40.141; envelope-from=heimeborgia@protonmail.com; helo=mail-40141.protonmail.ch X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 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-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:146486 Archived-At: On Saturday, April 27th, 2024 at 3:55 AM, Drew Adams wrote: > > > Dynamic binding is still the default in Elisp. The doc is > > > correct about that. > >=20 > > Yes, but isn't that a practical measure so that legacy code > > won't break? >=20 >=20 > Yes. Emacs isn't "Move fast & break things", > because it cares about its users. Users are > Emacs. >=20 > Legacy code - of which there's a ton, likely > multiple times the code delivered with Emacs. > Including code used in industry and government. >=20 > Don't just think "my code". Most Emacs users > don't frequent mailing lists or other forums > about Emacs. And not all Elisp code is by or > even for individual users. >=20 > And besides legacy code: legacy habits, > i.e., people. In a word, history. > ___ >=20 > I said it before: what Emacs is now aiming for > wrt lexical binding of variables by default, > i.e., except for those declared "special", is > what Common Lisp has had from the start - 40 > years ago. >=20 > And CL was the result of long discussions by > most of the world's Lisp experts, familiar > with the history of Lisp and the existing > Lisp implementations. >=20 > (It's true that U.S. experts participated > more than Europeans or others, alas. The > world was even more parochial back then > than it is now.) >=20 > This is by way of saying that there's nothing > new about the behavior of lexical and dynamic > binding (and about their coexistance) in a > programming language or environment. The > gotchas and foibles were well known. Scheme > existed, for example, and its designers were > among those who designed Common Lisp. >=20 > Likewise, the problems with applicative-order > evaluation (eval all args, before evaling the > function body after their substitution) were > well known. (Google "funarg problem".) >=20 > E.g., Lisp uses applicative order, as opposed > to normal order, which is used by Haskell etc. > Real (i.e., pure) lazy functional programming > was also already a thing back then, though > not so widely known. >=20 > Elisp will get to where Common Lisp has been, > wrt lexical & dynamic binding. But it's not > there yet. >=20 > Keep in mind that Elisp is not only a general > programming language (but it's also that). >=20 > It's an interactive editing (and A, B, C,...) > environment. Know not only the advantages of > lexical binding, in general, but also those > of dynamic binding - and particularly in an > interactive, editing context. >=20 > For that, I recommend RMS's points about why > dynamic binding is useful for Emacs users: >=20 > https://www.gnu.org/software/emacs/emacs-paper.html#SEC15 >=20 > And my point here was also to remind you that > binding is not only about variables, and you > cannot practically use Emacs without taking > advantage of its dynamic binding of options, > named functions, faces, and on and on and on. >=20 > You might not think about that. Imagine, if > you had to pass your preferred value of some > user option or face explicitly as an argument > into thousands of functions, instead of it > being global. All user options. The very > notion of a user option disappears. >=20 > I'll say it again: >=20 > Let us know, when you use lexical binding > for all your defuns, as well as for > defface and all the rest. ;-) >=20 > Face it: >=20 > Global definitions and dynamic binding are > your friends, just as much as locally-scoped > definitions and lexical binding. You just > need to know which friend to call in any > given context, for favor or fun. In summary, all the talk criticising my use of Global=20 definitions was nonsense from the start. Then one wonders how developers are not invited for parties !!!