Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Array adalah kumpulan elemen data berturut-turut berukuran tetap, berbasis nol, dan dapat diubah yang semuanya merupakan jenis yang sama.
Membuat array
Anda dapat membuat array dengan beberapa cara. Anda dapat membuat array kecil dengan mencantumkan nilai berturut-turut antara [| dan |] dan dipisahkan oleh titik koma, seperti yang ditunjukkan dalam contoh berikut.
let array1 = [| 1; 2; 3 |]
Anda juga dapat menempatkan setiap elemen pada baris terpisah, dalam hal ini pemisah titik koma bersifat opsional.
let array1 =
[|
1
2
3
|]
Jenis elemen array disimpulkan dari literal yang digunakan dan harus konsisten.
// This is an array of 3 integers.
let array1 = [| 1; 2; 3 |]
// This is an array of a tuple of 3 integers.
let array2 = [| 1, 2, 3 |]
Kode berikut menyebabkan kesalahan karena 3.0 adalah float dan 1 dan 2 adalah bilangan bulat.
// Causes an error. The 3.0 (float) cannot be converted to integer implicitly.
// let array3 = [| 1; 2; 3.0 |]
Kode berikut menyebabkan kesalahan juga karena 1,2 merupakan tuple dan 3 merupakan bilangan bulat.
// Causes an error too. The 3 (integer) cannot be converted to tuple implicitly.
// let array4 = [| 1, 2; 3 |]
Anda juga dapat menggunakan ekspresi urutan untuk membuat array. Berikut ini adalah contoh yang membuat array kuadrat bilangan bulat dari 1 hingga 10.
let array3 = [| for i in 1 .. 10 -> i * i |]
Untuk membuat array di mana semua elemen diinisialisasi menjadi nol, gunakan Array.zeroCreate.
let arrayOfTenZeroes : int array = Array.zeroCreate 10
Elemen Access
Anda dapat mengakses elemen array dengan menggunakan tanda kurung siku ([ dan ]). Sintaks titik asli (.[index]) masih didukung tetapi tidak lagi direkomendasikan pada F# 6.0.
array1[0]
Indeks array dimulai pada 0.
Anda juga dapat mengakses elemen array dengan menggunakan notasi iringan, yang memungkinkan Anda menentukan subrange array. Contoh notasi iringan mengikuti.
// Accesses elements from 0 to 2.
array1[0..2]
// Accesses elements from the beginning of the array to 2.
array1[..2]
// Accesses elements from 2 to the end of the array.
array1[2..]
Saat notasi ikatan digunakan, salinan array baru dibuat.
Jenis dan modul array
Jenis semua array F# adalah jenis System.Array.NET Framework . Oleh karena itu, array F# mendukung semua fungsionalitas yang tersedia di System.Array.
ModulArray ini mendukung operasi pada array satu dimensi.
Array2DModul , Array3D, dan Array4D berisi fungsi yang mendukung operasi pada array masing-masing dua, tiga, dan empat dimensi. Anda dapat membuat array peringkat yang lebih besar dari empat dengan menggunakan System.Array.
Fungsi sederhana
Array.get mendapatkan elemen.
Array.length memberikan panjang array.
Array.set mengatur elemen ke nilai tertentu. Contoh kode berikut mengilustrasikan penggunaan fungsi-fungsi ini.
let array1 = Array.create 10 ""
for i in 0 .. array1.Length - 1 do
Array.set array1 i (i.ToString())
for i in 0 .. array1.Length - 1 do
printf "%s " (Array.get array1 i)
Outputnya sebagai berikut.
0 1 2 3 4 5 6 7 8 9
Fungsi yang membuat array
Beberapa fungsi membuat array tanpa memerlukan array yang ada.
Array.empty membuat array baru yang tidak berisi elemen apa pun.
Array.create membuat array dengan ukuran tertentu dan mengatur semua elemen ke nilai yang disediakan.
Array.init membuat array, mengingat dimensi dan fungsi untuk menghasilkan elemen.
Array.zeroCreate membuat array di mana semua elemen diinisialisasi ke nilai nol untuk jenis array. Kode berikut menunjukkan fungsi-fungsi ini.
let myEmptyArray = Array.empty
printfn "Length of empty array: %d" myEmptyArray.Length
printfn "Array of floats set to 5.0: %A" (Array.create 10 5.0)
printfn "Array of squares: %A" (Array.init 10 (fun index -> index * index))
let (myZeroArray : float array) = Array.zeroCreate 10
Outputnya sebagai berikut.
Length of empty array: 0
Area of floats set to 5.0: [|5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0; 5.0|]
Array of squares: [|0; 1; 4; 9; 16; 25; 36; 49; 64; 81|]
Array.copy membuat array baru yang berisi elemen yang disalin dari array yang ada. Perhatikan bahwa salinan adalah salinan dangkal, yang berarti bahwa jika jenis elemen adalah jenis referensi, hanya referensi yang disalin, bukan objek yang mendasar. Contoh kode berikut mengilustrasikan hal ini.
open System.Text
let firstArray : StringBuilder array = Array.init 3 (fun index -> new StringBuilder(""))
let secondArray = Array.copy firstArray
// Reset an element of the first array to a new value.
firstArray[0] <- new StringBuilder("Test1")
// Change an element of the first array.
firstArray[1].Insert(0, "Test2") |> ignore
printfn "%A" firstArray
printfn "%A" secondArray
Output kode sebelumnya adalah sebagai berikut:
[|Test1; Test2; |]
[|; Test2; |]
String Test1 hanya muncul di array pertama karena operasi pembuatan elemen baru menimpa referensi di firstArray tetapi tidak memengaruhi referensi asli ke string kosong yang masih ada di secondArray. String Test2 muncul di kedua array karena Insert operasi pada System.Text.StringBuilder jenis memengaruhi objek yang mendasar System.Text.StringBuilder , yang dirujuk di kedua array.
Array.sub menghasilkan array baru dari subrange array. Anda menentukan subrange dengan menyediakan indeks awal dan panjangnya. Kode berikut menunjukkan penggunaan Array.sub.
let a1 = [| 0 .. 99 |]
let a2 = Array.sub a1 5 10
printfn "%A" a2
Output menunjukkan bahwa subarray dimulai pada elemen 5 dan berisi 10 elemen.
[|5; 6; 7; 8; 9; 10; 11; 12; 13; 14|]
Array.append membuat array baru dengan menggabungkan dua array yang ada.
Kode berikut menunjukkan Array.append.
printfn "%A" (Array.append [| 1; 2; 3|] [| 4; 5; 6|])
Output kode sebelumnya adalah sebagai berikut.
[|1; 2; 3; 4; 5; 6|]
Array.choose memilih elemen array untuk disertakan dalam array baru. Kode berikut menunjukkan Array.choose. Perhatikan bahwa jenis elemen array tidak harus cocok dengan jenis nilai yang dikembalikan dalam jenis opsi. Dalam contoh ini, jenis elemen adalah int dan opsinya adalah hasil dari fungsi polinomial, elem*elem - 1, sebagai angka titik mengambang.
printfn "%A" (Array.choose (fun elem -> if elem % 2 = 0 then
Some(float (elem*elem - 1))
else
None) [| 1 .. 10 |])
Output kode sebelumnya adalah sebagai berikut.
[|3.0; 15.0; 35.0; 63.0; 99.0|]
Array.collect menjalankan fungsi tertentu pada setiap elemen array dari array yang ada dan kemudian mengumpulkan elemen yang dihasilkan oleh fungsi dan menggabungkannya ke dalam array baru. Kode berikut menunjukkan Array.collect.
printfn "%A" (Array.collect (fun elem -> [| 0 .. elem |]) [| 1; 5; 10|])
Output kode sebelumnya adalah sebagai berikut.
[|0; 1; 0; 1; 2; 3; 4; 5; 0; 1; 2; 3; 4; 5; 6; 7; 8; 9; 10|]
Array.concat mengambil urutan array dan menggabungkannya menjadi satu array. Kode berikut menunjukkan Array.concat.
Array.concat [ [|0..3|] ; [|4|] ]
//output [|0; 1; 2; 3; 4|]
Array.concat [| [|0..3|] ; [|4|] |]
//output [|0; 1; 2; 3; 4|]
Array.filter mengambil fungsi kondisi Boolean dan menghasilkan array baru yang hanya berisi elemen-elemen tersebut dari array input yang kondisinya benar. Kode berikut menunjukkan Array.filter.
printfn "%A" (Array.filter (fun elem -> elem % 2 = 0) [| 1 .. 10|])
Output kode sebelumnya adalah sebagai berikut.
[|2; 4; 6; 8; 10|]
Array.rev menghasilkan array baru dengan mengembalikan urutan array yang ada. Kode berikut menunjukkan Array.rev.
let stringReverse (s: string) =
System.String(Array.rev (s.ToCharArray()))
printfn "%A" (stringReverse("!dlrow olleH"))
Output kode sebelumnya adalah sebagai berikut.
"Hello world!"
Anda dapat dengan mudah menggabungkan fungsi dalam modul array yang mengubah array dengan menggunakan operator alur (|>), seperti yang ditunjukkan dalam contoh berikut.
[| 1 .. 10 |]
|> Array.filter (fun elem -> elem % 2 = 0)
|> Array.choose (fun elem -> if (elem <> 8) then Some(elem*elem) else None)
|> Array.rev
|> printfn "%A"
Outputnya adalah
[|100; 36; 16; 4|]
Array multidimensi
Array multidirektori dapat dibuat, tetapi tidak ada sintaks untuk menulis array multidmensional literal. Gunakan operator array2D untuk membuat array dari urutan urutan elemen array. Urutannya bisa berupa array atau daftar literal. Misalnya, kode berikut membuat array dua dimensi.
let my2DArray = array2D [ [ 1; 0]; [0; 1] ]
Anda juga dapat menggunakan fungsi Array2D.init untuk menginisialisasi array dari dua dimensi, dan fungsi serupa tersedia untuk array tiga dan empat dimensi. Fungsi-fungsi ini mengambil fungsi yang digunakan untuk membuat elemen. Untuk membuat array dua dimensi yang berisi elemen yang diatur ke nilai awal alih-alih menentukan fungsi, gunakan Array2D.create fungsi , yang juga tersedia untuk array hingga empat dimensi. Contoh kode berikut pertama-tama menunjukkan cara membuat array yang berisi elemen yang diinginkan, lalu menggunakan Array2D.init untuk menghasilkan array dua dimensi yang diinginkan.
let arrayOfArrays = [| [| 1.0; 0.0 |]; [|0.0; 1.0 |] |]
let twoDimensionalArray = Array2D.init 2 2 (fun i j -> arrayOfArrays[i][j])
Sintaks pengindeksan dan pemotongan array didukung untuk array hingga peringkat 4. Saat Anda menentukan indeks dalam beberapa dimensi, Anda menggunakan koma untuk memisahkan indeks, seperti yang diilustrasikan dalam contoh kode berikut.
twoDimensionalArray[0, 1] <- 1.0
Jenis array dua dimensi ditulis sebagai <type>[,] (misalnya, int[,], double[,]), dan jenis array tiga dimensi ditulis sebagai <type>[,,], dan sebagainya untuk array dimensi yang lebih tinggi.
Hanya subset fungsi yang tersedia untuk array satu dimensi yang juga tersedia untuk array multidirmani.
Irisan array dan array multidirmansional
Dalam array dua dimensi (matriks), Anda dapat mengekstrak sub-matriks dengan menentukan rentang dan menggunakan karakter kartubebas (*) untuk menentukan seluruh baris atau kolom.
// Get rows 1 to N from an NxM matrix (returns a matrix):
matrix[1.., *]
// Get rows 1 to 3 from a matrix (returns a matrix):
matrix[1..3, *]
// Get columns 1 to 3 from a matrix (returns a matrix):
matrix[*, 1..3]
// Get a 3x3 submatrix:
matrix[1..3, 1..3]
Anda dapat menguraikan array multidireksional ke dalam subarray dengan dimensi yang sama atau lebih rendah. Misalnya, Anda bisa mendapatkan vektor dari matriks dengan menentukan satu baris atau kolom.
// Get row 3 from a matrix as a vector:
matrix[3, *]
// Get column 3 from a matrix as a vector:
matrix[*, 3]
Anda dapat menggunakan sintaks pemotongan ini untuk jenis yang mengimplementasikan operator akses elemen dan metode yang kelebihan GetSlice beban. Misalnya, kode berikut membuat jenis Matriks yang membungkus array F# 2D, mengimplementasikan properti Item untuk memberikan dukungan untuk pengindeksan array, dan mengimplementasikan tiga versi GetSlice. Jika Anda dapat menggunakan kode ini sebagai templat untuk jenis matriks, Anda dapat menggunakan semua operasi pemotongan yang dijelaskan bagian ini.
type Matrix<'T>(N: int, M: int) =
let internalArray = Array2D.zeroCreate<'T> N M
member this.Item
with get(a: int, b: int) = internalArray[a, b]
and set(a: int, b: int) (value:'T) = internalArray[a, b] <- value
member this.GetSlice(rowStart: int option, rowFinish : int option, colStart: int option, colFinish : int option) =
let rowStart =
match rowStart with
| Some(v) -> v
| None -> 0
let rowFinish =
match rowFinish with
| Some(v) -> v
| None -> internalArray.GetLength(0) - 1
let colStart =
match colStart with
| Some(v) -> v
| None -> 0
let colFinish =
match colFinish with
| Some(v) -> v
| None -> internalArray.GetLength(1) - 1
internalArray[rowStart..rowFinish, colStart..colFinish]
member this.GetSlice(row: int, colStart: int option, colFinish: int option) =
let colStart =
match colStart with
| Some(v) -> v
| None -> 0
let colFinish =
match colFinish with
| Some(v) -> v
| None -> internalArray.GetLength(1) - 1
internalArray[row, colStart..colFinish]
member this.GetSlice(rowStart: int option, rowFinish: int option, col: int) =
let rowStart =
match rowStart with
| Some(v) -> v
| None -> 0
let rowFinish =
match rowFinish with
| Some(v) -> v
| None -> internalArray.GetLength(0) - 1
internalArray[rowStart..rowFinish, col]
module test =
let generateTestMatrix x y =
let matrix = new Matrix<float>(3, 3)
for i in 0..2 do
for j in 0..2 do
matrix[i, j] <- float(i) * x - float(j) * y
matrix
let test1 = generateTestMatrix 2.3 1.1
let submatrix = test1[0..1, 0..1]
printfn $"{submatrix}"
let firstRow = test1[0,*]
let secondRow = test1[1,*]
let firstCol = test1[*,0]
printfn $"{firstCol}"
Fungsi Boolean pada array
Fungsi Array.exists dan Array.exists2 elemen pengujian masing-masing dalam satu atau dua array. Fungsi-fungsi ini mengambil fungsi pengujian dan mengembalikan true jika ada elemen (atau pasangan elemen untuk Array.exists2) yang memenuhi kondisi.
Kode berikut menunjukkan penggunaan Array.exists dan Array.exists2. Dalam contoh ini, fungsi baru dibuat dengan hanya menerapkan salah satu argumen, dalam kasus ini, argumen fungsi.
let allNegative = Array.exists (fun elem -> abs (elem) = elem) >> not
printfn "%A" (allNegative [| -1; -2; -3 |])
printfn "%A" (allNegative [| -10; -1; 5 |])
printfn "%A" (allNegative [| 0 |])
let haveEqualElement = Array.exists2 (fun elem1 elem2 -> elem1 = elem2)
printfn "%A" (haveEqualElement [| 1; 2; 3 |] [| 3; 2; 1|])
Output kode sebelumnya adalah sebagai berikut.
true
false
false
true
Demikian pula, fungsi Array.forall menguji array untuk menentukan apakah setiap elemen memenuhi kondisi Boolean. Variasi Array.forall2 melakukan hal yang sama dengan menggunakan fungsi Boolean yang melibatkan elemen dua array dengan panjang yang sama. Kode berikut mengilustrasikan penggunaan fungsi-fungsi ini.
let allPositive = Array.forall (fun elem -> elem > 0)
printfn "%A" (allPositive [| 0; 1; 2; 3 |])
printfn "%A" (allPositive [| 1; 2; 3 |])
let allEqual = Array.forall2 (fun elem1 elem2 -> elem1 = elem2)
printfn "%A" (allEqual [| 1; 2 |] [| 1; 2 |])
printfn "%A" (allEqual [| 1; 2 |] [| 2; 1 |])
Output untuk contoh-contoh ini adalah sebagai berikut.
false
true
true
false
Array pencarian
Array.find mengambil fungsi Boolean dan mengembalikan elemen pertama yang fungsinya mengembalikan true, atau menaikkan System.Collections.Generic.KeyNotFoundException jika tidak ada elemen yang memenuhi kondisi yang ditemukan.
Array.findIndex seperti Array.find, kecuali bahwa ia mengembalikan indeks elemen alih-alih elemen itu sendiri.
Kode berikut menggunakan Array.find dan Array.findIndex untuk menemukan angka yang merupakan kubus persegi dan sempurna yang sempurna.
let arrayA = [| 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 = Array.find (fun elem -> isPerfectSquare elem && isPerfectCube elem) arrayA
let index = Array.findIndex (fun elem -> isPerfectSquare elem && isPerfectCube elem) arrayA
printfn "The first element that is both a square and a cube is %d and its index is %d." element index
Outputnya sebagai berikut.
The first element that is both a square and a cube is 64 and its index is 62.
Array.tryFind seperti Array.find, kecuali bahwa hasilnya adalah jenis opsi, dan mengembalikan None jika tidak ada elemen yang ditemukan.
Array.tryFind harus digunakan alih-alih Array.find ketika Anda tidak tahu apakah elemen yang cocok berada dalam array. Demikian pula, Array.tryFindIndex seperti Array.findIndex kecuali bahwa jenis opsi adalah nilai yang dikembalikan. Jika tidak ada elemen yang ditemukan, opsinya adalah None.
Kode berikut menunjukkan penggunaan Array.tryFind. Kode ini tergantung pada kode sebelumnya.
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 lookForCubeAndSquare array1 =
let result = Array.tryFind (fun elem -> isPerfectSquare elem && isPerfectCube elem) array1
match result with
| Some x -> printfn "Found an element: %d" x
| None -> printfn "Failed to find a matching element."
lookForCubeAndSquare [| 1 .. 10 |]
lookForCubeAndSquare [| 100 .. 1000 |]
lookForCubeAndSquare [| 2 .. 50 |]
Outputnya sebagai berikut.
Found an element: 1
Found an element: 729
Failed to find a matching element.
Gunakan Array.tryPick saat Anda perlu mengubah elemen selain menemukannya. Hasilnya adalah elemen pertama yang fungsinya mengembalikan elemen yang diubah sebagai nilai opsi, atau None jika tidak ada elemen tersebut yang ditemukan.
Kode berikut menunjukkan penggunaan Array.tryPick. Dalam hal ini, alih-alih ekspresi lambda, beberapa fungsi pembantu lokal didefinisikan untuk menyederhanakan kode.
let findPerfectSquareAndCube array1 =
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 Array.tryPick testElement array1 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 |]
Outputnya sebagai berikut.
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.
Melakukan komputasi pada array
Fungsi mengembalikan Array.average rata-rata setiap elemen dalam array. Ini terbatas pada jenis elemen yang mendukung pembagian yang tepat dengan bilangan bulat, yang mencakup jenis titik mengambang tetapi bukan jenis integral. Fungsi mengembalikan Array.averageBy rata-rata hasil panggilan fungsi pada setiap elemen. Untuk array jenis integral, Anda dapat menggunakan Array.averageBy dan memiliki fungsi mengonversi setiap elemen menjadi jenis titik mengambang untuk komputasi.
Gunakan Array.max atau Array.min untuk mendapatkan elemen maksimum atau minimum, jika jenis elemen mendukungnya. Demikian pula, Array.maxBy dan Array.minBy memungkinkan fungsi dijalankan terlebih dahulu, mungkin untuk mengubah ke jenis yang mendukung perbandingan.
Array.sum menambahkan elemen array, dan Array.sumBy memanggil fungsi pada setiap elemen dan menambahkan hasilnya bersama-sama.
Untuk menjalankan fungsi pada setiap elemen dalam array tanpa menyimpan nilai yang dikembalikan, gunakan Array.iter. Untuk fungsi yang melibatkan dua array dengan panjang yang sama, gunakan Array.iter2. Jika Anda juga perlu menyimpan array hasil fungsi, gunakan Array.map atau Array.map2, yang beroperasi pada dua array sekaligus.
Variasi Array.iteri dan Array.iteri2 memungkinkan indeks elemen terlibat dalam komputasi; hal yang sama berlaku untuk Array.mapi dan Array.mapi2.
Fungsi Array.fold, , Array.foldBackArray.reduce, Array.reduceBack, Array.scan, dan Array.scanBack menjalankan algoritma yang melibatkan semua elemen array. Demikian pula, variasi Array.fold2 dan Array.foldBack2 melakukan komputasi pada dua array.
Fungsi-fungsi ini untuk melakukan komputasi sesuai dengan fungsi dengan nama yang sama dalam modul Daftar. Untuk contoh penggunaan, lihat Daftar.
Mengubah array
Array.set mengatur elemen ke nilai tertentu.
Array.fill mengatur rentang elemen dalam array ke nilai tertentu. Kode berikut memberikan contoh Array.fill.
let arrayFill1 = [| 1 .. 25 |]
Array.fill arrayFill1 2 20 0
printfn "%A" arrayFill1
Outputnya sebagai berikut.
[|1; 2; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 0; 23; 24; 25|]
Anda dapat menggunakan Array.blit untuk menyalin sub bagian dari satu array ke array lain.
Mengonversi ke dan dari jenis lain
Array.ofList membuat array dari daftar.
Array.ofSeq membuat array dari urutan.
Array.toList dan Array.toSeq konversi ke jenis koleksi lain ini dari jenis array.
Urutkan array
Gunakan Array.sort untuk mengurutkan array dengan menggunakan fungsi perbandingan generik. Gunakan Array.sortBy untuk menentukan fungsi yang menghasilkan nilai, yang disebut sebagai kunci, untuk mengurutkan dengan menggunakan fungsi perbandingan generik pada kunci. Gunakan Array.sortWith jika Anda ingin memberikan fungsi perbandingan kustom.
Array.sort, Array.sortBy, dan Array.sortWith semua mengembalikan array yang diurutkan sebagai array baru. Variasi Array.sortInPlace, Array.sortInPlaceBy, dan Array.sortInPlaceWith ubah array yang ada alih-alih mengembalikan yang baru.
Array dan tuple
Fungsi Array.zip dan Array.unzip mengonversi array pasangan tuple menjadi tuple array dan sebaliknya.
Array.zip3 dan Array.unzip3 serupa kecuali bahwa mereka bekerja dengan tuple tiga elemen atau tuple dari tiga array.
Komputasi paralel pada array
Modul Array.Parallel berisi fungsi untuk melakukan komputasi paralel pada array. Modul ini tidak tersedia dalam aplikasi yang menargetkan versi .NET Framework sebelum versi 4.