Seq.fold<'T,'State> Function (F#)

Applies a function to each element of the collection, threading an accumulator argument through the computation. If the input function is f and the elements are i0...iN, then this function computes f (... (f s i0)...) iN.

Namespace/Module Path: Microsoft.FSharp.Collections.Seq

Assembly: FSharp.Core (in FSharp.Core.dll)

// Signature:
Seq.fold : ('State -> 'T -> 'State) -> 'State -> seq<'T> -> 'State

// Usage:
Seq.fold folder state source


  • folder
    Type: 'State -> 'T -> 'State

    A function that updates the state with each element from the sequence.

  • state
    Type: 'State

    The initial state.

  • source
    Type: seq<'T>

    The input sequence.





Thrown when the input sequence is null.

Return Value

The final result of the computation.


This function is named Fold in compiled assemblies. If you are accessing the function from a language other than F#, or through reflection, use this name.


The following code shows how to use Seq.fold to implement a function that computes the sum of the elements of a sequence.

let sumSeq sequence1 = Seq.fold (fun acc elem -> acc + elem) 0 sequence1
Seq.init 10 (fun index -> index * index)
|> sumSeq
|> printfn "The sum of the elements is %d."


The sum of the elements is 285.


Windows 7, Windows Vista SP2, Windows XP SP3, Windows XP x64 SP2, Windows Server 2008 R2, Windows Server 2008 SP2, Windows Server 2003 SP2

Version Information

F# Runtime

Supported in: 2.0, 4.0


Supported in: 3

See Also


Collections.Seq Module (F#)

Microsoft.FSharp.Collections Namespace (F#)