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

ale*_*lex 4 scheme function list call

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

如果我使用语法(f (v v-arguments))然后我得到一个错误关于f期望n个参数但只接收一个参数(这是由v返回的列表).

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

我能做的最好(对于f期望两个参数的情况)是这样的:

(let ((output-of-v (v v-arguments)))
  (f (car output-of-v) (cadr output-of-v)))
Run Code Online (Sandbox Code Playgroud)

我相信一定有更好的方法,我会感激任何建议!

Fré*_*idi 10

看来你正在寻找申请:

(apply f (v v-arguments))
Run Code Online (Sandbox Code Playgroud)

正如解释在这里,该apply功能适用的功能,参数列表,有效地传递它们的位置参数给这个函数.