總結一個清單
該降低函式可以被用來概括在一個列表中的元素。
(reduce '+ '(1 2 3 4))
;;=> 10
預設情況下, reduce 執行左關聯縮減,這意味著總和 10 計算為
(+ (+ (+ 1 2) 3) 4)
首先對前兩個元素求和,然後將結果(3)加到下一個元素(3)上以產生 6,然後將其加到 4,以產生最終結果。
這比使用 apply 更安全 (例如,在 **(apply’+’(1 2 3 4))中,**因為可以傳遞給 apply 的引數列表的長度是有限的(請參閱 call-arguments-limit ), reduce 將起作用只有兩個引數的函式。
通過指定 from-end 關鍵字引數, reduce 將在另一個方向上處理列表,這意味著總和以相反的順序計算。那是
(reduce '+ (1 2 3 4) :from-end t)
;;=> 10
正在計算
(+ 1 (+ 2 (+ 3 4)))