diff options
author | Louis Pilfold <louis@lpil.uk> | 2019-12-12 12:40:56 +0000 |
---|---|---|
committer | Louis Pilfold <louis@lpil.uk> | 2020-05-26 19:19:29 +0100 |
commit | 649c7f2fc4e71f4516bb7f5f6520d1961fb95cad (patch) | |
tree | f887bb3913640165087553a3af5a315229ba1f2a /src | |
parent | 6f119464b4cfd09a3555120e3f9370d504fb7ea0 (diff) | |
download | gleam_stdlib-649c7f2fc4e71f4516bb7f5f6520d1961fb95cad.tar.gz gleam_stdlib-649c7f2fc4e71f4516bb7f5f6520d1961fb95cad.zip |
drop
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) { |