计算列表中所有元素的总和

要计算数字列表的术语(float,int 或 big integer 类型)的总和,最好使用 List.sum。在其他情况下,List.fold 是最适合计算这样的总和的函数。

  1. 复数之和

在这个例子中,我们声明一个复数列表,我们计算列表中所有项的总和。

在程序开始时,添加对 System.Numerics 的引用

打开 System.Numerics

为了计算总和,我们将累加器初始化为复数 0。

let clist = [new Complex(1.0, 52.0); new Complex(2.0, -2.0); new Complex(0.0, 1.0)]

let sum = List.fold (+) (new Complex(0.0, 0.0)) clist

结果:

(3, 51)
  1. 联合类型的数量总和

假设一个列表由 union(float 或 int)类型的数组成,并且想要计算这些数字的总和。

在以下数字类型之前声明:

type number = 
| Float of float
| Int of int

计算列表类型编号的总和:

let list = [Float(1.3); Int(2); Float(10.2)]

let sum = List.fold (
                         fun acc elem -> 
                                        match elem with
                                        | Float(elem) -> acc + elem
                                        | Int(elem) -> acc + float(elem)
                        ) 0.0 list

结果:

13.5

函数的第一个参数(表示累加器)的类型为 float,第二个参数(表示列表中的项目的类型为 number)。但是在我们添加之前,当 elem 是 Int 类型时,我们需要使用模式匹配并强制转换为 float 类型。