有没有办法制作一个包含函数的列表?我想做的是,列出一些算术运算符 (+ - */)
以便我可以轻松地操纵它们的顺序并将它们应用于数字列表。
所以,如果我有那个列表,我会像这样使用它:
(apply (map (lambda (x)
x)
'(+ - * /))
'(1 2 3 4))
我是一个新手程序员,所以如果有更好的方法来做这样的操作,非常感谢你的建议。
最佳答案
列表是用函数 LIST 创建的。
(list 1 2 3)
(list + - * /)
应用符号列表没有意义:
(apply (map (lambda (x) x) '(+ - * /)) '(1 2 3 4))
会是(应用函数列表仍然没有意义):
(apply (map (lambda (x) x) (list + - * /)) '(1 2 3 4))
简化(仍然错误):
(apply (list + - * /) '(1 2 3 4))
但是,也许你想要这个:
(map (lambda (f)
(apply f '(1 2 3 4)))
(list + - * /))
在普通 Lisp 中:
(mapcar #'(lambda (f)
(apply f '(1 2 3 4)))
(list #'+ #'- #'* #'/))
返回:
(10 -8 24 1/24)
关于functional-programming - 函数列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1960207/