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
功能适用的功能,参数列表,有效地传递它们的位置参数给这个函数.