有没有办法将函数作为函数参数应用于元组成员?或者,如果不是,我可以无论如何创建一个具有任意数量参数的函数,并在其主体中将一些另一个函数应用于“尾部”,因为它将是它的参数?
最佳答案
在一般情况下,没有。对于 2 个参数的情况,您可以使用 curry
和 uncurry
Batteries extensions to Pervasives 中的函数.
或许可以用 Obj
做点什么。模块,如 printf
的内部结构做,但我会远离那个。困难在于类型系统没有给你一种表达广义curry
的类型的方法。或 uncurry
功能。类型系统不允许你“计算”一个元组的长度——一个 2 元组就是一个 2 元组,你没有办法表达 (a*b*c)
真的是(a*b)
带有一个附加组件。 printf
编译器提供了特殊支持以使类型正常工作,并导致函数类型成为格式类型的一部分(因此类似的解决方案不适用于元组)。
关于ocaml - 在 OCaml 中展开元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4486496/