help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Making alist that executes multiple commands


From: Heime
Subject: Re: Making alist that executes multiple commands
Date: Mon, 25 Nov 2024 22:50:03 +0000





Sent with Proton Mail secure email.

On Tuesday, November 26th, 2024 at 10:09 AM, Stephen Berman 
<stephen.berman@gmx.net> wrote:

> On Mon, 25 Nov 2024 21:59:53 +0000 Heime heimeborgia@protonmail.com wrote:
> 
> > About your comment
> > 
> > > That seems fine if the functions take no arguments, though probably not
> > > as flexible as looping over a list.
> > 
> > You provided the examples
> > 
> > (funcall 'alkotr-ar ar)
> > (funcall 'alkotr-ar af)
> > 
> > But I did not understand how to inceorporate this idea. With
> > my lambda function, I can also pass arguments to my commands.
> > 
> > I did not understand the implication of the following in my case.
> > 
> > (dolist (f '(+ - list))
> > (dolist (a '(1 2 3))
> > (funcall f a)))
> > 
> > Thusly, I do not understand what "allow arguments to be freely combined"
> > actually means practically.
> 
> 
> It produces all combinations of function calls comprised of one of the
> functions f and one of the arguments a; I did not mean to imply anything
> else. If it doesn't help with your use case, then of course don't use
> it.

I worked through it a little bit

(dolist (f '(+ - list))
  (dolist (a '(1 2 3))
    (funcall f a)))

Which fails for + and -, Elisp requires at least two arguments 
to perform arithmetic operations. Since only a single argument 
is provided, this will result in an error.

So I have done 

(dolist (f '(+ - list))
  (dolist (a '(1 2 3))
    (dolist (b '(4 5 6))  ;; Adding another argument
      (message "Result of %s: %s" f (funcall f a b)))))

Producing

Result of +: 5
Result of +: 6
Result of +: 7
Result of +: 6
Result of +: 7
Result of +: 8
Result of +: 7
Result of +: 8
Result of +: 9
Result of -: -3
Result of -: -4
Result of -: -5
Result of -: -2
Result of -: -3
Result of -: -4
Result of -: -1
Result of -: -2
Result of -: -3
Result of list: (1 4)
Result of list: (1 5)
Result of list: (1 6)
Result of list: (2 4)
Result of list: (2 5)
Result of list: (2 6)
Result of list: (3 4)
Result of list: (3 5)
Result of list: (3 6)

It is a good exercise but not the kind of mixing I was thinking about.

I just have a set of commands that I want to run according to some setting
'argm or 'go.  Or do both with '(argm go).  That's all.  I think the lamdba
gets this done.  The arguments to any of the commands in the lambda can come
from external settings as well right, global variables and can introduce 
conditionals as well.  Which should be what I require.  Or would you know
about something else.  Is there ways the implementation can break?
 








reply via email to

[Prev in Thread] Current Thread [Next in Thread]