Array.scanBack<'T,'State> Function (F#)
Like Array.foldBack, but returns both the intermediate and final results.
Namespace/Module Path: Microsoft.FSharp.Collections.Array
Assembly: FSharp.Core (in FSharp.Core.dll)
// Signature:
Array.scanBack : ('T -> 'State -> 'State) -> 'T [] -> 'State -> 'State []
// Usage:
Array.scanBack folder array state
Parameters
folder
Type: 'T -> 'State -> 'StateThe function to update the state given the input elements.
array
Type: 'T []The input array.
state
Type: 'StateThe initial state.
Return Value
The array of state values.
Remarks
This function is named ScanBack in compiled assemblies. If you are accessing the function from a language other than F#, or through reflection, use this name.
Example
The following code contrasts the behavior of Array.scan and Array.scanBack.
// An array of functions that transform
// integers. (int -> int)
let ops1 =
[| fun x -> x + 1
fun x -> x + 2
fun x -> x - 5 |]
let ops2 =
[| fun x -> x + 1
fun x -> x * 5
fun x -> x * x |]
// Compare scan and scanBack, which apply the
// operations in the opposite order.
let compareOpOrder ops x0 =
let xs1 = Array.scan (fun x op -> op x) x0 ops
let xs2 = Array.scanBack (fun op x -> op x) ops x0
// Print the intermediate results
let xs = Array.zip xs1 (Array.rev xs2)
for (x1, x2) in xs do
printfn "%10d %10d" x1 x2
printfn ""
compareOpOrder ops1 10
compareOpOrder ops2 10
Output
10 10 11 5 13 7 8 8 10 10 11 100 55 500 3025 501
Platforms
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
Silverlight
Supported in: 3