假设有两个函数 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)))
我确信一定有更好的方法,如果您有任何建议,我将不胜感激!
看来您正在寻找apply http://docs.racket-lang.org/reference/procedures.html#%28def._%28%28lib._racket/private/base..rkt%29._apply%29%29:
(apply f (v v-arguments))
正如所解释的here http://docs.racket-lang.org/guide/application.html, the apply
功能applies将函数传递给参数列表,有效地将它们作为位置参数传递给该函数。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)