Lisp 在单个列表上按顺序映射多个函数

Lisp 在单个列表上按顺序映射多个函数,lisp,scheme,racket,Lisp,Scheme,Racket,我想在一个列表上按顺序映射三个不同的函数。为了演示我的意思,假设我们要执行以下三个映射: (map foo mylist) (map bar mylist) (map foobar mylist) 如果我们将mylist定义为“1 2 3”,并一次运行一个以上函数,则会得到: (map foo mylist) ===> (foo1 foo2 foo3) (map bar mylist) ===> (bar1 bar2 bar3) (map foobar myli

我想在一个列表上按顺序映射三个不同的函数。为了演示我的意思,假设我们要执行以下三个映射:

(map foo mylist)
(map bar mylist)
(map foobar mylist)
如果我们将mylist定义为“1 2 3”,并一次运行一个以上函数,则会得到:

(map foo mylist)     ===>  (foo1 foo2 foo3)
(map bar mylist)     ===>  (bar1 bar2 bar3)
(map foobar mylist)  ===>  (foobar1 foobar2 foobar3)
相反,我希望输出采用以下格式:

===>  ((foo1 bar1 foobar1) (foo2 bar2 foobar2) (foo3 bar3 foobar3))
你会怎么做

可以嵌套两个贴图以达到所需效果:

(map (lambda (e)
       (map (lambda (f) (f e))
            myfuncs))
     mylist)
上面的mylist是输入列表,myfuncs是函数列表。例如,以下列表:

(define myfuncs (list sqrt square cube))
(define mylist '(1 2 3))
。。。将产生以下输出:

'((1 1 1) (1.4142135623730951 4 8) (1.7320508075688772 9 27))
可以嵌套两个贴图以达到所需效果:

(map (lambda (e)
       (map (lambda (f) (f e))
            myfuncs))
     mylist)
上面的mylist是输入列表,myfuncs是函数列表。例如,以下列表:

(define myfuncs (list sqrt square cube))
(define mylist '(1 2 3))
。。。将产生以下输出:

'((1 1 1) (1.4142135623730951 4 8) (1.7320508075688772 9 27))

结束StackOverflow问题的原因之一是,询问代码的问题必须证明对所解决的问题的最低理解。包括尝试过的解决方案、它们不起作用的原因以及预期结果。另请参见:堆栈溢出问题检查表。我认为您已经非常清楚地解释了任务是什么,以及输出应该是什么。谢谢!。你尝试过解决这个问题吗?如果是,你能把它们包括在内吗?什么不起作用?在StackOverflow上结束问题的原因之一是,询问代码的问题必须表明对正在解决的问题的最低理解。包括尝试过的解决方案、它们不起作用的原因以及预期结果。另请参见:堆栈溢出问题检查表。我认为您已经非常清楚地解释了任务是什么,以及输出应该是什么。谢谢!。你尝试过解决这个问题吗?如果是,你能把它们包括在内吗?他们什么地方不管用?