List 如何将Scheme中的函数应用于另一个函数返回的参数列表?

List 如何将Scheme中的函数应用于另一个函数返回的参数列表?,list,function,scheme,call,List,Function,Scheme,Call,假设有两个函数,f和v。进一步假设v返回一个长度为n的列表,而f正好需要n个参数。我正在Scheme中寻找将f应用于v返回的列表的正确语法 如果我使用语法(f(v-arguments)),那么我会得到一个错误,即f需要n个参数,但只接收一个参数(这是v返回的列表) 如果我使用语法(f.(v-arguments)),那么问题是传递给f的参数太多 我能做的最好的事情(对于f需要两个参数的情况)是: 我相信一定有更好的办法,如果有任何建议,我将不胜感激 您似乎在寻找: 如前所述,apply函数将函数应

假设有两个函数,f和v。进一步假设v返回一个长度为n的列表,而f正好需要n个参数。我正在Scheme中寻找将f应用于v返回的列表的正确语法

如果我使用语法
(f(v-arguments))
,那么我会得到一个错误,即f需要n个参数,但只接收一个参数(这是v返回的列表)

如果我使用语法
(f.(v-arguments))
,那么问题是传递给f的参数太多

我能做的最好的事情(对于f需要两个参数的情况)是:


我相信一定有更好的办法,如果有任何建议,我将不胜感激

您似乎在寻找:


如前所述,
apply
函数将函数应用于参数列表,有效地将它们作为位置参数传递给该函数。

@alex:您应该单击此答案旁边的复选标记,将其作为正确的参数接受。
(let ((output-of-v (v v-arguments)))
  (f (car output-of-v) (cadr output-of-v)))
(apply f (v v-arguments))