loop / ploop

语法

loop(func, args…)

参数

func 是一个函数。

argsfunc 的参数。

详情

loop 高阶函数与 each 高阶函数很相似,区别在于函数返回值的格式和类型。ploop 是相应的并行版本。 关于并行函数调用请参考 分布式计算

each 高阶函数根据每个子任务计算结果的数据类型和形式,决定返回值的数据形式。若所有子任务的数据类型和形式都相同, 则返回 Vector 或 Matrix,否则返回 Tuple。而 loop 总是返回 Tuple。

例子

下例中,loop 返回一个包含两种数据格式的元组:标量和向量。

$ loop(call{, 3 4 5}, (sum, log));
(12,[1.098612,1.386294,1.609438])
// call{,x} 是一个将另一个函数作为参数的部分应用。

$ loop(call{, 3 4 5}, (log, sum));
([1.098612,1.386294,1.609438],12)

下例中,loop 计算表中每一列中的最大值。

$ t = table(1 2 3 as id, 4 5 6 as value, `IBM`MSFT`GOOG as name);
$ t;

id

value

name

1

4

IBM

2

5

MSFT

3

6

GOOG

$ loop(max, t.values());
(3,6,"MSFT")