我正在探索 OCaml 函数的“高级”用法,我想知道如何编写具有可变数量参数的函数。
例如,这样的函数:
let sum x1,x2,x3,.....,xn = x1+x2,+x3....+xn
最佳答案
使用一点类型黑客技术,当然:
let sum f = f 0
let arg x acc g = g (acc + x)
let z a = a
以及(ab)用法:
# sum z;;
- : int = 0
# sum (arg 1) z;;
- : int = 1
# sum (arg 1) (arg 2) (arg 3) z;;
- : int = 6
很整洁,是吗?但不要使用这个 - 这是一个 hack。
有关说明,请参阅 this page (就SML而言,但思想是一样的)。
关于function - 具有可变参数数量的 OCaml 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26475765/