Table of contents
TOC
Collapse the table of content
Expand the table of content

List.findIndex<'T> Function (F#)

Den Delimarsky|Last Updated: 8/18/2017
|
1 Contributor

Returns the index of the first element in the list that satisfies the given predicate. Raises System.Collections.Generic.KeyNotFoundException if no such element exists.

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

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

Syntax

// Signature:
List.findIndex : ('T -> bool) -> 'T list -> int

// Usage:
List.findIndex predicate list

Parameters

predicate Type: 'T ->bool

The function to test the input elements.

list Type: 'Tlist

The input list.

Exceptions

ExceptionCondition
ArgumentExceptionThrown if the predicate evaluates to false for all the elements of the list.

Return Value

The index of the first element that satisfies the predicate.

Remarks

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

Example

The following code shows how to use List.findIndex and compares its behavior to that of List.find.

let list1 = [ 2 .. 100 ]
let delta = 1.0e-10
let isPerfectSquare (x:int) =
    let y = sqrt (float x)
    abs(y - round y) < delta
let isPerfectCube (x:int) =
    let y = System.Math.Pow(float x, 1.0/3.0)
    abs(y - round y) < delta
let element = List.find (fun elem -> isPerfectSquare elem && isPerfectCube elem) list1
let index = List.findIndex (fun elem -> isPerfectSquare elem && isPerfectCube elem) list1
printfn "The first element that is both a square and a cube is %d and its index is %d." element index

Output

The first element that is both a square and a cube is 64 and its index is 62.

Platforms

Windows 8, Windows 7, Windows Server 2012, Windows Server 2008 R2

Version Information

F# Core Library Versions

Supported in: 2.0, 4.0, Portable

See Also

Collections.List Module (F#)

Microsoft.FSharp.Collections Namespace (F#)

© 2017 Microsoft