List.tryPick<'T,'U> Function (F#)
Applies the given function to successive elements, returning the first result where function returns Some for some value. If no such element exists then return None.
Namespace/Module Path: Microsoft.FSharp.Collections.List
Assembly: FSharp.Core (in FSharp.Core.dll)
// Signature:
List.tryPick : ('T -> 'U option) -> 'T list -> 'U option
// Usage:
List.tryPick chooser list
Parameters
chooser
Type: 'T -> 'U optionThe function to generate options from the elements.
list
Type: 'T listThe input list.
Return Value
The first resulting value or None.
Remarks
This function is named TryPick 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 List.tryPick.
let findPerfectSquareAndCube list1 =
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
// intFunction : (float -> float) -> int -> int
// Allows the use of a floating point function with integers.
let intFunction function1 number = int (round (function1 (float number)))
let cubeRoot x = System.Math.Pow(x, 1.0/3.0)
// testElement: int -> (int * int * int) option
// Test an element to see whether it is a perfect square and a perfect
// cube, and, if so, return the element, square root, and cube root
// as an option value. Otherwise, return None.
let testElement elem =
if isPerfectSquare elem && isPerfectCube elem then
Some(elem, intFunction sqrt elem, intFunction cubeRoot elem)
else None
match List.tryPick testElement list1 with
| Some (n, sqrt, cuberoot) ->
printfn "Found an element %d with square root %d and cube root %d." n sqrt cuberoot
| None ->
printfn "Did not find an element that is both a perfect square and a perfect cube."
findPerfectSquareAndCube [ 1 .. 10 ]
findPerfectSquareAndCube [ 2 .. 100 ]
findPerfectSquareAndCube [ 100 .. 1000 ]
findPerfectSquareAndCube [ 1000 .. 10000 ]
findPerfectSquareAndCube [ 2 .. 50 ]
Output
Found an element 1 with square root 1 and cube root 1. Found an element 64 with square root 8 and cube root 4. Found an element 729 with square root 27 and cube root 9. Found an element 4096 with square root 64 and cube root 16. Did not find an element that is both a perfect square and a perfect cube.
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
See Also
Reference
Microsoft.FSharp.Collections Namespace (F#)
Change History
Date |
History |
Reason |
---|---|---|
August 2010 |
Added code example. |
Information enhancement. |