diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/gleam/iterator.gleam | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gleam/iterator.gleam b/src/gleam/iterator.gleam index 690d66e..6f42f9c 100644 --- a/src/gleam/iterator.gleam +++ b/src/gleam/iterator.gleam @@ -121,6 +121,24 @@ pub fn take(from iterator: Iterator(e), up_to desired: Int) -> List(e) { |> list.reverse } +fn do_drop(iterator, desired) { + case desired > 0 { + True -> case iterator() { + Continue(_, iterator) -> do_drop(iterator, desired - 1) + Stop -> fn() { Stop } + } + False -> iterator + } +} + +// TODO: document +pub fn drop(from iterator: Iterator(e), up_to desired: Int) -> Iterator(e) { + iterator + |> unopaque + |> do_drop(_, desired) + |> opaque +} + // Transforming Iterators fn do_map(iterator, f) { |