-- Truncate a list to the first `n` elements
let Natural/lessThan =
        ../Natural/lessThan sha256:3381b66749290769badf8855d8a3f4af62e8de52d1364d838a9d1e20c94fa70c
      ? ../Natural/lessThan

let take
    : ∀(n : Natural) → ∀(a : Type) → List a → List a
    =   λ(n : Natural)
      → λ(a : Type)
      → λ(xs : List a)
      → List/fold
          { index : Natural, value : a }
          (List/indexed a xs)
          (List a)
          (   λ(x : { index : Natural, value : a })
            → λ(xs : List a)
            → if Natural/lessThan x.index n then [ x.value ] # xs else xs
          )
          ([] : List a)

let example = assert : take 2 Natural [ 2, 3, 5 ] ≡ [ 2, 3 ]

let example = assert : take 5 Natural [ 2, 3, 5 ] ≡ [ 2, 3, 5 ]

in  take
