-- Remove first `n` elements of a list
let Natural/greaterThanEqual =
        ../Natural/greaterThanEqual sha256:30ebfab0febd7aa0ccccfdf3dc36ee6d50f0117f35dd4a9b034750b7e885a1a4
      ? ../Natural/greaterThanEqual

let drop
    : ∀(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/greaterThanEqual x.index n

              then  [ x.value ] # xs

              else  xs
          )
          ([] : List a)

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

let example = assert : drop 5 Natural [ 2, 3, 5 ] ≡ ([] : List Natural)

in  drop
