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.help Subject: Re: Advantage using mapc over dolist Date: Tue, 03 Dec 2024 14:19:30 +0100 Message-ID: <87r06oucnx.fsf@neko.mail-host-address-is-not-set> References: <87ed2qpo3o.fsf@gnu.org> <871pyqfl62.fsf@web.de> <87r06por3q.fsf@neko.mail-host-address-is-not-set> <878qsxlrpf.fsf@neko.mail-host-address-is-not-set> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="38040"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Michael Heerdegen , help-gnu-emacs@gnu.org To: Heime Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Tue Dec 03 14:20:18 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 1tISp6-0009e9-VU for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 03 Dec 2024 14:20:16 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tISob-0001FZ-8G; Tue, 03 Dec 2024 08:19:45 -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 1tISoY-0001F7-KU for help-gnu-emacs@gnu.org; Tue, 03 Dec 2024 08:19:42 -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 1tISoV-0007Bq-J6 for help-gnu-emacs@gnu.org; Tue, 03 Dec 2024 08:19:42 -0500 Original-Received: by logand.com (Postfix, from userid 1001) id 43CE11A0369; Tue, 3 Dec 2024 14:19:33 +0100 (CET) X-Mailer: emacs 29.4 (via feedmail 11-beta-1 I) In-Reply-To: <878qsxlrpf.fsf@neko.mail-host-address-is-not-set> 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, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=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:148529 Archived-At: On Mon 02 Dec 2024 at 22:07, Tomas Hlavaty wrote: > (defun tempo-is-user-element (element) > "Try all the user-defined element handlers in `tempo-user-elements'." > ;; Sigh... I need (some list) > (catch 'found > (mapc (lambda (handler) > (let ((result (funcall handler element))) > (if result (throw 'found result)))) > tempo-user-elements) > (throw 'found nil))) > > although in Common Lisp, I would avoid catch, throw and mapc and used > dolist with return or return-from instead: > > (defun tempo-is-user-element (element) > (dolist (handler tempo-user-elements) > (let ((z (funcall handler element))) > (when z > (cl-return z))))) > > This is more readable than the catch, mapc, throw code in Emacs. > > Unfortunately, cl-return-from does not seems to be as convenient. > cl-return might do what I expect cl:return to be doing. and as the comment in tempo-is-user-element says, this is also nice example, how longing for "liberating feeling" leads to duplicating the same code all over the place, badly. If only there was SOME in Emacs lisp instead of cl-lib? Such a simple and useful function. It even does not have keyword arguments.