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: Easy to add with push but not to the end of a list Date: Tue, 06 Dec 2022 02:43:10 +0100 Message-ID: <878rjlgvdd.fsf@dataswamp.org> References: <877czcid1d.fsf@web.de> <87a648kzov.fsf@dataswamp.org> <87cz93noqc.fsf@web.de> <87zgc76npf.fsf@dataswamp.org> <87k038npls.fsf@web.de> <87sfht8luq.fsf@dataswamp.org> <87h6y91ffg.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="10148"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) To: help-gnu-emacs@gnu.org Cancel-Lock: sha1:yKJqFpMhaXQzHsEi4eQMwzS0JLY= Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Tue Dec 06 02:49:22 2022 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 1p2N5F-0002R3-0u for geh-help-gnu-emacs@m.gmane-mx.org; Tue, 06 Dec 2022 02:49:21 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p2N4T-0007pu-Sb; Mon, 05 Dec 2022 20:48:34 -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 1p2MzT-00079B-Q8 for help-gnu-emacs@gnu.org; Mon, 05 Dec 2022 20:43:23 -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 1p2MzP-0003AG-VK for help-gnu-emacs@gnu.org; Mon, 05 Dec 2022 20:43:23 -0500 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1p2MzN-0005Tf-NC for help-gnu-emacs@gnu.org; Tue, 06 Dec 2022 02:43:17 +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: -16 X-Spam_score: -1.7 X-Spam_bar: - X-Spam_report: (-1.7 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.249, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-Mailman-Approved-At: Mon, 05 Dec 2022 20:48:31 -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:141426 Archived-At: Michael Heerdegen wrote: > Use `macroexpand' and/or `macroexpand-1' to check the > expansion of macro calls. The rest is just...normal Elisp. > You know how to write Elisp, so write it so that the > expansion you want is generated. It's code returning code. > So what's the code you want to produce? I don't know, because this can't be done with Elisp, not any Elisp I know anyway, since the variable name will then be evaluated ... Here is the `push' macro - TBH, I don't know what most of that means ... (defmacro push (newelt place) "Add NEWELT to the list stored in the generalized variable PLACE. This is morally equivalent to (setf PLACE (cons NEWELT PLACE)), except that PLACE is evaluated only once (after NEWELT)." (declare (debug (form gv-place))) (if (symbolp place) ;; Important special case, to avoid triggering GV too early in ;; the bootstrap. (list 'setq place (list 'cons newelt place)) (require 'macroexp) (macroexp-let2 macroexp-copyable-p x newelt (gv-letplace (getter setter) place (funcall setter `(cons ,x ,getter)))))) -- underground experts united https://dataswamp.org/~incal