Array operations that can be applied in either direction.
Set the element at an index in a direction.
Array.fromList [ "I", "am", "ok" ]
|> Array.replaceAt 2 FirstToLast "confusion"
--> Array.fromList [ "I", "am", "confusion" ]
Array.fromList [ "I", "am", "ok" ]
|> Array.replaceAt 1 LastToFirst "feel"
--> Array.fromList [ "I", "feel", "ok" ]If the index is out of range, the array is unaltered.
Array.fromList [ "I", "am", "ok" ]
|> Array.replaceAt -1 FirstToLast "is"
--> Array.fromList [ "I", "am", "ok" ]Kick an element out of an Array at a given index in a direction.
Array.fromList [ 'a', 'a', 'b' ]
|> Array.removeAt 1 FirstToLast
--> Array.fromList [ 'a', 'b', 'c', 'd' ]
Array.fromList [ 'a', 'b', 'c', 'd' ]
|> Array.removeAt 0 LastToFirst
--> Array.fromList [ 'a', 'b', 'c' ]If the index is out of bounds, nothing is changed.
Array.removeAt -1 FirstToLast
(Array.fromList [ 'a', 'a', 'b' ])
--> Array.fromList [ 'a', 'a', 'b' ]
Array.removeAt 100 FirstToLast
(Array.fromList [ 'a', 'a', 'b' ])
--> Array.fromList [ 'a', 'a', 'b' ]Put an element in an Array at a given index in a direction.
Array.fromList [ 'a', 'c', 'd' ]
|> Array.insertAt 1 FirstToLast 'b'
--> Array.fromList [ 'a', 'b', 'c', 'd' ]
Array.fromList [ 'a', 'c', 'd' ]
|> Array.insertAt 2 LastToFirst 'b'
--> Array.fromList [ 'a', 'b', 'c', 'd' ]If the index is out of bounds, nothing gets inserted.
Array.fromList [ 'a', 'c', 'd' ]
|> Array.insertAt -1 FirstToLast 'b'
--> Array.fromList [ 'a', 'c', 'd' ]
Array.fromList [ 'a', 'c', 'd' ]
|> Array.insertAt 10 FirstToLast 'b'
--> Array.fromList [ 'a', 'c', 'd' ]Reduce an Array in a direction.
Array.fold FirstToLast (++) ""
(Array.fromList [ "l", "i", "v", "e" ])
--> "live"
Array.fold LastToFirst (++) ""
(Array.fromList [ "l", "i", "v", "e" ])
--> "evil"Keep the order if FirstToLast, reverse if LastToFirst.
Array.fromList [ 1, 2, 3 ]
|> Array.order LastToFirst
--> Array.fromList [ 3, 2, 1 ]
Array.fromList [ 1, 2, 3 ]
|> Array.order FirstToLast
--> Array.fromList [ 1, 2, 3 ]A certain number of elements from one side.
Array.fromList [ 1, 2, 3, 4, 5, 6 ]
|> Array.take 4 FirstToLast
|> Array.take 2 LastToFirst
--> Array.fromList [ 3, 4 ]
Array.fromList [ 1, 2, 3 ]
|> Array.take 100 FirstToLast
--> Array.fromList [ 1, 2, 3 ]
Array.fromList [ 1, 2, 3 ]
|> Array.take -100 FirstToLast
--> Array.emptyAfter a certain number of elements from one side.
Array.fromList [ 1, 2, 3, 4, 5, 6 ]
|> Array.drop 2 LastToFirst
--> Array.fromList [ 1, 2, 3, 4 ]
Array.fromList [ 1, 2, 3 ]
|> Array.drop 100 FirstToLast
--> Array.emptyNothing is dropped if the index is negative.
Array.drop -1 FirstToLast
(Array.fromList [ 1, 2, 3 ])
--> Array.fromList [ 1, 2, 3 ]Split the Array into equal-sized chunks. The elements left over on one side are in less.
Array.fromList [ 1, 2, 3, 4, 5, 6, 7 ]
|> Array.group 3 FirstToLast
--> { groups =
--> [ [ 1, 2, 3 ], [ 4, 5, 6 ] ]
--> |> List.map Array.fromList
--> |> Array.fromList
--> , less = Array.fromList [ 7 ]
--> }
Array.fromList [ 1, 2, 3, 4, 5, 6, 7 ]
|> Array.group 3 LastToFirst
--> { less = Array.fromList [ 1 ]
--> , groups =
--> [ [ 2, 3, 4 ], [ 5, 6, 7 ] ]
--> |> List.map Array.fromList
--> |> Array.fromList
--> }Append multiple Arrays in a direction.
Array.concat FirstToLast
[ Array.fromList [ 2, 4, 6 ]
, Array.fromList [ 8 ]
, Array.fromList [ 10, 12, 14 ]
]
--> Array.fromList
--> [ 2, 4, 6, 8, 10, 12, 14 ]
Array.concat LastToFirst
[ Array.fromList [ 2, 4, 6 ]
, Array.fromList [ 8 ]
, Array.fromList [ 10, 12, 14 ]
]
--> Array.fromList
--> [ 14, 12, 10, 8, 6, 4, 2 ]
Justthe element at an index in a direction.Nothing, if the index is out of range.