Operations using indexes #
Given a list as = [a₀, a₁, ...]
and a function f : (i : Nat) → α → (h : i < as.length) → β
, returns the list
[f 0 a₀ ⋯, f 1 a₁ ⋯, ...]
.
Equations
- as.mapFinIdx f = List.mapFinIdx.go as f as #[] ⋯
Instances For
Auxiliary for mapFinIdx
:
mapFinIdx.go [a₀, a₁, ...] acc = acc.toList ++ [f 0 a₀ ⋯, f 1 a₁ ⋯, ...]
Equations
- List.mapFinIdx.go as f [] x x_1 = x.toList
- List.mapFinIdx.go as f (a :: as_1) x x_1 = List.mapFinIdx.go as f as_1 (x.push (f x.size a ⋯)) ⋯
Instances For
Given a function f : Nat → α → β
and as : List α
, as = [a₀, a₁, ...]
, returns the list
[f 0 a₀, f 1 a₁, ...]
.
Equations
- List.mapIdx f as = List.mapIdx.go f as #[]
Instances For
Auxiliary for mapIdx
:
mapIdx.go [a₀, a₁, ...] acc = acc.toList ++ [f acc.size a₀, f (acc.size + 1) a₁, ...]
Equations
- List.mapIdx.go f [] x✝ = x✝.toList
- List.mapIdx.go f (a :: as) x✝ = List.mapIdx.go f as (x✝.push (f x✝.size a))
Instances For
Given a list as = [a₀, a₁, ...]
and a monadic function f : (i : Nat) → α → (h : i < as.length) → m β
,
returns the list [f 0 a₀ ⋯, f 1 a₁ ⋯, ...]
.
Equations
- as.mapFinIdxM f = List.mapFinIdxM.go as f as #[] ⋯
Instances For
Auxiliary for mapFinIdxM
:
mapFinIdxM.go [a₀, a₁, ...] acc = acc.toList ++ [f 0 a₀ ⋯, f 1 a₁ ⋯, ...]
Equations
- List.mapFinIdxM.go as f [] x x_1 = pure x.toList
- List.mapFinIdxM.go as f (a :: as_1) x x_1 = do let __do_lift ← f x.size a ⋯ List.mapFinIdxM.go as f as_1 (x.push __do_lift) ⋯
Instances For
Given a monadic function f : Nat → α → m β
and as : List α
, as = [a₀, a₁, ...]
,
returns the list [f 0 a₀, f 1 a₁, ...]
.
Equations
- List.mapIdxM f as = List.mapIdxM.go f as #[]
Instances For
Auxiliary for mapIdxM
:
mapIdxM.go [a₀, a₁, ...] acc = acc.toList ++ [f acc.size a₀, f (acc.size + 1) a₁, ...]
Equations
- List.mapIdxM.go f [] x✝ = pure x✝.toList
- List.mapIdxM.go f (a :: as) x✝ = do let __do_lift ← f x✝.size a List.mapIdxM.go f as (x✝.push __do_lift)