aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorLouis Pilfold <louis@lpil.uk>2019-12-12 12:40:56 +0000
committerLouis Pilfold <louis@lpil.uk>2020-05-26 19:19:29 +0100
commit649c7f2fc4e71f4516bb7f5f6520d1961fb95cad (patch)
treef887bb3913640165087553a3af5a315229ba1f2a /src
parent6f119464b4cfd09a3555120e3f9370d504fb7ea0 (diff)
downloadgleam_stdlib-649c7f2fc4e71f4516bb7f5f6520d1961fb95cad.tar.gz
gleam_stdlib-649c7f2fc4e71f4516bb7f5f6520d1961fb95cad.zip
drop
Diffstat (limited to 'src')
-rw-r--r--src/gleam/iterator.gleam18
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) {