有没有办法将函数应用于元组成员作为函数参数?或者,如果没有,我可以无论如何创建一个具有任意数量的参数的函数,并在其正文中将另一个函数应用于"尾部",因为它将是它的参数?
在一般情况下,没有.对于2个参数的情况,您可以使用电池扩展到Pervasives中的curry
和uncurry
函数.
这也许是可能的煮东西了的Obj
模块,如的内部printf
做的,但我会留远远离那.难点在于类型系统没有为您提供表达广义curry
或uncurry
函数类型的方法.类型系统不允许你"计算"元组的长度 - 一个2元组是一个2元组,你没有办法表达它(a*b*c)
真的(a*b)
有一个额外的组件. printf
得到编译器的特殊支持,使类型正确运行,并导致函数类型成为格式类型的一部分(因此类似的解决方案不适用于元组).