計算列表中所有元素的總和

要計算數字列表的術語(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 型別。