功能列表

Amm*_*mar 2 lisp scheme functional-programming

有没有办法制作一个包含函数的列表?我要做的是,列出一些算术运算符, (+ - * /)这样我就可以轻松地操纵它们的顺序并将它们应用到数字列表中.

所以,如果我有这个列表,我会像这样使用它:

(apply (map (lambda (x)
              x)
            '(+ - * /))
       '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)

我是一名新手程序员,所以如果有更好的方法来进行此类操作,我们非常感谢您的建议.

Rai*_*wig 10

列表使用LIST功能.

(list 1 2 3)

(list + - * /)
Run Code Online (Sandbox Code Playgroud)

应用符号列表毫无意义:

(apply (map (lambda (x) x) '(+ - * /)) '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)

会(应用一系列功能仍然没有意义):

(apply (map (lambda (x) x) (list + - * /)) '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)

简化(仍然错误):

(apply (list + - * /) '(1 2 3 4))
Run Code Online (Sandbox Code Playgroud)

但是,也许你想要这个:

(map (lambda (f)
       (apply f '(1 2 3 4)))
     (list + - * /))
Run Code Online (Sandbox Code Playgroud)

在Common Lisp中:

(mapcar #'(lambda (f)
            (apply f '(1 2 3 4)))
        (list #'+ #'- #'* #'/))
Run Code Online (Sandbox Code Playgroud)

返回:

(10 -8 24 1/24)
Run Code Online (Sandbox Code Playgroud)

  • 感谢您指出(列表#'+#' - #'*#'/),它引导我达到我想要的. (2认同)