循环原语

有几个原语旨在执行典型的循环功能,可能有助于替代某个循环语句。例如,以下语句在功能上与上面的代码相同:

var total=sigma(n*n,n,1,10);

sigma 原语执行等同于数学表达式的求和

参见 sigma。

也就是说,表达式

sigma(f(x),x,x1,x2)

等同于

{
  var total=0,x;
  for(x=x1; x<=x2; x++)
    total+=f(x);
  total;
}

另一个重要的循环原语是 makelist。sigma 返回循环内创建的各个值的总和,而 makelist 返回包含每个值的列表。

参见 makelist。

例如,表达式:

makelist(x*x,x,1,10)

返回列表

[1,4,9,16,25,36,49,64,81,100]

更具体地说,表达式

makelist(f(x),x,x1,x2)

等同于

{
  var list=null,x;
  for(x=x1; x<=x2; x++)
    list=list!!f(x);
  list;
}

原语 each 与 makelist 类似,不同之处在于 each 允许你为 x 提供特定输入值的列表,而不是提供起始值和结束值。

参见 each。

也就是说,表达式

makelist(f(x),x,x1,x2)

与以下相同

each(f(x),x,x1..x2)

参见关于 For 语句