From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Tomas Hlavaty Newsgroups: gmane.emacs.devel Subject: Re: What's missing in ELisp that makes people want to use cl-lib? Date: Tue, 14 Nov 2023 17:47:32 +0100 Message-ID: <875y24l1sr.fsf@neko.mail-host-address-is-not-set> References: <87edgsmwni.fsf@yahoo.com> 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="24480"; mail-complaints-to="usenet@ciao.gmane.io" Cc: rms@gnu.org, Eli Zaretskii , emacs-devel@gnu.org To: Po Lu , =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Nov 14 17:48:54 2023 Return-path: Envelope-to: ged-emacs-devel@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 1r2war-0006Dd-TX for ged-emacs-devel@m.gmane-mx.org; Tue, 14 Nov 2023 17:48:53 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r2wZi-00033V-O9; Tue, 14 Nov 2023 11:47:42 -0500 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 1r2wZh-000330-3s for emacs-devel@gnu.org; Tue, 14 Nov 2023 11:47:41 -0500 Original-Received: from logand.com ([37.48.87.44]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1r2wZf-000248-BY; Tue, 14 Nov 2023 11:47:40 -0500 Original-Received: by logand.com (Postfix, from userid 1001) id 00C0619E7F5; Tue, 14 Nov 2023 17:47:34 +0100 (CET) X-Mailer: emacs 28.2 (via feedmail 11-beta-1 I) In-Reply-To: <87edgsmwni.fsf@yahoo.com> Received-SPF: pass client-ip=37.48.87.44; envelope-from=tom@logand.com; helo=logand.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:312738 Archived-At: On Tue 14 Nov 2023 at 18:55, Po Lu wrote: > Jo=C3=A3o T=C3=A1vora writes: > >> Every macro is a compiler: it translates arbitrary forms to Lisp=20 >> forms. > > That's quibbling. The transformations carried out by cl-loop are by a > long shot more consequential to the structure of their input than those > by most any other macro there is, which is a demerit and, I think, is > what Thomas meant to communicate. Yes, thanks, that was the idea. Claiming "every macro is a compiler" is not useful for understanding, why cl-loop or iterate are ugly. cl-loop is ugly because it invents kind of flat (at the list level) syntax and rewrites the top flat part. But it does not change deeper parts of the input. iterate is another level of ugly. It does not have flat syntax, but rewrites the input all the way to the bottom of the form. And it needs to understand every form it walks. I usually prefer using the simplest tool for the job. In this example the choices could be: while|dolist|mapcar < cl-loop < iterate I would use while or dolist or mapcar. There is no point using cl-loop. It is bearable if somebody insist. iterate should not exist.