Zulip Chat Archive
Stream: Is there code for X?
Topic: Array counterparts of `List.enum`
Asei Inoue (Jan 06 2024 at 09:01):
example : [1, 2, 3].enum = [(0,1),(1,2),(2,3)] := by rfl
variable (α : Type)
-- I want a array version of `List.enum`
def Array.enum (ar : Array α) : Array (Nat × α) :=
let indexes := List.range ar.size |> List.toArray
Array.zip indexes ar
#eval #[1, 2, 3].enum
Asei Inoue (Jan 06 2024 at 09:03):
After searching the library, it appears that there is no Array counterpart to the List.enum
function. Am I missing something?
Asei Inoue (Jan 06 2024 at 09:04):
If you know the List.range
counterpart of Array
, please let me know.
Damiano Testa (Jan 06 2024 at 09:11):
I think that docs#Array.range exists. I do not know about enum
.
Asei Inoue (Jan 06 2024 at 09:13):
@Damiano Testa
Thanks.
import Std.Data.Array.Init.Basic
def Array.enum (ar : Array α) : Array (Nat × α) :=
let indexes := Array.range ar.size
Array.zip indexes ar
#eval #[1, 2, 3].enum
Damiano Testa (Jan 06 2024 at 09:15):
In that same file, there is also this:
#eval Array.zipWithIndex #[3, 2, 1] -- #[(3, 0), (2, 1), (1, 2)]
Asei Inoue (Jan 06 2024 at 09:17):
Thank you. The zipWithIndex
is very close to what I want, but in a different order of elements than the enum
.
Asei Inoue (Jan 06 2024 at 09:37):
If Array.enum
is indeed missing from the library, I thought it should be added.
Last updated: May 02 2025 at 03:31 UTC