From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Emanuel Berg Newsgroups: gmane.emacs.help Subject: Re: Another question about lambdas Date: Mon, 30 Jan 2023 18:44:59 +0100 Message-ID: <87357rnch0.fsf@dataswamp.org> References: <87tu23kw9x.fsf@web.de> <861qp67wgm.fsf@gnu.org> <87wn6yyflc.fsf@web.de> <871qp5o05o.fsf@web.de> <87k02xm99a.fsf@web.de> <874jsoysal.fsf@dataswamp.org> <87tu0m8x13.fsf@web.de> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="35449"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:SRiEAC1DL0BfSNzSSTDDcvIJYXw= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Tue Jan 31 07:15:14 2023 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 1pMjvF-0008zp-C5 for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 31 Jan 2023 07:15:13 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pMjui-0005PL-O4; Tue, 31 Jan 2023 01:14:41 -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 1pMYDP-0001Tm-3T for help-gnu-emacs@gnu.org; Mon, 30 Jan 2023 12:45:11 -0500 Original-Received: from ciao.gmane.io ([116.202.254.214]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pMYDN-000347-Fg for help-gnu-emacs@gnu.org; Mon, 30 Jan 2023 12:45:10 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1pMYDK-0002eE-Jp for help-gnu-emacs@gnu.org; Mon, 30 Jan 2023 18:45:06 +0100 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: help-gnu-emacs@gnu.org Mail-Copies-To: never Received-SPF: pass client-ip=116.202.254.214; envelope-from=geh-help-gnu-emacs@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Tue, 31 Jan 2023 01:14:37 -0500 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:142563 Archived-At: Michael Heerdegen wrote: >>> My feeling is that lexical binding comes - while the >>> principle is not hard to understand - with a larger space of >>> non-trivial implications [...] >> >> And those are ... ? > > An example: try to write something that transforms code into > a CPS, continuation passing style, form. Therefore you > really need closures. Are we talking lexical/static `let' inside or outside `defun's? Inside defuns they are very practical, local variables, basically, outside defuns they are interesting, rather, I have found 2 use cases so far, first, what in other languages are refered to as static variables (whose value don't reset between calls), second, the possibility to share such variables between functions. This file demonstrate those use cases, other than that I don't know what one is supposed to do with them, really, and so far they don't do anything global variables don't. So they are a method to not have those, basically? ;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/emacs-init/w3m/w3m-survivor.el (require 'w3m-search) (require 'cl-lib) (let ((opts "torrent magnet 720p") (show "Survivor") (prompt "episode: ") ) (let ((next 1)) (defun australian-survivor (ep) (interactive (list (read-number prompt next))) (w3m-search w3m-search-default-engine (format "\"S10E%02d\" Australian %s %s" ep show opts) ) (setq next (1+ ep)) )) (declare-function australian-survivor nil) (defalias 'aus #'australian-survivor) (let ((next 1)) (defun us-survivor (ep) (interactive (list (read-number prompt next))) (w3m-search w3m-search-default-engine (format "\"S43E%02d\" %s %s" ep show opts) ) (setq next (1+ ep)) )) (declare-function us-survivor nil) (defalias 'us #'us-survivor) ) -- underground experts united https://dataswamp.org/~incal