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

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

Returns the index of the first element for which the given function returns `true`.

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

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

## Syntax

``````// Signature:
Seq.findIndex : ('T -> bool) -> seq<'T> -> int

// Usage:
Seq.findIndex predicate source
``````

#### Parameters

predicate Type: 'T ->bool

A function to test whether the index of a particular element should be returned.

source Type: seq<'T>

The input sequence.

## Exceptions

ExceptionCondition
ArgumentNullExceptionThrown when the input sequence is null
KeyNotFoundExceptionThrown if no element returns true when evaluated by the predicate

## Return Value

The index of the first element for which the given function returns true.

## Remarks

This function is named `FindIndex` 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 example shows how to use Seq.findIndex.

``````
let seqA = [| 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 = Seq.find (fun elem -> isPerfectSquare elem && isPerfectCube elem) seqA
let index = Seq.findIndex (fun elem -> isPerfectSquare elem && isPerfectCube elem) seqA
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