function - 具有可变参数数量的 OCaml 函数

标签 function ocaml variadic-functions

我正在探索 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/

相关文章:

oracle - 获取Oracle PL/SQL中调用过程或函数的名称

types - 有没有办法使用 OCaml 类型系统来强制执行有关值的规则?

internationalization - OCaml 中的 Gettext 支持

ios - Objective-C - #define 使用 __VA_ARGS__

c++ - 使用可变参数 lambda 迭代可变参数函数模板的参数

c++ - std::bind 和/或 std::forward 的语义

javascript - 这两个比较有什么区别?

javascript - 如何通过 JavaScript 调用 PHP 函数?

algorithm - 将此算法转换为不使用递归的过程

javascript - 如何创建和调用接受三个参数(页面长度)并计算 block 面积的 JavaScript 函数