41 lines
1.2 KiB
Text
41 lines
1.2 KiB
Text
--| Transform a list by applying a function to each element with its index
|
|
let List/map =
|
|
missing
|
|
sha256:dd845ffb4568d40327f2a817eb42d1c6138b929ca758d50bc33112ef3c885680
|
|
? ./map.dhall
|
|
|
|
let List/mapWithIndex
|
|
: ∀(a : Type) → ∀(b : Type) → (Natural → a → b) → List a → List b
|
|
= λ(a : Type) →
|
|
λ(b : Type) →
|
|
λ(f : Natural → a → b) →
|
|
λ(xs : List a) →
|
|
List/map
|
|
{ index : Natural, value : a }
|
|
b
|
|
(λ(i : { index : Natural, value : a }) → f i.index i.value)
|
|
(List/indexed a xs)
|
|
|
|
let List/empty =
|
|
missing
|
|
sha256:b2f561f35098c457353723c93a22bd5de28d26ecc5370814bef9dfda421e0147
|
|
? ./empty.dhall
|
|
|
|
let List/replicate =
|
|
missing
|
|
sha256:d4250b45278f2d692302489ac3e78280acb238d27541c837ce46911ff3baa347
|
|
? ./replicate.dhall
|
|
|
|
let example0 =
|
|
assert
|
|
: List/mapWithIndex
|
|
Text
|
|
(List Text)
|
|
( λ(index : Natural) →
|
|
λ(value : Text) →
|
|
List/replicate index Text value
|
|
)
|
|
[ "A", "B", "C" ]
|
|
≡ [ List/empty Text, [ "B" ], [ "C", "C" ] ]
|
|
|
|
in List/mapWithIndex
|