# Collections.List Module (F#)

Basic operations on lists.

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

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

```
module List
```

## Remarks

For an overview of lists in F#, see Lists (F#).

## Values

Value |
Description |
---|---|

append : 'T list -> 'T list -> 'T list |
Returns a new list that contains the elements of the first list followed by elements of the second. |

average : 'T list -> ^T |
Returns the average of the elements in the list. |

averageBy : ('T -> ^U) -> 'T list -> ^U |
Returns the average of the elements generated by applying the function to each element of the list. |

choose : ('T -> 'U option) -> 'T list -> 'U list |
Applies the given function to each element of the list. Returns the list comprised of the results for each element where the function returns Some. |

collect : ('T -> 'U list) -> 'T list -> 'U list |
For each element of the list, applies the given function. Concatenates all the results and return the combined list. |

concat : seq<'T list> -> 'T list |
Returns a new list that contains the elements of each the lists in order. |

empty : 'T list |
Returns an empty list of the given type. |

exists : ('T -> bool) -> 'T list -> bool |
Tests if any element of the list satisfies the given predicate. |

exists2 : ('T1 -> 'T2 -> bool) -> 'T1 list -> 'T2 list -> bool |
Tests if any pair of corresponding elements of the lists satisfies the given predicate. |

filter : ('T -> bool) -> 'T list -> 'T list |
Returns a new collection containing only the elements of the collection for which the given predicate returns true. |

find : ('T -> bool) -> 'T list -> 'T |
Returns the first element for which the given function returns true. |

findIndex : ('T -> bool) -> 'T list -> int |
Returns the index of the first element in the list that satisfies the given predicate. |

fold : ('State -> 'T -> 'State) -> 'State -> 'T list -> 'State |
Applies a function to each element of the collection, threading an accumulator argument through the computation. This function takes the second argument, and applies the function to it and the first element of the list. Then, it passes this result into the function along with the second element, and so on. Finally, it returns the final result. If the input function is f and the elements are i0...iN, then this function computes f (... (f s i0) i1 ...) iN. |

fold2 : ('State -> 'T1 -> 'T2 -> 'State) -> 'State -> 'T1 list -> 'T2 list -> 'State |
Applies a function to corresponding elements of two collections, threading an accumulator argument through the computation. The collections must have identical sizes. If the input function is f and the elements are i0...iN and j0...jN, then this function computes f (... (f s i0 j0)...) iN jN. |

foldBack : ('T -> 'State -> 'State) -> 'T list -> 'State -> 'State |
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 computes f i0 (...(f iN s)). |

foldBack2 : ('T1 -> 'T2 -> 'State -> 'State) -> 'T1 list -> 'T2 list -> 'State -> 'State |
Applies a function to corresponding elements of two collections, threading an accumulator argument through the computation. The collections must have identical sizes. If the input function is f and the elements are i0...iN and j0...jN, then this function computes f i0 j0 (...(f iN jN s)). |

forall : ('T -> bool) -> 'T list -> bool |
Tests if all elements of the collection satisfy the given predicate. |

forall2 : ('T1 -> 'T2 -> bool) -> 'T1 list -> 'T2 list -> bool |
Tests if all corresponding elements of the collection satisfy the given predicate pairwise. |

head : 'T list -> 'T |
Returns the first element of the list. |

init : int -> (int -> 'T) -> 'T list |
Creates a list by calling the given generator on each index. |

isEmpty : 'T list -> bool |
Returns true if the list contains no elements, false otherwise. |

iter : ('T -> unit) -> 'T list -> unit |
Applies the given function to each element of the collection. |

iter2 : ('T1 -> 'T2 -> unit) -> 'T1 list -> 'T2 list -> unit |
Applies the given function to two collections simultaneously. The collections must have identical size. |

iteri : (int -> 'T -> unit) -> 'T list -> unit |
Applies the given function to each element of the collection. The integer passed to the function indicates the index of element. |

iteri2 : (int -> 'T1 -> 'T2 -> unit) -> 'T1 list -> 'T2 list -> unit |
Applies the given function to two collections simultaneously. The collections must have identical size. The integer passed to the function indicates the index of element. |

length : 'T list -> int |
Returns the length of the list. |

map : ('T -> 'U) -> 'T list -> 'U list |
Creates a new collection whose elements are the results of applying the given function to each of the elements of the collection. |

map2 : ('T1 -> 'T2 -> 'U) -> 'T1 list -> 'T2 list -> 'U list |
Creates a new collection whose elements are the results of applying the given function to the corresponding elements of the two collections pairwise. |

map3 : ('T1 -> 'T2 -> 'T3 -> 'U) -> 'T1 list -> 'T2 list -> 'T3 list -> 'U list |
Creates a new collection whose elements are the results of applying the given function to the corresponding elements of the three collections simultaneously. |

mapi : (int -> 'T -> 'U) -> 'T list -> 'U list |
Creates a new collection whose elements are the results of applying the given function to each of the elements of the collection. The integer index passed to the function indicates the index (from 0) of element being transformed. |

mapi2 : (int -> 'T1 -> 'T2 -> 'U) -> 'T1 list -> 'T2 list -> 'U list |
Like List.mapi, but mapping corresponding elements from two lists of equal length. |

max : 'T list -> 'T |
Return the greatest of all elements of the list, compared by using Operators.max. |

maxBy : ('T -> 'U) -> 'T list -> 'T |
Returns the greatest of all elements of the list, compared by using Operators.max on the function result. |

min : 'T list -> 'T |
Returns the lowest of all elements of the list, compared by using Operators.min. |

minBy : ('T -> 'U) -> 'T list -> 'T |
Returns the lowest of all elements of the list, compared by using Operators.min on the function result |

nth : 'T list -> int -> 'T |
Indexes into the list. The first element has index 0. |

ofArray : 'T [] -> 'T list |
Creates a list from the given array. |

ofSeq : seq<'T> -> 'T list |
Creates a new list from the given enumerable object. |

partition : ('T -> bool) -> 'T list * 'T list |
Splits the collection into two collections, containing the elements for which the given predicate returns true and false respectively. |

permute : (int -> int) -> 'T list -> 'T list |
Returns a list with all elements permuted according to the specified permutation. |

pick : ('T -> 'U option) -> 'T list -> 'U |
Applies the given function to successive elements, returning the first result where function returns Some for some value. |

reduce : ('T -> 'T -> 'T) -> 'T list -> 'T |
Applies a function to each element of the collection, threading an accumulator argument through the computation. This function applies the specified function to the first two elements of the list. It then passes this result into the function along with the third element, and so on. Finally, it returns the final result. If the input function is f and the elements are i0...iN, then this function computes f (... (f i0 i1) i2 ...) iN. |

reduceBack : ('T -> 'T -> 'T) -> 'T list -> 'T |
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 i0 (...(f iN-1 iN)). |

replicate : (int -> 'T -> 'T list) |
Creates a list by calling the given generator on each index. |

rev : 'T list -> 'T list |
Returns a new list with the elements in reverse order. |

scan : ('State -> 'T -> 'State) -> 'State -> 'T list -> 'State list |
Applies a function to each element of the collection, threading an accumulator argument through the computation. This function takes the second argument, and applies the specified function to it and the first element of the list. Then, it passes this result into the function along with the second element and so on. Finally, it returns the list of intermediate results and the final result. |

scanBack : ('T -> 'State -> 'State) -> 'T list -> 'State -> 'State list |
Like foldBack, but returns both the intermediate and final results |

sort : 'T list -> 'T list |
Sorts the given list using Operators.compare. |

sortBy : ('T -> 'Key) -> 'T list -> 'T list |
Sorts the given list using keys given by the given projection. Keys are compared using Operators.compare. |

sortWith : ('T -> 'T -> int) -> 'T list -> 'T list |
Sorts the given list using the given comparison function. |

sum : ^T list -> ^T |
Returns the sum of the elements in the list. |

sumBy : ('T -> ^U) -> 'T list -> ^U |
Returns the sum of the results generated by applying the function to each element of the list. |

tail : 'T list -> 'T list |
Returns the input list without the first element. |

toArray : 'T list -> 'T [] |
Creates an array from the given list. |

toSeq : 'T list -> seq<'T> |
Views the given list as a sequence. |

tryFind : ('T -> bool) -> 'T list -> 'T option |
Returns the first element for which the given function returns true. Return None if no such element exists. |

tryFindIndex : ('T -> bool) -> 'T list -> int option |
Returns the index of the first element in the list that satisfies the given predicate. Return None if no such element exists. |

tryPick : ('T -> 'U option) -> 'T list -> 'U option |
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. |

unzip : ('T1 * 'T2) list -> 'T1 list * 'T2 list |
Splits a list of pairs into two lists. |

unzip3 : ('T1 * 'T2 * 'T3) list -> 'T1 list * 'T2 list * 'T3 list |
Splits a list of triples into three lists. |

zip : 'T1 list -> 'T2 list -> ('T1 * 'T2) list |
Combines the two lists into a list of pairs. The two lists must have equal lengths. |

zip3 : 'T1 list -> 'T2 list -> 'T3 list -> ('T1 * 'T2 * 'T3) list |
Combines the three lists into a list of triples. The lists must have equal lengths. |

## 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#)