From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 8429 invoked from network); 7 Sep 2021 20:10:14 -0000 Received: from mx1.math.uh.edu (129.7.128.32) by inbox.vuxu.org with ESMTPUTF8; 7 Sep 2021 20:10:14 -0000 Received: from lists1.math.uh.edu ([129.7.128.208]) by mx1.math.uh.edu with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mNhQ5-00GtzQ-OC for ml@inbox.vuxu.org; Tue, 07 Sep 2021 15:10:13 -0500 Received: from localhost ([127.0.0.1] helo=lists.math.uh.edu) by lists1.math.uh.edu with smtp (Exim 4.94) (envelope-from ) id 1mNhQ5-002YQE-0i for ml@inbox.vuxu.org; Tue, 07 Sep 2021 15:10:13 -0500 Received: from mx1.math.uh.edu ([129.7.128.32]) by lists1.math.uh.edu with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94) (envelope-from ) id 1mNhQ4-002YQ9-6a for ding@lists.math.uh.edu; Tue, 07 Sep 2021 15:10:12 -0500 Received: from quimby.gnus.org ([95.216.78.240]) by mx1.math.uh.edu with esmtps (TLS1.3) tls TLS_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1mNhQ2-00Gtyt-11 for ding@lists.math.uh.edu; Tue, 07 Sep 2021 15:10:11 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:Mime-Version:References:Message-ID:Date:Subject: From:To:Sender:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=HQRoC/DVWuDAaetmn0hiq3tNd99UBrSKEzeRUxxAd5k=; b=rBXJKYTfaCY29OfKfi5BRxw8ql KRz+QoHY7NeRXMhtvAOyjM9bny5LB3w5Cmv8A52xcIVaLUqIvVt3SwYwI14Zv+zuMjDaivx2SFW/i LQGAzjwmY6C130N185bJtIZiteWPW1QW2oEpyi7HRSq8GBc+SZFvgKg1hFV9eFOcpXOE=; Received: from ciao.gmane.io ([116.202.254.214]) by quimby.gnus.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mNhPv-0001CS-Kk for ding@gnus.org; Tue, 07 Sep 2021 22:10:05 +0200 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mNhPu-0006eA-5u for ding@gnus.org; Tue, 07 Sep 2021 22:10:02 +0200 X-Injected-Via-Gmane: http://gmane.org/ Mail-Followup-To: ding@gnus.org To: ding@gnus.org From: Emanuel Berg Subject: Re: for a given emacs session: insert a subject with an increasing counter Date: Tue, 07 Sep 2021 22:09:26 +0200 Message-ID: <87fsuguozt.fsf@zoho.eu> References: <87v93maplq.fsf@mat.ucm.es> <87h7f629rj.fsf@ucl.ac.uk> <87o89e85vg.fsf@mat.ucm.es> <87k0k2aynw.fsf@tullinup.koldfront.dk> <8735qpd3jj.fsf@mat.ucm.es> <87tuj5j6f9.fsf@gmail.com> <87wnnw747v.fsf@mat.ucm.es> <87ilzcnwc3.fsf@zoho.eu> <87fsuggqes.fsf@ericabrahamsen.net> <87zgsour1m.fsf@zoho.eu> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cancel-Lock: sha1:uVidbJZx4305DRuKbxcQxiErigs= Mail-Copies-To: never List-ID: Precedence: bulk >> That's called a "closure", because the function "closes >> over" the let-bound symbol. Once evaluated, _only_ the >> function body has access to that symbol: it can treat it >> like a globally-defined variable, but no one else can see >> it. When lexical-binding is non-nil, you're always making >> closures: >> >> (setq lexical-binding t) >> (lambda (arg) (message "%S" arg)) --> >> (closure (t) (arg) (message "%S" arg)) >> >> The (t) is where the closed-over symbols and their current >> values would be stored, if there were any. It's sort of >> like the function's own private let-form. > > But ... isn't that what you get with lexical/static `let' > _in_ the function? Ah, now I understand what you mean. With `let' inside, the variable will reset, so it cannot count, but with `let' outside (the closure), as you say "it can treat it like a globally-defined variable". "globally-defined", very good! Oh, no! I didn't know of this (never seen it). I have used global variables to hold the "state" (be a memory between function calls) but I've also done more involved solutions like properties and even self-modifying code :O And all the while, it was this easy ... -- underground experts united https://dataswamp.org/~incal