From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Re: Using hash table to apply command sequence with arguments Date: Mon, 23 Dec 2024 09:10:20 +0300 Message-ID: References: <86frmfj3d3.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1308"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.2.12 (2023-09-09) Cc: Heime via Users list for the GNU Emacs text editor , Heime To: Joel Reicher Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon Dec 23 07:11:19 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 1tPbew-0000D3-VH for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 23 Dec 2024 07:11:18 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tPbeL-0006eV-7T; Mon, 23 Dec 2024 01:10:43 -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 1tPbeA-0006e2-PJ for help-gnu-emacs@gnu.org; Mon, 23 Dec 2024 01:10:31 -0500 Original-Received: from stw1.rcdrun.com ([217.170.207.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tPbe9-0006HV-2R for help-gnu-emacs@gnu.org; Mon, 23 Dec 2024 01:10:30 -0500 Original-Received: from localhost ([::ffff:41.75.183.124]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 000000000007DC8B.000000006768FED2.0010CFCF; Sun, 22 Dec 2024 23:10:25 -0700 Mail-Followup-To: Joel Reicher , Heime via Users list for the GNU Emacs text editor , Heime Content-Disposition: inline In-Reply-To: <86frmfj3d3.fsf@gmail.com> Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.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:148924 Archived-At: * Joel Reicher [2024-12-22 15:43]: > Heime via Users list for the GNU Emacs text editor > writes: > > > How can use a hash table to execute a sequence of commands, possibly > > with arguments. > > Hash tables aren't sequences. There is no statement above that hash table is sequence. Sure! It is possible to use hash table as a database which can accept functions and their arguments, which then later need to be executed. Though you would need to have some time of sorting, if you need the order of execution. (setq my-hash (make-hash-table)) (puthash 'tetris nil my-hash) (puthash 'message '("Hello there again") my-hash) (defun my-run-sequence-of-commands-by-hash (hash) (let ((keys (reverse (hash-table-keys my-hash))) ;; it is questionable if there is any order with hashes (continue t)) (while (and keys continue) (let* ((function (pop keys)) (args (gethash function hash))) (apply function args) (setq continue (y-or-n-p "Do you wish to continue with the function list?")))))) (my-run-sequence-of-commands-by-hash my-hash) I have https://gnu.support/files/emacs/packages/rcd-hash-edit.el hash library which allows hashes to be visually edited, saved, and loaded interactively or programmatically. That would mean that using hashes to record which functions to execute could be made permanent and saved on the disk, for the later execution. Emacs Lisp package `rcd-hash-edit.el`: https://hyperscope.link/3/7/6/6/1/Emacs-Lisp-package-rcd-hash-edit-37661.html -- Jean Louis