{- Generate a list of numbers from `0` up to but not including the specified number -} let enumerate : Natural → List Natural = λ(n : Natural) → List/build Natural ( λ(list : Type) → λ(cons : Natural → list → list) → List/fold { index : Natural, value : {} } ( List/indexed {} ( List/build {} ( λ(list : Type) → λ(cons : {} → list → list) → Natural/fold n list (cons {=}) ) ) ) list (λ(x : { index : Natural, value : {} }) → cons x.index) ) let example0 = assert : enumerate 10 ≡ [ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ] let example1 = assert : enumerate 0 ≡ ([] : List Natural) in enumerate